main, e.g. by sacrificing determinism, adding time, adding oracles etc [10]. Bitcoin circumvents the FLP impossibility result by making some assumptions about the synchrony of the network (i.e. nodes soon sync up with the network) and time (i.e. miners dedicate limited time and resources to the best blockchain). Our algorithm is based on algorithm 2’ from section 4 of [4] (Dwork et al). It assumes that the network is partially synchronous; there is assumed to be some unknown upper bound ∆ on the time of messages to be delivered. Intuitively, there may be arbitrary but finite latency in the network. We also assume that all non- byzantine nodes have access to an internal clock that can stay sufficiently accurate for a short duration of time until consensus on the next block is achieved. The clocks do not need to agree on a global time and may drift at some bounded rate relative to global time. The algorithm is adapted to work with blockchains on a gossip network. As in the algorithm proposed by Dwork et al, it can tolerate of up 1 to /3 byzantine voting power. 6.2 Algorithm validators participate in the consensus process by signing votes for blocks. There are three types of votes: a prevote, a precommit and a commit. To receive 2 2 morethan /3 of commits meanstoreceivecommitsfroma /3majorityofvalidators. 2 A block is said to be committed by the network when a /3 majority of validators had signed and broadcast commits for that block. Figure 2: Vote structure At each height of the blockchain a round-based protocol is run to determine the next block. Each round is composed of three steps (Propose, Prevote, and Precommit),alongwithtwospecialstepsCommitandNewHeight. ThePropose, Prevote, and Precommit steps each take one third of the total time allocated for that round. Each round is longer than the previous round by a small fixed increment of time. This allows the network to eventually achieve consensus in a partially synchronous network. 5
Tendermint: Consensus without Mining Page 4 Page 6