Byzantine Fault Tolerance
Achieving Byzantine Fault Tolerance is one of the most difficult challenges addressed by blockchain technology. Byzantine Fault Tolerance means that two nodes can communicate safely across a network, knowing that they are displaying the same data. In this part of the Lisk Academy we will examine why this is so challenging, yet important, and how it is achieved.
The “Byzantine Generals’ Problem” states that no two computers on a decentralized network can entirely and irrefutably guarantee that they are displaying the same data. Assuming the network is unreliable, they can never be sure that the data that they communicated has arrived. At its core, the Byzantine Generals’ Problem is achieving a consensus across a distributed network of devices, some of which could be potentially faulty, while also being weary of any attackers attempting to undermine the network.
In a P2P network, a consensus is achieved if the loyal, or non-faulty nodes, achieve a unanimous agreement on their decision. Byzantine Fault Tolerance means an incoming message is repeated to other recipients of that incoming message. All of the nodes make the assumption that the act of repeating a message rules out the issue of Byzantine nodes.
Byzantine Fault Tolerance outside of blockchain
Another example of Byzantine Fault Tolerance exists in the communication systems aboard airplanes, wherein safety and reliable communication are the most important aspects. The Boeing 777 and 787 use the ARINC 659 SAFEbus network, where each node uses duplicate transmitters to send messages. Each recipient node receives four copies of the message, and only record it if all four are identical. Each transmitter controls its partner’s drivers and will silence the whole node if informed of too many errors. The SAFEbus works as long as at least one node is honesty.
A Byzantine node can lie, and intentionally mislead other nodes involved in the consensus protocol. As such, the protocol has to be able to operate correctly and reach consensus despite any illicit intervention from Byzantine nodes. This is perfectly plausible as long as the number of Byzantine nodes within a distributed system is limited.
The Byzantine Generals’ Problem is rarely the first problem people imagine that blockchain technology faced. However, safe and reliable communication between nodes is a considerable problem and an incredible achievement that it has been resolved, allowing for consensus to be reached effectively between the nodes on the network.
The idea stems from a story about a group of Byzantine generals surrounding a city which they intended to conquer. However, in order to successfully do so they had to attack all at once and in synchrony. As a means of coordinating their attack they could only communicate through messengers, delivering orders on foot.
There are several problems faced in this scenario. Any of the messengers could be captured and a message would not be delivered and because of that a synchronized attack would be impossible. Furthermore, the generals couldn’t be sure if any of the other generals were traitors intending to send false messages as a means of purposely sabotaging the attack.
For example, a dishonest general could tell half of the generals that the plan is to retreat, ensuring that they do so, whilst telling the other half to attack, dooming them to failure. Byzantine Fault Tolerance is a way of overcoming this challenging situation.
This story transfers and applies to nodes attempting to agree on the information that they are displaying across a peer to peer network. It was mainly this issue that proved the greatest stumbling block in creating a digital currency in the past and as such is arguably crowning achievement of Bitcoin founder and forefather of blockchain technology, Satoshi Nakamoto.
There are different approaches taken by different consensus protocols in order to arrive at a secure and efficient consensus, whilst negating the Byzantine General's Problem, an example being the Proof of Stake protocol.