Does Algorand's Gossip Protocol Prevent Conflicting Messages?

Hi everyone,

I am studying the Algorand protocol. While reading about the theoretical BBA* protocol described by Micali in Byzantine Agreement, Made Trivial, I learned that a powerful adversary could send conflicting messages on behalf of a node. For instance, on behalf of node C, it could send ‘0’ to node A and ‘1’ to node B without being detected.

However, in the implementation of this protocol within the Algorand ecosystem, a gossip protocol is used. Therefore, theoretically, the powerful adversary should not be able to carry out this attack, right?

Thank you.

Ciao @francesco0600,

The research paper closest to the Algorand Specifications (implemented by the go-algorand reference implementation) is this one: ALGORAND AGREEMENT: Super Fast and Partition Resilient Byzantine Agreement

The protocol implementation has evolved quite a bit with respect to the one defined in the original research papers you shared.

For example, in that paper, the agreement protocol was based just on a rounds and steps (r,s) state machine and on a Binary Byzantine Agreement , named BBA⋆, that could lead to the proposal of a block or an empty block for a given round.

The notion of period used in the latest papers and in the implementation (i.e., new consensus attempt for the same round) replaces the outcome of BBA⋆ over an empty block for a round.

2 Likes