Two Generals' Problem
en.wikipedia.org
en.wikipedia.org
Of course, it's not exactly a breakthrough solution. As noted in the article, it is possible to increase the confidence of coordination at the expense of speed and resources. In this case, requiring the "commander" to commit limited resources (computational power to generate hashes) and a majority of the "lieutenants" to agree on one commander's solution, then chaining multiple decision events together, the result is actually fairly robust.
Obviously, for most use cases something like the block chain is completely impractical. You wouldn't want to have to wait an hour for each commit to your web app's database. That said, it will be interesting to see if future variations on this theme make their way into other applications.
Lower bounds on Byzantine consensus in any practical system model exist which makes it very attractive, for efficiency reasons, to solve a subset of that problem for things like database replication in trusted systems. Lower bounds for consensus vary from f+1 (for f faults) to 2f+1 to 3f+1 depending on what kinds of faults you admit. Still it's very interesting to think about.
-- James Mickens
http://research.microsoft.com/en-us/people/mickens/thesaddes...
[1] http://www.andrew.cmu.edu/course/15-440-f13/index/lecture_in...
I made a little simulation of the former algorithm here
Fire the message over Army B with a catapult.
I thought that Bitcoin's major technical feat was precisely that it showed that you could solve the Byzantine Generals' problem (which is a generalization of the Two Generals' problem).
So which is it? Impossible result or not? Or does the article talk about something else (but then a mention of Bitcoin, what Bitcoin solves and why it doesn't apply to what's described in the blog entry would have helped)? I'm confused now...
As a sidenote I'd say that writing about either the two generals' or the Byzantine Generals' problem in 2013 without mentioning Bitcoin even once is a bit weird.
This sort of thing is extremely sensitive to the definition of the problem you are solving, and the system model you are solving it under. Impossibility results like Lynch and Gilbert's CAP result and the FLP result prove that certain problems are impossible to deterministically solve in finite time in some kinds of system models. Change those system models only slightly, and you get things like Ben-Or's algorithm (http://dl.acm.org/citation.cfm?id=806707) which depend on a random oracle that is not available in FLP's system model.
So it is with Bitcoin. Not only is the definition of consensus different (uniform consensus vs. probability-one convergence on consensus among non-failed processes), but the system model is different. As I understand the bitcoin protocol, a random Oracle is needed, and liveness is only guaranteed against some forms of byzantine behavior (but I may be wrong about that, I'm not an expert in this area).
> As a sidenote I'd say that writing about either the two generals' or the Byzantine Generals' problem in 2013 without mentioning Bitcoin even once is a bit weird.
I don't think Bitcoin was a substantial advance in distributed systems theory. It's got a lot of interesting properties for sure, but I'm not aware that there's anything theoretically new there.
If 100% of messages are lost, the battle is lost. 100% only has to be "for a meaningful amount of time".
Think of it like Raid Arrays. They "solve" hard disk failure. But only up to a certain level of loss. You can lose 1 drive, but not 10.
So smoke signals would work :-) Assuming bidirectional visibility (no clouds etc.)
The imaginary Red Army, and the Imaginary Blue army were both being attacked by the Green army. After waging a long war the Red army and Blue army arrive at the capital of the Greens. The Red and Blue Armies have never met, and are only united by their hatred of the Greens.
The only way for the Greens to be defeated is for the Reds and Blues to attack on two fronts simultaneously.
My attempt at an explanation: At any given point, one general has less information than the other. When I send a message I learn that I've sent a message, but I don't know that they've received the message. When I receive a message, I learn both. If there is any specific threshold of knowledge required to go, one general must pass it first.