Episode 38 - Byzantine Fault Tolerance
Blockchains are basically peer to peer networks of nodes. The chain progresses when majority of the nodes or peers agree on the state of the blockchain and the validity of the next block. What happens when these nodes don’t agree or when they misbehave?
In a network of nodes, there could be a situation that some of the nodes are either offline, or under an attack, or just not functioning as expected. Also, these nodes are connected with each other using usual networking technology. It could also happen that the network doesn’t work properly between some of the nodes for some interval of time. All of these cases could result in a situation when one or more of the nodes don’t operate as per the rules. Such a situation is called a byzantine fault.
Blockchains, in general, can tolerate byzantine faults up to a certain extent. For example, a network can continue to produce blocks and function normally even if some of the nodes are byzantine. For example, the Bitcoin blockchain can continue to produce blocks even if 1/3 of the miners become byzantine.
The ability to tolerate byzantine faults comes from the consensus algorithms used by blockchain networks. Most of the well known consensus algorithms are designed with assumptions about potential byzantine faults and their impacts on the functioning of the network. Tolerating byzantine faults is one of the most basic requirements for public permission-less decentralized networks.