Since the advent of Bitcoin in 2008, many other cryptocurrencies have been created as a peer-to-peer electronic money system, each of which had a specific mechanism. But one thing that almost all cryptocurrencies have is the blockchain, as the main element of their architecture.
With few exceptions, blockchains are specifically designed for decentralization, operating as a digital ledger, supported by a distributed network of computer nodes. For this reason, blockchain technology has allowed us to create reliable economic systems in which transparent and reliable financial transactions could be performed without intermediaries.
Cryptocurrencies are accepted as a valid alternative to traditional banking and payment systems that depend heavily on trust.
Like most distributed computing systems, a cryptocurrency network must regularly coordinate the current state of the blockchain, and this is what we call consensus building. However, reaching a consensus on distributed and secure networks is not an easy task.
So, how can a distributed network of computer nodes agree with a decision if some of the nodes can fail or act unfairly? This is a fundamental question on the problem of the so-called Byzantine generals, which gave rise to the concept of Byzantine resilience.
What is the problem of the Byzantine generals?
Simply put, the problem of Byzantine generals was conceived in 1982 as a logical dilemma that illustrates how a group of Byzantine generals may have problems with communication when they try to agree on their next step.
The dilemma suggests that every general has its own army and that each group is in different places in the city where they are about to attack. The generals must agree on an attack or a retreat. It doesn’t matter if they attack or retreat until all the generals reach a consensus, that is they agree on a common solution for its coordinated execution.
Therefore, we can consider the following requirements:
• Every general must decide: attack or withdraw (yes or no);
• after making a decision, it cannot be changed;
• All generals must agree on the same decision and execute it in a synchronized way.
The aforementioned communication problems are linked to the fact that a general can only communicate with another with the help of messages that are sent by courier.
Consequently, the main problem with the problem of the Byzantine generals is that the message can be somewhat delayed, destroyed or lost.
Furthermore, even if the message is delivered correctly, one or more generals can (for whatever reason) decide to act maliciously and send a fraudulent message to confuse other generals, leading to complete bankruptcy.
If we apply the dilemma to the context of the blockchain, each general represents a network node, and the nodes must reach consensus on the current state of the system. In other words, most participants in a distributed network must agree and perform the same action to avoid a total failure.
Therefore, the only way to obtain a consensus in distributed systems of this type is to have at least ⅔ or more reliable and honest network nodes. This means that if most of the network decides to act maliciously, the system is subject to breakdowns and attacks (for example, a 51% attack).
Byzantine Fault Tolerance (BFT)
In a nutshell, Byzantine fault tolerance (BFT) is a property of a system that is able to withstand the class of failures arising from the problem of Byzantine generals. This means that the BFT system is able to continue to function, even if some nodes fail or act maliciously.
There is more than one possible solution to the problem of the Byzantine generals and, therefore, many ways to build a BFT system. Similarly, there are several approaches to blockchain to achieve Byzantine fault tolerance, and this leads us to so-called coherent algorithms.
We can define a consensus algorithm as the mechanism by which the blockchain network reaches consensus. The most common implementations are Proof of Work (PoW) and Proof of Stake (PoS). But let’s take the bitcoin case as an example.
While the Bitcoin protocol prescribes the basic rules of the system, the PoW consent algorithm determines how these rules will follow to reach consensus (for example, during the verification and confirmation of transactions).
Although the proof of work concept is older than cryptocurrencies, Satoshi Nakamoto developed his modified version as an algorithm that allowed Bitcoin to be created as a BFT system.
Note that the PoW algorithm is not 100% tolerant of Byzantine interruptions, but due to the expensive mining process and the underlying cryptographic methods, PoW has proved to be one of the most secure and reliable implementations for blockchain networks.
In this sense, the Proof of Work consensus algorithm, developed by Satoshi Nakamoto, is considered by many to be one of the most brilliant solutions to Byzantine faults.
The problem of Byzantine generals is an intriguing dilemma that eventually gave rise to Byzantine fault tolerance systems, which are widely used in various scenarios. In addition to the blockchain sector, several options for using BFT(Byzantine fault tolerance) systems include aeronautics, aerospace, and nuclear energy engineering.
In the context of cryptocurrency, the availability of effective network communication along with a good consensus mechanism is vital for any blockchain ecosystem.
The protection of these systems requires constant effort and existing consensus algorithms have not yet overcome some limitations (such as scalability). However, PoW and PoS are very interesting approaches like Byzantine fault tolerance systems and potential applications certainly inspire widespread innovation.