Читать книгу Cryptocurrency Mining For Dummies - Peter Kent - Страница 50
Reaching Agreement through Consensus Algorithms
ОглавлениеA mind exercise known as the Byzantine Generals Problem (or the Byzantine Fault, the error avalanche, and by various other names) illustrates the problem that cryptocurrency consensus algorithms seek to solve.
The overall problem? You’re trying to reach consensus; in cryptocurrency, you’re trying to reach agreement over the history of currency transactions. But in a cryptocurrency network, a distributed computer system of equals, you have many separate computers (nodes); the Bitcoin network, at times, has 50,000 to 200,000 nodes connected. Out of those thousands of systems, some are going to have technical problems: hardware faults, misconfiguration, out-of-date software, malfunctioning routers, and so on. Others are going to be untrustworthy; they’re going to be seeking to exploit weaknesses for the financial gain of the people running the node (they are run by “traitors”). The problem is that for various reasons, some nodes may send conflicting and faulty information.
So to deal with this problem, a sort of parable or metaphor was devised, called the Byzantine Generals Problem. (Three guys — Leslie Lamport, Robert Shostak, and Marshall Pease — first told this story in 1980, in a paper related to general issues of reliability in distributed computer systems.) Originally named the Albanian Generals Problem, it was renamed after a long-defunct empire so as not to offend people from Albania! (Although in this interconnected world of constant social media offense, there must be at least some offended residents of Istanbul.) Apparently, distributed-computing academics like to sit around and devise these little metaphors. You may have heard of the dining philosopher’s problem, the reader’s/writer’s problem, and so on. In fact, the Byzantine Generals Problem was derived from the Chinese Generals Problem.
Anyway, here is the idea, as described in their original paper:
We imagine that several divisions of the Byzantine army are camped outside an enemy city, each division commanded by its own general. The generals can communicate with one another only by messenger. After observing the enemy, they must decide upon a common plan of action. However, some of the generals may be traitors, trying to prevent the loyal generals from reaching agreement. The generals must have an algorithm to guarantee that
A. All loyal generals decide upon the same plan of action… .
B. A small number of traitors cannot cause the loyal generals to adopt a bad plan.
Search online for “The Byzantine Generals Problem” if you’re interested in seeing the original paper.
That’s the problem that cryptocurrency consensus algorithms, as they’re known, are trying to solve: how the generals (the computer nodes) come up with consensus (all agree on the same plan of action — or transaction ledger), and avoid being led astray by a small number of traitors (faulty equipment and hackers).