partially synchronous Byzantine fault Tolerance (BFT) consensus protocols


Suppose we have a group of Byzantine generals who need to decide only whether to attack or retreat. Some may prefer to attack, while others prefer to retreat. The important thing is that all generals must agree on a common decision. A halfhearted attack would lead a rout, which would be worse than a coordinated attack / retreat.

The problem is that some generals may not only cast a vote for suboptimal strategy, but may do so selectively.

For instance, suppose if nine generals are voting, where four are for attacking, four are for retreating. The last general can send attack to the first four, and send retreat to the rest.

Further complicating the situation, the generals are physically separated, relying on messengers who may fail to deliver votes, or even forge false votes.


BFT can be achieved if loyal generals have a majority agreement on strategy. Missing messages can be given a default vote. If missing messages are in majority, pre-assigned default strategy can be used, e.g. retreat.


Proof of work Proof of stake


Further readings