The General Problem
Long ago, a group of generals from the Byzantine army decided to capture a well-fortified city. Each of the generals commanded various regiments of the army. The city was surrounded by the generals and their regiments. The generals could capture the city only if they attacked at the same time. This meant that the generals had to coordinate among themselves and plan the attack. They communicated via a messenger. The problem is that if there is a traitor among the generals, they can mislead the messenger and sabotage the attack. Therefore there is a need for a reliable mechanism that allows for agreement among the generals, even in the presence of disloyal ones, so that the attack can still take place at the same time.
This is called the Byzantine Generals Problem(Source). It stands as an analogy to distributed systems. Here, the generals can be considered as nodes (participants), the traitors as malicious nodes, and the messenger as a channel of communication among the generals. This was a thought experiment proposed by Lamport and others in 1982. The goal was to create a consensus mechanism that can reach consensus in a distributed network, even in the presence of faulty or malicious nodes. One of the first solutions to this problem was proposed by Castro and Liskov in 1999. They proposed an algorithm called the practical Byzantine Fault Tolerance(pBFT), which can reach consensus even if there are faulty nodes in the network.
The ability of a distributed system to reach consensus in a network even when some of the nodes in the network fail to respond or respond with incorrect information is known as Byzantine Fault Tolerance (BFT). The consensus algorithms that help achieve Byzantine Fault Tolerance is called Byzantine Fault Tolerant Consensus.
So, a BFT consensus can help solve the issue of faulty or malicious nodes in the network. But, what if an attacker tries to tamper with the data in the blockchain? How can we prevent such a scenario? To answer this question, we must look at the “chain” in “blockchain”.