You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
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:
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:
i
PK_i
, as well as the public keys for each of the other participants,PKn
, which were generated during the Key Generation Demo (Epic: Demo for Trusted Dealer key share generation #238)PK
generated during the Key Generation Demo (Epic: Demo for Trusted Dealer key share generation #238)sk_i
, generated during the Key Generation Demo (Epic: Demo for Trusted Dealer key share generation #238)Round 1
During Round 1, each instance of the participant CLI will generate:
(hiding_nonce, binding_nonce)
, and(hiding_nonce_commitment, binding_nonce_commitment)
by running
commit
on its secret key shares_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
During Round 2, the participant CLI will prompt for:
msg
, andcommitment_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
oncommitment_list
and by checking that its own identifier,i
, and commitments,hiding_nonce_commitment_i
andbinding_nonce_commitment_i
, are in thecommitment_list
which was input.Next the Participant CLI will generate its signature share, by running
sign
with:i
,sk_i
, generated during the Key Generation Demo (Epic: Demo for Trusted Dealer key share generation #238)PK
,nonce_i
, generated and stored in Round 1msg
, andcommitment_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
andcommitment_i
.)The text was updated successfully, but these errors were encountered: