Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Here is the explanation that Satoshi Nakamoto was using (and you should totally read most things written by Lamport):

http://web.archive.org/web/20090309175840/http://www.bitcoin...

A number of Byzantine Generals each have a computer and want to attack the King's wi-fi by brute forcing the password, which they've learned is a certain number of characters in length. Once they stimulate the network to generate a packet, they must crack the password within a limited time to break in and erase the logs, lest they be discovered. They only have enough CPU power to crack it fast enough if a majority of them attack at the same time.

They don't particularly care when the attack will be, just that they agree. It has been decided that anyone who feels like it will announce an attack time, which we'll call the "plan", and whatever plan is heard first will be the official plan. The problem is that the network is not instantaneous, and if two generals announce different plans at close to the same time, some may hear one first and others hear the other first.

They use a proof-of-work chain to solve the problem. Once each general receives whatever plan he hears first, he sets his computer to solve a difficult hash-based proof-of-work problem that includes the plan in its hash. The proof-of-work is difficult enough that with all of them working at once, it's expected to take 10 minutes before one of them finds a solution and broadcasts it to the network. Once received, everyone adjusts the hash in their proof-of-work computation to include the first solution, so that when they find the next proof-of-work, it chains after the first one. If anyone was working on a different plan, they switch to this one, because its proof-of-work chain is now longer.

After about two hours, the plan should be hashed by a chain of 12 proofs-of-work. Every general, just by verifying the difficulty of the proof-of-work chain, can estimate how much parallel CPU power per hour was expended on it and see that it must have required the majority of the computers to produce in the allotted time. At the least, most of them had to have seen the plan, since the proof-of-work is proof that they worked on it. If the CPU power exhibited by the proof-of-work is sufficient to crack the password, they can safely attack at the agreed time.



I don't quite understand - what happens if two of them find a hash solution at the same time and both broadcast it? Then you have the same problem as before, right?


All users prefer the longest chain. In the case of two solutions being broadcast at about the same time, then each miner will probably prefer the solution they received first, and will base their solution attempts off of that chain. It is very unlikely that both chains will each have a new block broadcast at the same time. Whichever chain gets a new block first will be the winner and everyone will switch to that chain, abandoning the now-orphan chain.


The two chains will fall out of sync before they're finished. Chance of all 12 proofs being completed at exactly the same time and broadcast to groups of identical computing power every step of the way is very small.


Murphy's law: "If it can happen, it will happen"


Some probabilities approach zero faster than the universe can approach heat death.


What if it involves hash collisions?


No SHA2 hash collisions have ever been found.


What's the chance of that happening 12 times in a row?

(Rhetorical question, you'll find the answer in the last section of the bitcoin whitepaper.)


Note that you only need to do all of that work (assuming you want to implement this algorithm), if the generals disagree on what plan was heard first.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: