Apr 15, 2022 AUTHOR: pthomas
What Is Byzantine Agreement Problem
The purpose of Byzantine fault tolerance is to be able to defend against failures of system components with or without symptoms that prevent other system components from reaching an agreement between them when such an agreement is necessary for the proper functioning of the system. One of the fundamental problems of fault-tolerant distributed computing is the problem of the Byzantine agreement. The Byzantine agreement requires a number of parties to agree on value in a distributed environment, even if some of the parties are corrupt. Only decentralized systems face the problem of Byzantine generals, as they have no reliable source of information and no way to verify the information they receive from other members of the network. In centralized systems, an authority is approved to publish truthful information and prevents the dissemination of false or fraudulent information on the network. It can also be relaxed into a more “realistic” problem where faulty components don`t work together to lure others into a bug. Practical algorithms have been developed in this environment. The problem of the Byzantine generals was first theorized by mathematicians Leslie Lamport, Marshall Pease, and Robert Shostak. Generals are a metaphor for nodes in a decentralized network. The central idea behind this thought experiment is: how do you ensure that a distributed peer-to-peer network without central authority can make the right decisions, even if some of the nodes in it become villains? Can we create a distributed system that is “trustless” and does not automatically assume that participants will act ethically and work in the best interests of the group? To make the problem of interactive coherence more understandable, Lamport developed a colorful allegory in which a group of army generals formulate a plan to attack a city. In its original version, the story occupied the generals as commanders of the Albanian army. The name was changed and eventually decided on Jack Goldberg`s suggestion for “Byzantine” in order to make insults possible to the test of time.  This formulation of the problem, as well as some additional results, were presented by the same authors in their 1982 book “The Problem of the Byzantine General.”  The problem of the Byzantine generals is a computer analogy used to describe the challenge of establishing and maintaining security in a distributed network.
To solve this problem, honest nodes (for example. B computers or other physical devices) must be able to reach consensus despite the presence of rogue nodes. This means that a majority of nodes must define a set of rules and agree on how to apply those rules on the network. When a user spends the same instance of a cryptocurrency more than once, it`s called the double-spending problem. To get a clearer idea of this, imagine spending the same $10 bill to make two different transactions at the same time. As you can imagine, this is impossible with cash transactions. However, for digital currencies, this is a real possibility. We cannot always trust users to act in the interest of the system.
Repeated double-spend attacks can and will render the entire system irrelevant. The solution to the problem relies on an algorithm that can guarantee the following: When Lamport, Pease, and Shostak first identified the problem, they created an algorithm to mitigate this problem. The algorithm assumes that: Several solutions were described in 1982 by Lamport, Shostak and Pease.  They began by asserting that the problem of the generals can be reduced to the solution of a problem of the “commander and the lieutenants”, in which the loyal lieutenants must all act in unison and that their action must correspond to what the commander has ordered in the event that the commander is loyal: let us now bring back the problem of the Byzantine generals and see, how the prisoner of war alleviates the initial problem. Well, that`s where things get a little complicated. What happens if the command center of this global system itself is damaged? Let`s see what happens: the problem is complicated by the presence of treacherous generals who can not only vote for a suboptimal strategy, but can do so selectively. For example, if nine generals vote, four of whom support an attack, while four others are in favor of retirement, the ninth general can send a retirement vote to those generals in favor of withdrawal and an attack vote to others. Those who received a retirement vote from the ninth general will withdraw, while the others will attack (which may not go well for the attackers). The problem becomes even more complicated because generals are physically separated and have to send their votes through messengers who may not vote or falsify fake votes. It should be emphasized that we cannot automate the last inductive argument because it is probabilistic: SMV Cadence cannot process probabilities, while PRISM can only process finite configurations and does not support data reduction.
Instead, we further validate the probabilistic analysis as follows. Observing that the problem of a fixed n can be reduced to model verification of a finite state abstraction of the protocol, we manually construct an abstraction and model it with PRISM, validating the probabilities for a maximum of n = 20 parts. In addition, we verify (for a finite configuration) the accuracy of abstraction with the CSP process algebra [Ros97] and the method-based FDR tool in [KNS01a]; This depends on the ability to encode probabilities in action names and therefore excludes the use of SMV Cadence. Practical Byzantine Fault Tolerance is a consensus algorithm introduced in the late 90s by Barbara Liskov and Miguel Castro. pBFT is designed to work efficiently in asynchronous systems (no upper limit on when the response to the request is received). It is optimized for low overload time. The goal was to solve many of the problems associated with the Byzantine fault tolerance solutions already available. Application areas include distributed computing and blockchain. What my son doesn`t yet know or understand (apart from the answer(s))) is the profound impact of the problem and the practical application of the solution, mentioned in the article published by Satoshi Nakamoto in 2008 titled “Bitcoin: A Peer-to-Peer Electronic Payment System.” There are a number of solutions to the Byzantine Memorandum of Understanding. Unfortunately, the basic impossibility result of [FLP85] shows that there is no deterministic algorithm to reach an agreement in the asynchronous environment, even with benign errors. One solution that overcomes this problem and was first introduced by Rabin [Rab83] and Ben-Or [Ben83] is the use of randomization. Bitcoin achieves Byzantine fault tolerance through its POW algorithm and intelligently mitigates the traditional pitfalls of decentralized systems.
By providing economic incentives to miners by making sure they have some skin in the game, Bitcoin has ensured that its protocol is as secure as possible. In solving this dilemma, Satoshi Nakamoto and Bitcoin introduced us to the revolutionary phenomenon known as the decentralized economy. Since then, several other consensus algorithms such as Proof-of-Stake (POS), Delegated Proof-of-Stake (DPOS), etc. have come out that are not as wasteful as POW. Before I consider possible solutions to this problem, let me describe the problem in more detail and explain how it relates to you and your business. So how can we avoid the problem of generals and double spending? The solution lies in fault-tolerant Byzantine consensus algorithms. A Byzantine error (also interactive consistency, congruence of sources, avalanche of errors, Byzantine correspondence problem, Byzantine generals problem, and Byzantine failure) is a state of a computer system, especially distributed computer systems, where components can fail and there is imperfect information about the failure of a component. The term takes its name from an allegory, the “Problem of the Byzantine Generals”, which was developed to describe a situation in which the actors of the system, in order to avoid a catastrophic failure of the system, must agree on a concerted strategy, but some of these actors are unreliable.
Byzantine fault tolerance can be achieved if the properly functioning nodes in the network agree on their values. There may be a default voting value for missing messages, which means that we can assume that the message from a particular node is “failed” if the message is not received within a certain amount of time. In addition, we can also assign a default response if the majority of nodes respond with a correct value. The typical illustration of this story about computer systems is that computers are the generals and their digital communication system connections are messengers. Although the problem is formulated by analogy as a decision and security problem, in electronics it cannot be solved simply by cryptographic digital signatures, as errors such as false tensions can spread through the encryption process. Thus, one component may appear to work for one component and faulty for another, which prevents a consensus as to whether the component is defective or not.