Since the inception of Bitcoin in 2008, as a peer-to-peer electronic cash system, many other cryptocurrencies were created, each one with a particular mechanism. But one thing that nearly all cryptocurrencies have in common is the blockchain, as the core element of their architecture.
With few exceptions, blockchains are intentionally designed to be decentralized, working as a digital ledger that is maintained by a distributed network of computer nodes. For this reason, blockchain technology allowed the creation of trustless economic systems, where transparent and reliable financial transactions could be executed without the need for intermediaries. Cryptocurrencies are being adopted as a viable alternative to traditional banking and payment systems, which are heavily dependent on trust.
Just as most distributed computing systems, the participants of a cryptocurrency network need to regularly agree on the current state of the blockchain, and that is what we call consensus achievement. However, reaching consensus on distributed networks, in a safe and efficient way, is far from being an easy task.
So, how can a distributed network of computer nodes agree on a decision, if some of the nodes are likely to fail or to act dishonestly? This is the fundamental question of the so-called Byzantine Generals’ problem, which gave birth to the concept of Byzantine fault tolerance.
What is the Byzantine Generals’ Problem?
In a few words, the Byzantine Generals’ Problem was conceived in 1982 as a logical dilemma that illustrates how a group of Byzantine generals may have communication problems when trying to agree on their next move.
The dilemma assumes that each general has its own army and that each group is situated in different locations around the city they intend to attack. The generals need to agree on either attacking or retreating. It does not matter whether they attack or retreat, as long as all generals reach consensus, i.e., agree on a common decision in order to execute it in coordination.