toposware / frost

A fork of frost-dalek, made WASM compatible, and upgraded to Static ICE-FROST
BSD 3-Clause "New" or "Revised" License
14 stars 2 forks source link

How should we implement sharing the individual public key b/w participants? #25

Closed JDawg287 closed 3 years ago

JDawg287 commented 3 years ago

At the end of each DKG process the function DistributedKeyGeneration<RoundTwo>::finish() outputs the group_public_key and the individual secret_key for each participant. In the subsequent steps to create the partial signature, in order to include a signer into the SignatureAggregator, the SignatureAggregator creator needs the individual public_key of other participants (which is derived from the individual secret_key). The individual secret_key is private and cannot be shared with other participants.

As of now to verify IndividualPublicKey of other participants, or to recompute it, a participant needs all the commitments of other participants, but sorted. These commitments are present in the Participant struct. There can be two approaches to a solutions: