BenOr - Randomized CFT Consensus
Notes
- Asynchronous network
- Solves binary consensus
- \(n>2t\) for \(t\) crash faults
- Protocol
- Set \(r \leftarrow 1\)
- Wait till \(n-t\) messages of type \((1,r,*)\) are received. If more than \(n/2\) messages have the same value \(v\), then send the message \((2,r,v,D)\) to all the processes. Else, send the message \((2,r,?)\) to all processes.
- Wait till \(n-t\) messages of type \((2,r,*)\) to arrive.
- If there is one D-message \((2,r,v,D)\) then set \(v_i \leftarrow v\).
- If there are more than \(t\) D-messages, then output \(v\).
- Else, set \(v_i \in \{0,1\}\) randomly with probability 1/2.
- Set \(r\leftarrow r+1\) and go to step 1.
- Round complexity: Expected \(O(2^{2n})\) for \(n=2t+1\). The \(2n\) is because we need the randomness of \(n\) servers to all output the same value in two rounds to terminate.