taurushq-io / multi-party-sig

Implementation of protocols for threshold signatures
Apache License 2.0
311 stars 120 forks source link

Better `round.Content` description. #62

Closed adr1anh closed 3 years ago

adr1anh commented 3 years ago

This PR enhances the round.Content interface to include a RoundNumber() method, and implements it for all rounds. This allows the handler to set the correct round number independently of the next round.

Additionally, we create the round.BroadcastContent interface which can be satisfied by any message that includes either round.NormalBroadcastContent or round.ReliableBroadcastContent. This distinction is necessary for situations where the user is only interested in anonymous aborts: For CMP protocols, the parties may proceed after the first round if and only if all parties agree on the set of broadcasted messages (even if identifiable aborts are desired). If a fully reliable broadcast channel is not available, then the protocol should use the echo-broadcast primitive to transmit this message. Subsequent messages do not require reliability. Therefore, the handler should know if it should invoke the echo-broadcast or not.

In contrast, if identifiable are desired then this distinction is not necessary, since the Handler would need to broadcast all messages reliably (see updated description of issue #36 for more details).

Other changes