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
Remove the unused broadcast package as we should handle a possible "echo-broadcast" at a higher level.
Remove cmp/presign/presign8.go and instead change the round number for cmp/presign/sign2.go
Update test/round to only deliver messages to the correct round.
This PR enhances the
round.Content
interface to include aRoundNumber()
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 eitherround.NormalBroadcastContent
orround.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
broadcast
package as we should handle a possible "echo-broadcast" at a higher level.cmp/presign/presign8.go
and instead change the round number forcmp/presign/sign2.go
test/round
to only deliver messages to the correct round.