Consensus for open blockchains
Tendermint is a Byzantine fault tolerant consensus protocol used by many blockchain systems. Like PBFT it tolerates up to one third faulty voting power among 3f plus 1 equivalent stake, but it organizes agreement into clean repeating rounds with a rotating proposer.
Propose, prevote, precommit
Each height of the chain is decided through rounds, and each round has three steps.
- Propose: the round proposer broadcasts a block.
- Prevote: validators broadcast a prevote for the block or for nothing.
- Precommit: after seeing more than two thirds prevotes for a block, validators precommit it. After more than two thirds precommits, the block is committed.
Locking for safety
If a round fails to commit, a new round starts with a new proposer. To stay safe, a validator that precommits a block becomes locked on it and will only prevote a different block if it sees a valid newer proof. This lock and unlock rule prevents two different blocks at the same height, giving Tendermint immediate finality rather than probabilistic confirmation.
Key idea
Tendermint reaches Byzantine consensus in propose prevote precommit rounds, and validator locking on precommitted blocks gives immediate, non reverting finality.