Broadcast

One key requirement for MPC is the existence of secure broadcast channels between parties, i.e. Reliable broadcast. This is achieved when the following two properties are satisfied: validity, so that messages intended by an honest sender are received by all players, and consistency, so that all players receive the same value even when the sender is malicious.

Assuming that the relayers set is static and known during each session of communication, as long as all known parties responded with acknowledgment, broadcast can be proved valid.

For ensuring consistency of the broadcasted messages we follow the simple but robust practice of echoing, i.e. Echo broadcast. Once messages from all known parties are received, relayers hash vector containing these messages along with their own ones and send it as an acknowledgment. Assuming relayers sort vectors in the same way (e.g. by party indexes) and all of them received consistent sets of messages, hashes will end up identical and broadcast reliability will be proven. This process is shown in the diagram below:

sequenceDiagram
	actor R1 as Relayer 1  
	actor R2 as Relayer 2
    R1->>R2: broacasts msg1
    R2->>R1: broacasts msg2
    Note over R1,R2: Each relayer hashes H(msg1+msg2)
    R1-->>R2: acks with H1
    R2-->>R1: acks with H2
    Note over R1,R2: Consistancy is proven if H1 == H2
Select a repo