
Understanding Byzantine Fault Tolerance (BFT)
TL;DR
A distributed system such as a Blockchain Network is said to be Byzantine Fault Tolerant if it is able to function and generate consensus on crucial matters, in the presence of faulty or malicious network participants.
Byzantine General’s Problem
“Byzantine” in the above expression refers to the famous Byzantine General’s problem, in which generals of the Byzantine Empire’s army must decide unanimously whether or not to attack the enemy. The decision making process is somewhat complicated by the geographical separation of the generals, who must communicate by sending couriers to each other, and by the presence of traitors among the generals. Only a concerted decision and effort can result in the victory of the Byzantine army. The ideal scenario for the Byzantine army would be to succeed even in the presence of those malicious generals.
Byzantine Fault Tolerance
Byzantine Fault Tolerance is an absolutely fascinating problem. It can be stated as follows: how can network participants reach a State of Consensus in a trustless setup, when certain actors will predictably act in accordance with their own interests (that is the power of incentives), and not in the interests of the network as a whole? How to reach consensus in the presence of malicious network participants? A book in which the Byzantine general’s problem would be applied not only to distributed systems, but also to geopolitics and political strategy would write itself.
Consensus & failing to achieve consensus
The Nodes (the generals) that make up a particular Blockchain Network can fail to achieve consensus in two distinct ways – by omission or commission:
- Failure by Omission: crash failures, failure to receive a request, or failure to send a response.
- Failure by Commission: processing a request incorrectly, voluntarily corrupting local state, sending an incorrect or inconsistent response to a request.
Failures by commission are also known as Byzantine failures, as they involve an intention (Mens Rea).
Byzantine Fault Tolerance is a characteristic of a wide array of systems. However, in the context of blockchain technology, byzantine fault tolerance means that a decentralized, trustless system can continue to operate even if a certain number of its nodes are malicious or outright fail.
Byzantine fault tolerance means that a decentralized, trustless system can continue to operate even if a certain number of its nodes are malicious or outright fail.
Characteristics of a BFT network
In a Byzantine fault tolerant network, the threshold for achieving consensus is ⅔ or more of reliable and honest nodes. ⅔ or more of nodes have to agree on the truth or validity of transactions, thereby ensuring the proper continuation of the network. If more than ⅓ of nodes are dishonest and malicious, and act in a way that is not in line with the interest of the network as a whole (according to their own interests), the system is at risk and susceptible to failures and attacks, such as the much cited 51% attack.
Requirements
A Byzantine fault tolerant system must satisfy the following requirements:
- Each round of decision-making must begin with an undecided state (neither yes or no). In the context of blockchain networks, the validity of transactions and therefore the Informational present or State of the blockchain is undecided at the beginning of every Proof of Work round.
- A means of communication must be guaranteed.
- The system must be able to generate its own state via a purely deterministic process.
It is easy to see here that Blockchain Networks such as Bitcoin and Ethereum satisfy these requirements.
Consensus Mechanisms
In order to solve the Byzantine general’s problem, over the years a number of consensus mechanisms have been designed and implemented, such as Proof of Work, Proof of Stake, Proof of Elapsed Time and many more. The most common consensus mechanism implementations are Proof of Work (PoW) and Proof of Stake (PoS). Consensus mechanisms are methods invoked in the context of distributed systems in order to make sure network participants reach a State of Agreement on matters that are vital to the existence of the Network – even in the presence of Malicious Nodes.