Background of the Problem
You’re one of many generals who have encircled an enemy stronghold. The generals lead their own armies, which are dispersed across the city. Because there is no central command, each army is on its own. You’ve put in a scenario where the information isn’t flawless, or untrustworthy. The outcome of a scenario, in this case, an agreement to attack or hold ground against the enemy, is determined by coordination or lack thereof in the Byzantine General’s Problem. When should you assault and when should you defend your position? This necessitates devising a mechanism for determining if a decentralized distributed system will succeed or fail.
This can’t really be coordinated because there isn’t a direct line of communication between the participants (e.g. generals). These links are likewise untrustworthy because there is no guarantee that the message will reach its intended recipient. Assume there are five generals prepared to attack the city. There is a distance between the armies because they are not directly adjacent. To carry out the attack plan, coordination is required. They’ll have to use messengers to converse.
Each general issues orders that must be followed, but they must first listen to their king. The king is said to have given the command to attack the city. The monarch sends two messengers to each general in order for the message to be delivered (a total of 10 messengers). The second messenger serves as a backup to the first.
Byzantine fault tolerance explained (BFT)
A distributed computer system can fail for a variety of reasons. Byzantine failures, in the military scenario above, are essentially traitors attempting to disrupt communications between loyal generals.
When applied to real-world computer systems, this might be a software flaw, a hardware issue, or a malicious attack. To put it another way, Byzantine failures aren’t necessarily the consequence of a well-coordinated bad actor effort. On dispersed networks, there can be challenges that prevent nodes from reaching consensus.
A Byzantine fault is a system breakdown that presents distinct symptoms to different observers. It makes no assumptions or limits regarding the types of behavior that a node can display (e.g., a node can generate arbitrary data while posing as an honest actor).
Byzantine failures are almost unavoidable in any distributed computer system.
Assume there is a power outage and all of the nodes go offline at the same time. The concern now is whether the network is still active and capable of dependable communication. Or does the system as a whole suddenly stop working or become vulnerable to attacks?
Even a few offline nodes can compromise a reasonably secure network.
Anything as trivial as a few offline nodes have no noticeable effect on an adequately secure network. The ability to protect against these scenarios is known as byzantine fault tolerance. Networks that can withstand more Byzantine failures are said to have a larger tolerance, meaning that they are more secure.
The occurrence and classification of Byzantine errors in various systems is a huge and difficult subject. However, it is possible to define Byzantine fault tolerance in such a way that a formal definition emerges.
It’s important to note that Byzantine defects are the most serious and difficult to fix. Nuclear power plants, aviation engine systems, and pretty much any system whose actions are based on the results of a large number of sensors require byzantine fault tolerance.
In a distributed system, the Byzantine general’s problem
Only decentralized systems are vulnerable to the Byzantine generals’ dilemma because they lack a reliable source of information and have no way of verifying information received from other network users. In centralized systems, an authority is trusted to communicate reliable information while preventing erroneous or fraudulent information from spreading across the network.
In the traditional financial system, for example, banks are expected to give accurate balances and transaction histories to their customers. If a bank deceives or misleads its customers, the central bank or government has the authority to restore trust.
Centralized systems do not solve the Byzantine generals’ dilemma, which necessitates the construction of truth inconsistently. Instead, they choose not to address the issue at all, preferring efficiency over reliability. On the other side, centralized systems are vulnerable to central authority corruption.
How can you overcome the dilemma of Byzantine generals?
Implementing a protocol that uses fault-tolerant methods can fix the problem. When faced with uncertainty, the best way to make decisions is to follow a system established by the generals.
Because nothing can be guaranteed, it becomes probabilistic rather than deterministic. When there is less direct communication among peers and everyone is self-contained, this is exactly the case. There is a physical gap between the generals because they are in different locations.
A blockchain can be used to overcome the Byzantine general problem. It’s all about giving individuals a safe and secure way to connect in an unpredictable world. The majority of transactions in the real world take place between strangers who do not know or trust one another.
Each person is like a general, waiting for orders to strike or defend his or her post. There are no middlemen to mediate the attack on your behalf; you must make your decision solely on your own.
A blockchain establishes a layer that can be trusted without having to trust every single person involved. This is accomplished by bringing together a network of nodes to agree on the truth before it is recorded. If the general is unsure about the communication’s content, the other generals can verify it using what they already know to be true.
Once one node has recorded it, a copy is sent to all other nodes in the network, thereby making the data redundant. The PoW consensus algorithm was created with this objective in mind. Because information isn’t always correct, bad actors will continue to try to trick the system.
A blockchain has fault-tolerant safeguards and security in place because it was built to be used by the general population. Cryptography was essential in this circumstance to ensure that the messages could not be tampered with.
The system provides key pairs for digitally signing a communication to authenticate identity and provide verification that it was transmitted by the intended recipients. Messages are recorded once they have been validated for transparency and historical proof of responsibility.
Read also : Forks in the Blockchain