Introduction

Since Bitcoin was first introduced as an electronic cash system in 2008; many other currencies were created afterward, each with their own unique mechanisms. However, one thing that almost all digital currencies have in common is their basic architectural element, namely Blockchain technology.

With a few exceptions, blockchain is designed to be decentralized, working as a digital ledger maintained by a decentralized network of computer nodes. Due to this, blockchain technology allows the creation of a trustless economic system, where transparency and reliability of financial transactions can occur without the need for a middle man. Digital currencies will be adopted as a payment alternative that replaces banks and traditional payment systems, which rely heavily on trust.

As with most distributed computing systems, participants in a digital currency network must periodically agree on the current state of the blockchain, and this is what we call reaching consensus. However, achieving consensus in a distributed network, in an honest and secure manner is very difficult to achieve.

Therefore, how does a network of distributed computer nodes agree on a decision? If some nodes can fail or behave dishonestly? This is a fundamental question known as the general Byzantine problem, which gave rise to a concept called Byzantine Fault Tolerance.


Is that a common Byzantine problem?

In short, the Byzantine general problem was born in 1982 as a logical dilemma illustrating how a group of Byzantine generals could have problems communicating to agree on their next move.

This dilemma assumes that each general has his own army and each group is placed in a different location in the city they want to attack. The generals needed to agree on whether they would attack or retreat. It was not a matter of whether they would attack or retreat, as long as the generals reached a consensus, for example: agreeing on a decision that would be carried out according to orders.


Therefore, there are several things that must be determined:

  • Each general must decide; whether to attack or retreat (yes or no);

  • Once each decision is made, it cannot be changed;

  • Each general must agree with the same decision and execute it within the established rules simultaneously.

The communication problems described above are related to the fact that one general can only communicate with another through messages, which are sent by couriers. The same thing challenges the General Byzantine Problem so that the delivery of the message is slightly hampered, can be destroyed, or lost.

Moreover, even if the message is successfully sent, one or more generals may choose (for whatever reason) to act maliciously and send a reply intended to confuse the other generals, which could result in the failure of the attack.

If we apply this dilemma to a blockchain context, each general represents a network node and that node needs to reach consensus on the current state of the system. In other words, the majority of participants in a distributed network must agree and execute the same action to avoid total failure.

Therefore, the only way to achieve consensus for this type of distributed system is to have ⅔ or more of the network nodes honest and reliable. This can also mean that if a majority of the network's participants decide to act maliciously, the system will be highly vulnerable to failures and attacks (such as a 51% attack).


Byzantine Fault Tolerance (BFT)

In other words, Byzantine Fault Tolerance is the property of a system that can ward off failures caused by the Byzantine Common Problem dilemma. This can also mean that the BFT system can continue to operate even if some nodes fail or behave incorrectly.

There are several solutions to the General Byzantine Problem, and there are also several ways to build a BFT system. Moreover, there are several approaches to blockchain that can achieve BFT and this will lead us to consensus algorithms.


Blockchain Consensus Algorithm

We can define a consensus algorithm as a mechanism by which a blockchain network reaches consensus. the most common implementations are Proof of Work (PoW) and Proof of Stake (PoS). but let's take Bitcoin as an example.

The Bitcoin protocol defines the main rules for the Bitcoin system, and it is the PoW consensus algorithm that determines how those rules are followed to achieve consensus (for example, when verifying and validating transactions).

Although the Proof of Work concept is older than other digital currencies, Satoshi Nakamoto developed a modified version as an algorithm that allows the Bitcoin creation process to be used as a BFT system.

It should be noted that the PoW algorithm is not 100% Byzantine Fault tolerant, but due to a very costly mining process and the underlying cryptography techniques, PoW has proven itself to be the most secure and reliable blockchain network implementation. In this case, the Proof of Work consensus algorithm designed by Satoshi Nakamoto, is considered by many people to be a genius solution to the Byzantine Fault.


Conclusion

The Byzantine General Problem is an interesting dilemma that ultimately gave rise to the BFT system, which is applied extensively in many scenarios. Apart from the blockchain industry, BFT systems are also used in many other industries, such as aviation, space and the nuclear energy industry.

In the context of digital currencies, having an efficient network communication, along with a good consensus mechanism is very important for any blockchain ecosystem. Securing these systems is a never-ending endeavor, and current consensus algorithms have yet to overcome some of the limitations they still face (such as scaling). Even so, PoW and PoS is an approach that is no less interesting than BFT systems, and its potential applications inspire widespread innovation.