High level consensus protocol


Can someone please confirm that my understanding of the protocol and my example are correct ?

High level protocol steps (assuming 1 node == 1 account to simplify) :

  1. Each node of committee_1 proposes a block
  2. Each node of committee_2 votes for its block with lowest hash
  3. Each node of committee_3 certifies its block with highest votes count
  4. Each node appends the block with highest certify votes count to its blockchain

Let’s take a simple example with :

  • 1 node == 1 account
  • 6 nodes in total in the network (all honest)
  • 1 row in the table for 1 block in the node memory
  • blocks proposed are X, Y and Z and hash(X) < hash(Y) < hash(Z)
  • some messages are lost in step 1 because of imperfect network
  • no message lost in step 2 and 3
  • nodes of the committee for next step in green
  • block voted for or certified by a node of the committee in green




It’s very close to this indeed, except that in steps 3 and 4, nodes only cert-vote / appends the vote if the block has enough soft-votes / cert-votes (you can see the thresholds in the table at the end of this document: specs/Algorand_v1_spec-2.pdf at master · algorandfoundation/specs · GitHub).

If the blocks with highest number of votes does not have enough votes, it’s not cert-voted / included in the blockchain.
Instead additional steps are used to agree to try a new proposed blocks.
specs/Algorand_v1_spec-2.pdf at master · algorandfoundation/specs · GitHub is a good overview.

1 Like