Tendermint abstracts many blockchain requirements into an easily grasped library. The previous section was more focused on peer-to-peer synchronization. This section explains the consensus approach.

Every node in the network functions as a validator and takes turns proposing and voting on blocks. Each block is committed in sequence (a chain), and the “height” of the block is based on the sum total of committed blocks in the immutable blockchain + 1 for the proposed block. Consensus for a block might fail as the result of several conditions (slow network, proposing validator drops off the network, etc.). Should consensus fail on a block, the protocol moves on to a new round, with a new validator proposing a block for the current height. In other words, the process repeats with the same block, but from a different validator functioning as the proposer for that round. Consensus is reached when two thirds of the validators agree at both the pre-vote and pre-commit stages of the block committal flow.