Byzantine generals problem blockchain wiki
Byzantine generals problem blockchain wiki fault tolerance BFT is the dependability of a fault-tolerant computer systemparticularly distributed computing systems, where components may fail and there is imperfect information on whether a component is failed. In a "Byzantine failure", a component such as a server can inconsistently appear both failed and functioning to failure-detection systems, presenting different symptoms to different observers.
It is difficult for the other components to declare it failed and shut it out of the network, because they need to first reach a consensus regarding which component is failed in the first place. The term is derived from the Byzantine Generals' Problem where actors must agree on a concerted strategy to avoid catastrophic system failure, but some of the actors are unreliable. Byzantine fault tolerance has been also referred to with the phrases interactive consistency or source congruencyerror avalancheByzantine agreement problemByzantine generals problemand Byzantine failure.
A Byzantine fault is any fault presenting different symptoms to different observers. Remaining correctly operational components of a Byzantine fault tolerant system will be able to continue providing the system's service as originally intended, assuming there are sufficient accurately operating components to maintain the service. Byzantine failures are considered the most general and most difficult class of failures among the failure modes.
The so-called fail-stop failure mode occupies the simplest end of the spectrum. Whereas fail-stop failure model simply means that the only way to fail is a node crash, detected by other nodes, Byzantine failures imply no restrictions, which means that the failed node can generate arbitrary data, pretending to be a correct one.
Thus, Byzantine failures can confuse failure detection systems, which makes fault tolerance difficult. Despite the analogy, a Byzantine failure is not necessarily a security problem involving hostile human interference: Byzantine refers to the Byzantine Generals' Problem, an agreement problem, described by Leslie LamportRobert Shostak and Marshall Pease in their paper, "The Byzantine Generals Problem"byzantine generals problem blockchain wiki in which a group of generals, each commanding a portion of the Byzantine armyencircle a city.
Byzantine generals problem blockchain wiki generals wish to formulate a plan for attacking the city. In its simplest form, byzantine generals problem blockchain wiki generals must decide only whether to attack or retreat. Some generals may prefer to attack, while others prefer to retreat. The important thing is that every general byzantine generals problem blockchain wiki on a common decision, for a halfhearted attack by a few generals would become a rout and be worse than a coordinated attack or a coordinated retreat.
The problem is complicated by the presence byzantine generals problem blockchain wiki traitorous generals who may not only cast a vote for a suboptimal strategy, they may do so selectively.
For instance, if nine generals are voting, four of whom support attacking while four others are in favor of retreat, the ninth general may send a vote of retreat to those generals in favor of retreat, and a vote of attack to the rest.
Those who received a retreat vote from the ninth general will retreat, while the rest will attack which may not go well for the attackers.
The problem is complicated further by the generals being physically separated and having to send their votes via messengers who may fail to deliver votes or may forge false votes. Byzantine fault tolerance can be achieved if the loyal non-faulty generals have a majority agreement on their strategy.
There can be a default vote value given to missing messages. The typical mapping of this story onto computer systems is that the computers are the generals and their digital communication system links are the messengers. Although the problem is formulated in the analogy as a decision-making and security problem, in electronics, it cannot be solved simply by cryptographic digital signaturesbecause failures such as incorrect voltages can propagate through the encryption process.
Thus, a component may appear functioning to one component and faulty to another, which prevents forming a consensus whether the component is faulty or not. Several examples of Byzantine failures byzantine generals problem blockchain wiki have occurred are given in two equivalent journal papers. Byzantine errors were observed infrequently and at irregular points during endurance testing for the newly constructed Virginia class submarinesat least through when the issues were publicly reported.
A similar problem faces honeybee swarms. They have to find a new home, and the many scouts and wider participants have to reach consensus about which of perhaps several candidate homes to fly to. And then they all have to fly there, with their queen. Several solutions were described by Lamport, Shostak, and Pease in Byzantine generals problem blockchain wiki system architectures were designed c. InMiguel Castro and Barbara Liskov introduced the "Practical Byzantine Fault Tolerance" PBFT algorithm,  which provides high-performance Byzantine state machine replication, processing thousands of requests per second with sub-millisecond increases in latency.
Furthermore, Adapt  tried to make use of existing BFT protocols, through switching between them in an adaptive way, to improve system robustness and performance as the underlying conditions change. Furthermore, BFT protocols were introduced that leverage trusted components to reduce the number of replicas, e. UpRight  is an open source library for constructing services that tolerate both crashes "up" and Byzantine behaviors "right" that incorporates many of these protocols' innovations.
This library implements a protocol very similar to PBFT's, plus complementary protocols which offer state transfer and on-the-fly reconfiguration of hosts.
BFT-SMaRt is the most recent effort to implement state machine replication, still being actively maintained. Archistar  utilizes a slim BFT layer  for communication. Focus lies on simplicity and readability, it aims to be the foundation for further research projects.
Askemos  is a concurrent, garbage-collected, persistent programming platform atop of byzantine generals problem blockchain wiki state machines which tolerates Byzantine faults. It prototypes an execution environment facilitating Smart contracts. Tendermint  is general purpose software for BFT state machine replication. Using byzantine generals problem blockchain wiki socket protocol, it enables state machines to be written in any programming language, and provides means for the state machine to influence elements of the consensus, such as the list of active processes.
Tendermint is implemented in the style of a byzantine generals problem blockchain wikiwhich amortizes the overhead of BFT and allows for faster recovery from failure. One example of BFT in use is bitcoina peer-to-peer digital cash system. The bitcoin network works in parallel to generate a chain of Hashcash style proof-of-work known as mining.
The proof-of-work chain is the key to overcome Byzantine failures and to reach a coherent global view of the system state. Because these are real-time systems, their Byzantine fault tolerance solutions must have very low latency.
For example, SAFEbus can achieve Byzantine fault tolerance within the order of a microsecond of added latency. Some spacecraft such as the SpaceX Dragon flight system  consider Byzantine fault tolerance in their design. Byzantine fault tolerance mechanisms use components that repeat an incoming message or just its signature to other recipients of that incoming message. All these mechanisms make the assumption that the act of repeating a message blocks the propagation of Byzantine symptoms.
For systems that have a high degree of safety or security criticality, these assumptions must be proven to be true to an acceptable level of fault coverage. When providing proof through testing, byzantine generals problem blockchain wiki difficulty is creating a sufficiently wide range of signals with Byzantine symptoms.
From Wikipedia, the byzantine generals problem blockchain wiki encyclopedia. For military generals of the Byzantine empire, see Category: Atomic commit Brooks—Iyengar algorithm List of mathematical concepts named after places List of terms relating to algorithms and data structures Byzantine Paxos Quantum Byzantine agreement Two Armies Problem.
Archived from the original PDF on 7 February Association for Byzantine generals problem blockchain wiki Machinery. Speculative Byzantine Fault Tolerance". Proceedings of the 5th European conference on Computer systems. Symposium on Networked Systems Design and Implementation. Redundant Byzantine generals problem blockchain wiki Fault Tolerance. International Conference on Distributed Computing Systems. Archived from the original on August 5, Making Adversaries Stick to Their Word".
Google Code repository for the UpRight replication library. Kirsch 26 September SpaceX lessons learned [LWN. Driscoll, "Method for testing the sensitive input range of Byzantine filters", issuedassigned to Honeywell International Inc. Retrieved from " https: Public-key cryptography Distributed computing problems Fault-tolerant computer systems Theory of computation.
This is a beginning, it needs references to more recent work such as this osdi paper and perhaps an explaination of the algorithms. It also needs some backlinks. Removed the External links part, as the only byzantine generals problem blockchain wiki in there was the same as the one in References.
I'm suggesting that Byzantine failure and Byzantine fault tolerance be merged. Both pages primarily contain a description of the Byzantine Generals' Problem. The origin section currently contains two descriptions of the origin of the label byzantine generals problem blockchain wiki.
I've hacked the second of these out of the main article and placed it below. It seems the less-concise and weaker of the two, but others may disagree. Cheers, -- Plumbago Lamport explains the origin of the problem here and the origin of the name here. It seems to byzantine generals problem blockchain wiki that the "Origin" section should be first, to give context to the problem.
Such a nice little article! Can anyone list some of the mentioned motives for attacking P2P networks, so maybe it can be worked into the article? This article was listed at the copyrights problem board on August 20th, hereas a potential infringement of this source. The editor who listed it there asserts that the "Third paragraph "A Byzantine fault is I have followed through with that pending investigation.
Unfortunately, I have no access to that material, but will seek out somebody who does byzantine generals problem blockchain wiki help clarify the matter. The paragraph starting "For example, if the output of one function is the input of another Giving two examples, both of which are examples of local algorithms where a small error mushrooms into a large one, seems to suggest that this mushrooming is somehow typical or definitive of Byzantine faults.
Which it isn't, is it? I am considering replacing this paragraph with a more straightforward statement that a Byzantine fault can be any misbehavior at all within the communication model, including faults intended to disrupt the system.
If someone else would like to do that byzantine generals problem blockchain wiki, please feel free. The entire text of the solutions seems to be verbatum the same as http: Could this be copying? My recollection is that Lamport's signed protocol proceeds in synchronous rounds? It may be easier to have this discussion make sense if it comes after some of the specific protocols are mentioned.
Perhaps add a section at the end "Limits"? Lamport's first protocol above used unauthenticated messages [link -- cryptography or unauthenticated message? Lamport's second protocol above used cryptographically signed authenticated messages [link -- authenticated messages or cryptography? Where '' is "Julie K. Fiber Optics Illustrated Dictionary. What does this have to do this Byzantine agreement?
Here's an article that indicates that the "Byzantine generals' algorithm" is used in all of the flight software of the triply-redundant computers running Linux used to control a byzantine generals problem blockchain wiki variety of flight systems for SpaceX launch vehicles and spacecraft. SpaceX lessons learnedLWN. This is well beyond research; this is frequent applied technology use in the operation of space transportation systems.
It is also used daily at SpaceX for a wide variety of ground tests of flight byzantine generals problem blockchain wiki and flight prototype verification and validation testing. Most of the existing text clearly was written by an editor or editors not well versed in the subject matter. Several problems previously have been identified by a number of people on this Talk page.
As a recognized expert in the field, I've started a major rewrite. I'll do more when I have time. Some of the other language pages on this subject have some better content; which is odd given that all the byzantine generals problem blockchain wiki are in English. This start of a major rewrite corrects the following problems:. The Origin section is a merge and cleanup of a suggestion from the talk page and the previous text. The PBFT section seems to be over-weighted with respect the Byzantine fault tolerance subject are as a whole.
Paxos is a more well known algorithm than most of those mentioned under the PBFT section. Paxos and other Byzantine fault tolerance algorithms, mechanisms, and byzantine generals problem blockchain wiki should be added to redress this imbalance. A new section e. Should add a discussion on the fact that the terms synchronous and asynchronous have different definitions between what the majority of Byzantine papers use and what the rest of the real-time field uses.
The phrases interactive consistency and source congruency should probably redirect to Byzantine fault tolerance. I don't think bitcoin is a good example of Byzantine fault tolerance. I would suggest that it be removed. Yes, bitcoin solves certain simplified scenarios involving the BGP but there are too many baked in assumptions in the protocol for it to have expository value here.
Are " distributed agreement " and " distributed k -agreement " as mentioned on pages such as rendezvous hashing the same as, or specific kinds of, Byzantine agreement? If so, those phrases should redirect to this "Byzantine fault tolerance" article. If not, what article should those phrases should redirect to? I have just modified one external link on Byzantine fault tolerance. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information.
I made the following changes:. As of February"External links modified" talk page sections are no longer generated or monitored by InternetArchiveBot. No special action is required on behalf of editors regarding these talk page notices, other than regular verificationas with any edit, using the archive tools per instructions below. My edit changes unanimous to majority, fundamentally changing the definition: It seems to me that a majority is good enough unanimous being the most complete form of majority but no necessary as a simple majority makes misdirection pointless.
I post here in the hope that smarter people will check my instinct and affirm it is correct. I'm not a bitchain expert, and so excuse me if I am wrong! The opening sentence is byzantine. I believe that the opening paragraph fails to follow the guidance given in the manual of style for lead paragraphs: Only a specialist could possibly understand it, but a specialist would have no need to read the article, therefore it is useless to everybody.
I would try to fix it up myself, but I have absolutely no idea what Byzantine fault tolerance is, as the Wikipedia article fails to concisely explain it The introduction explains that Byzantine nodes are "unreliable", but I've understood Byzantine faults to be worse than that: I see some of this later on in the article, but it seems to be lost in the introduction. From Wikipedia, the free encyclopedia.
This article is not associated with a particular field. Fields are listed on the template page. WikiProject Numismatics numismatic articles. Numismatics portal v t e This article is within the scope of WikiProject Numismaticsa collaborative effort to improve the coverage of numismatics and currencies on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks. This byzantine generals problem blockchain wiki has been rated as Low-importance on the project's importance scale.
This article is supported by the Cryptocurrency task byzantine generals problem blockchain wiki marked as Low-importance.
In computing, the Two Generals Problem is a thought experiment meant to illustrate the pitfalls and design challenges of attempting to coordinate byzantine generals problem blockchain wiki action by communicating over an unreliable link. It is related to the more general Byzantine Generals Problem though published long before that later generalization and appears often in introductory classes about computer networking particularly with regard to the Transmission Control Protocol where it shows that TCP can't guarantee state consistency between endpoints and whythough it applies to any type of two party communication where failures of communication are possible.
A key concept in epistemic logicthis problem highlights the importance of common knowledge. An important byzantine generals problem blockchain wiki of this proof is that generalizations like the Byzantine Generals problem are also unsolvable in the face of arbitrary communication failures, thus providing a base of realistic expectations for any distributed consistency protocols.
Two armieseach led by a different generalare preparing to attack a fortified city. The armies are encamped near the city, each in its own valley.
A third valley separates the two hills, and the only way for the two generals to communicate is by sending messengers through the valley. Unfortunately, the valley is occupied by the city's defenders and there's a chance that any given messenger sent through the valley will be captured. While the two generals have agreed that they will attack, they haven't agreed upon a time for attack. It is required that the two generals have their armies attack the city at the same time in order to succeed, else the lone attacker army will die trying.
They must thus communicate with each other to decide on a time to attack and to agree to attack at that time, and each general must know that the other general knows that they have agreed to the attack plan. Because acknowledgement byzantine generals problem blockchain wiki message receipt can be lost as easily as the original message, a potentially infinite series of messages is required to come to consensus.
The thought experiment involves considering how they might byzantine generals problem blockchain wiki about coming to consensus. In its simplest form one general is known to be the leader, decides on the time of attack, and must communicate this time to the other general. Byzantine generals problem blockchain wiki problem is to come up with algorithms byzantine generals problem blockchain wiki the generals can use, including sending messages and processing received messages, that can allow them to correctly conclude:.
Allowing that it is quite simple for the generals to come to an agreement on the time to attack i. The first general may start by sending a message "Attack at on August 4.
This uncertainty may lead the first general to hesitate byzantine generals problem blockchain wiki attack due to the risk of being the sole attacker. To be sure, the second general may send a confirmation back to the first: Further confirmations may seem like a solution—let the first general send a byzantine generals problem blockchain wiki confirmation: Thus it quickly becomes evident that no matter how many rounds of confirmation are made, there is no way to guarantee the second requirement that each general be sure the other has agreed to the attack plan.
Both generals will always be left wondering whether their last messenger got through. Because this protocol is deterministicsuppose there is a sequence of a fixed number of messages, one or more successfully delivered and one or more not. The assumption is that there should be a shared certainty for both generals to attack.
Consider the last such message that was successfully delivered. If that last message had not been successfully delivered, then one general at least byzantine generals problem blockchain wiki the receiver would decide not to attack.
Since the byzantine generals problem blockchain wiki is deterministicthe general sending that last message will still decide to attack. We've now created a situation byzantine generals problem blockchain wiki the suggested protocol leads one general to attack and the other not to attack—contradicting the assumption that the protocol was a solution to the problem.
A nondeterministic protocol with a variable message count can be compared to a finite treewhere each leaf or branch node in the tree represents an explored example up to a specified point.
The roots of this tree are labeled with the possible starting messages, and the branch nodes stemming from these roots are labeled with the possible next messages. Leaf nodes represent examples which end after sending the last message.
A protocol that terminates before sending any messages is represented by a null tree. Suppose there exists a nondeterministic protocol which solves the problem. Then, by a similar argument to the deterministic example in the previous section, where the one can be obtained from the other by removing all leaf nodes, the deterministic protocol must then also solve the problem.
Since the nondeterministic protocol is finiteit then follows that the protocol represented by the empty tree would solve the problem. Clearly this is not possible. Therefore a nondeterministic protocol which solves the problem cannot exist. A pragmatic approach to dealing with the Two Generals' Problem is to use schemes that accept the uncertainty of the communications channel and not attempt to eliminate it, but rather mitigate it to an acceptable degree.
For example, the first general could send messengers, anticipating that the probability of all being captured is low. With this approach the first general will attack no matter what, and the second general will attack if any message is received. Alternatively the first general could send a stream of messages and the second general could send acknowledgments to each, with each general feeling more comfortable with every message received.
As byzantine generals problem blockchain wiki in the proof, however, neither can be certain that the attack will be coordinated. There's no algorithm that they can use e. Also, the first general can send a marking on each message saying it is message 1, 2, This method will allow the second general to know how reliable the channel is and send an appropriate number of messages back to ensure a high probability of at least one message being received.
If the channel can be made to be reliable, then one message will suffice and additional messages do not help. The last is as likely to get lost as the first. Assuming that the generals must sacrifice lives every time a messenger is sent and intercepted, an algorithm can be designed to minimize the number of messengers required to achieve the maximum amount of confidence the attack is coordinated.
To save them from sacrificing hundreds of lives to achieve a very high confidence in coordination, the generals could agree to use the absence of messengers as an indication that the general who began the transaction has received at least one confirmation, and has promised to attack. Suppose it takes a messenger 1 minute to cross the danger zone, allowing minutes of silence to occur after confirmations have been received will allow us to achieve extremely high confidence while not sacrificing messenger lives.
In this case messengers are used only in the case where a party has not received the attack time. At the end byzantine generals problem blockchain wiki minutes, each general can reason: The Two Generals Problem and its byzantine generals problem blockchain wiki proof was first published by E.
Huber in in "Some Constraints and Trade-offs in the Design of Network Communications",  byzantine generals problem blockchain wiki it is described starting on page 73 in the context of communication between two groups of gangsters.
This reference is widely given as a source for the definition of the problem and the impossibility proof, though both were published previously as above. From Wikipedia, the free encyclopedia. Proceedings of the first international conference on Artificial intelligence planning systems.
Retrieved 27 December Retrieved 15 September Retrieved from " https: Distributed computing problems Theory of computation Thought experiments. All articles with byzantine generals problem blockchain wiki statements Articles with unsourced statements from May Views Read Edit View history.