Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Epic: Demo for Signature generation - Participant CLI #239

Open
8 of 13 tasks
mpguerra opened this issue Feb 10, 2023 · 1 comment
Open
8 of 13 tasks

Epic: Demo for Signature generation - Participant CLI #239

mpguerra opened this issue Feb 10, 2023 · 1 comment
Labels

Comments

@mpguerra
Copy link
Contributor

mpguerra commented Feb 10, 2023

Motivation

We want to simulate a simple execution of FROST to show potential FROST implementers how to use the FROST library.

Scope

Build a simple CLI to simulate signing participant actions in a 2-round FROST signature generation protocol.

Round 1

Round 2

This will be done after the Coordinator CLI demo (should we split this into it's own epic?)

Specification

Set up

On startup, CLI should prompt for:

Round 1

Two-Round FROST Signing Protocol with Coordinator - Round 1

During Round 1, each instance of the participant CLI will generate:

  • a pair of nonces, (hiding_nonce, binding_nonce), and
  • a pair of commitments, (hiding_nonce_commitment, binding_nonce_commitment)
    by running commit on its secret key share s_i.

The pair of nonces and commitments should be stored by each Participant CLI instance, with the commitments output to the terminal so they can be aggregated by the person running the demo, acting as a coordinator, during Round 1 of the FROST signing protocol.

For the purposes of this demo we may also want to output the nonces to the terminal and should note that these should remain secret.

Round 2

Two-Round FROST Signing Protocol with Coordinator - Round 2

During Round 2, the participant CLI will prompt for:

  • the message to be signed, msg, and
  • the list of signing commitments, commitment_list, which would have been generated by all other running instances of the participant CLIs during round 1.

The CLI will then validate the inputs, by running DeserializeElement on commitment_list and by checking that its own identifier, i, and commitments, hiding_nonce_commitment_i and binding_nonce_commitment_i, are in the commitment_list which was input.

Next the Participant CLI will generate its signature share, by running sign with:

  • its identifier, i,
  • its secret key share, sk_i, generated during the Key Generation Demo (Epic: Demo for Trusted Dealer key share generation #238)
  • the group public key, PK,
  • its nonce pair,nonce_i, generated and stored in Round 1
  • the message to be signed, msg, and
  • the list of commitments, commitment_list, aggregated by the coordinator running the demo,
    to output a signature share, sig_share_i to the terminal.

The CLI will then exit, deleting any stored values (nonce_i and commitment_i.)

@mpguerra
Copy link
Contributor Author

Hey team! Please add your planning poker estimate with Zenhub @conradoplg @dconnolly @natalieesk

@mpguerra mpguerra changed the title Demo for Signature generation Demo for Signature generation: Participant CLI Feb 23, 2023
@mpguerra mpguerra added the Epic label Jun 7, 2023
@mpguerra mpguerra changed the title Demo for Signature generation: Participant CLI Epic: Demo for Signature generation - Participant CLI Jun 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant