Byzantine Fault Tolerance: a little-known blockchain feature
Byzantine fault tolerance refers to the blockchain's ability to function even if some of the computer nodes fail or attempt to harm the entire system.
BFT aims to prevent network failure by employing decision-making through correct and reliable nodes despite the presence of malicious nodes. Without Byzantine fault tolerance, incorrect and dangerous transactions can be written to the blockchain, compromising data security.
In addition to distributed ledgers, Byzantine fault tolerance is used in nuclear power plants, aircraft engines, and other mechanisms whose performance depends on many devices.
The Byzantine Generals Problem
The term takes its name from a logical puzzle known as the "Byzantine generals problem." It is explained in a Microsoft Research article in 1982. The hypothetical puzzle was created to describe the complexity of a situation in which computer nodes must reach a consensus.
Consider the following scenario: four late-Antiquity generals must agree on the capture of an enemy fortress. They can only communicate with each other through messengers because they are in different places.
Generals cannot be certain that the information they receive is accurate. They might be receiving inaccurate information by mistake, or one of them might be a traitor.
The solution to this problem is to create a mechanism that would allow reaching automatic consensus, despite the issue with some incorrect nodes. It is known as Byzantine fault tolerance, and it is effective as long as the number of deceivers does not exceed one-third of those who influence the course of events.
How are consensus algorithms related to BFT?
BFT is accomplished through the use of consensus algorithms (and other means*), which are a set of rules and conditions that must be met in order for transactions to be recorded on the blockchain. This provides security and solves the Byzantine generals problem.
For example, in the very first consensus algorithm Proof-of-Work, node consent occurs after one of the miners first solves a complex mathematical problem. Then its node becomes a validator, checking transactions and adding them to the blockchain, for which the user is rewarded.
The most popular Proof-of-Stake mechanism has different conditions for reaching a consensus. Participants in such a network must stake tokens in order to qualify for transaction confirmation. There are more opportunities to add a block to the chain and gain additional tokens for supporting the blockchain as more money is staked.
There are many other mechanisms by which nodes communicate with each other. Read about them in our article "Exotic Consensus Algorithms."
*Byzantine fault tolerance can be achieved by using digital signatures to limit interactions between distributed nodes.
What is practical byzantine fault tolerance?
Practical Byzantine Fault Tolerance (pBFT) is a consensus algorithm introduced in the late 90s that is often used in next-generation blockchains as an additional one. It was designed for systems that have no time limit to respond to a request. The mechanism achieves consensus quickly and is linked to previous developments in Byzantine fault tolerance. pBFT has a primary node and secondary nodes that work for a common result.
As a practical algorithm, Byzantine Fault Tolerance works as follows:
?️ The transaction is sent to the primary node.
?️ It forwards it to secondary nodes.
?️ Together, they process the request and send a response to the system.
?️ When the network receives more than one-third of the same solutions from different nodes, the transaction is confirmed.
The primary node can be substituted over time. If it does not respond to the client's request, a special protocol is used instead. As a rule, secondary nodes can vote in order to replace the primary node with a more appropriate one in their opinion.
Blockchains like Hyperledger, Cosmos, Minter, and Zilliqa employ practical Byzantine fault tolerance in their architecture.