What is Byzantine generals problem?
Being able to rely on your computer system is crucial, especially if one or more of its parts happens to break down. Even though a failing component might not be noticeable at first, it can actually cause huge issues by displaying conflicting data in various other areas in the system. So what exactly is the Byzantine generals problem? In short, it’s a way of describing this particular type of failure.
The Byzantine generals problem is a game theory issue that explains the obstacles dispersed groups face when trying to come to an understanding, without the help of one reliable central party. How can members of different networks agree on one shared reality when none of them can verify each other’s identities?
Game theory is a useful tool for thinking about social situations with multiple competing actors. It can help you understand and predict the behavior of autonomous agents in strategic environments, and make better decisions accordingly.
The generals have encircled Byzantium and must now decide when to assault. If all assaulting parties attack simultaneously, they will win; but if they don’t coordinate their efforts, they will lose. Because the enemy could intercept or deceive any letters sent between them, the generals have no secure way to communicate with one another. Without a means of coordinating their efforts, how can the generals ensure that everyone attacks at once?
The research article
“The Byzantine Generals Problem,” a research article by Leslie Lamport, Robert Shostak, and Marshall Pease, was published in way back 1982. The problem is significant as noted from the opening page which funds that the National Aeronautics and Space Administration (NASA), the Ballistic Missile Defense Systems Command, and Army Research Office all financed their research.
Before 1982, the Byzantine generals problem was already being studied by computer science researchers. However, this was one of the first times that somebody attempted to put it into a parallel format and propose solutions for it. If you’re not familiar with what the Byzantine generals problem is, don’t worry, here is an analogy.
Imagine there are several divisions of the Byzantine army stationed just outside an enemy city, prepared for war. The only way these various generals can communicate with each other is through a messenger service. They need to agree on a course of action before taking any steps forward.
Nonetheless, we have to believe that some generals, wishing to stop loyal generals from collaborating, are traitors. To guarantee that a small number of backstabbers can’t interfere with communications, we need an algorithm.
The Byzantine generals problem is one in which several loyal generals need a safe means to agree on and carry out a plan. Although it’s a difficult task, we have gained a greater understanding of the fundamental issue at hand. As suggested by the example, this concept can be applied to military communications.
The Byzantine generals problem is a major issue for computer systems that need to have reliable communication, especially when there are multiple nodes involved. This problem must be solved in order for these types of systems to function properly.
Understanding BFT – Byzantine fault tolerance
In short, a Byzantine failure is any sort of system malfunction that hinders nodes from consensus building on a distributed network. This could be anything from a software glitch to hardware damage or even a malicious attack. A Byzantine fault is defined as a system failure that presents varied symptoms to different observers.
Its defining characteristic is the lack of constraints or assumptions about the type of behavior that a node can exhibit – for example, a node might generate entirely inaccurate data yet still pose as an honest actor. In practical terms, every distributed computer system will experience at least some degree of Byzantine failures.
What if there was a sudden power outage that took all of the nodes offline at the same time? would the network still be operational and secure, or would it stop working altogether and become open to attacks? In a reasonably secure network, something as small as a few offline nodes should have no effect on the system. Byzantine fault tolerance is when a system can defend against these conditions.
Networks that can handle more Byzantine failures are said to have a higher tolerance, meaning they are finer than those that can’t. Studying the actual number and classification of Byzantine faults in various systems is very intricate and complicated. Nevertheless, it can be explained in a way that produces a formal definition of Byzantine fault tolerance.
It’s essential to know that Byzantine flaws are the most severe and difficult to fix. Any system whose actions depend on the readings of numerous sensors needs Byzantine fault tolerance, such as nuclear power plants and aviation engine systems.
The only networks that are susceptible to the Byzantine generals problem are decentralized systems. This is because these networks have no dependable source of information and lack confirmation from other users across the network. In centralized systems, an authority disseminates accurate information while also preventing any erroneous or fraudulent dissemination of information throughout the network.
To provide an example, in the standard financial system, banks are relied on to give consumers precise balances and transaction histories. If a bank attempts to mislead or deceive its customers, the central government is allowed to intervene and restore faith.
The Byzantine generals dilemma, which would occasionally require affirming truth, is not fixed by centralized systems. Instead of confronting the issue head-on though, they go for efficiency over honesty. Centralized systems are often subject to manipulation from a corrupt central authority figure.
How do you solve Byzantine generals problems?
By implementing a protocol with fault-tolerant mechanisms, we can solve the problem at hand. When met with uncertainty, it is best to adopt a procedure and stick to it among all decision-makers. Without clear and direct communication, events become based on probability rather than determinism.
This is often the case when people are not working together in close proximity because they are each operating independently. For example, if several generals are located in different areas, there is a physical separation between them.
The solution for the Byzantine general problem: Blockchain
The Byzantine general problem can be simply put as an unpredictable world. People often communicate with many strangers that they do not know or trust, in hopes of a less eventful outcome. Although there are no middlemen to help decide what actions should take place, each situation is unique and waiting for orders from different generals.
Blockchain technology develops a trusting layer between individuals by creating a system in which nodes communicate and verify the information before it is recorded. Essentially, if one party is unsure about the accuracy of some communication, other parties can cross-check and confirm its validity using their own knowledge.
Once a node has recorded information, it sends a copy to every other node in the network so that the data is backed up. The PoW consensus algorithm helps make this possible. However, even with this system, there are always bad actors trying to take advantage of inaccuracies.
That’s why blockchain was designed to be used by the general public so that regular people would have access to secure fault-tolerant mechanisms like cryptography. This way we can be sure that messages can’t be tampered with.
Verifying the identity of a sender is critical to maintaining communication security. To do this, key pairs are used to digitally sign communications. This proves that the message came from who they say they are and ensures accountability by recording the messages for transparency purposes.
How does Bitcoin solve the Byzantine generals problem?
Bitcoin was the first solution that solved the Byzantine generals problem in terms of money. Before Bitcoin, many other plans and projects tried to create currency not associated with any government, but they all failed due to some inherent flaw. In order for Bitcoin to succeed as a monetary system, it needs means of handling ownership and preventing double-spending.
Bitcoin’s public, distributed ledger – or blockchain – stores a history of all transactions in order to achieve this goal without needing to trust any party. The blockchain is like the ‘truth’ that all parties must agree on in the Byzantine generals analogy.
By ensuring that all Bitcoin network nodes agree on which transactions happened and in what order, they can verify ownership and create a system that doesn’t require centralized authority.