Fork Choice Rule

What is the Fork Choice Rule?
  • fork choice rule is a function, evaluated by the client, that takes as input the set of blocks and other messages that have been seen, and outputs to the client what the “canonical chain” is.
  • Fork choice rules are required because there may be multiple valid chains to choose from (eg. if two competing blocks with the same parent get published at the same time).

In some fork choice rules (eg. Tendermint), reorgs cannot happen; the fork choice rule simply extends the existing chain by appending any blocks that have been finalized through BFT consensus. In other fork choice rules, reorgs are very frequent.

Untitled

AlgorithmFinalityReorgsFork choice
Nakamoto (eg. PoW Ethereum / Bitcoin)
None
Frequent
Longest chain
GASPER (eg. PoS ethereum)
Every 2-epochs (~12 min)
Very occasional
Chain with strongest support after last finalized block
Tendermint
Single block (~1-10s)
Never
Only finalized blocks