“Never go to sea with two chronometers; take one or three."
The problem of consensus is fundamental in the distributed computing field and the previous quote summarizes its difficulty. Think about it for a second, why should you not take two? If you do not see why, let me ask this question:
What if one breaks?
John Harrison’s H1 marine timepiece source |
What if, for whatever reason, they are not synchronized anymore and show different times? This means that one of them failed. The quote gives us 3 cases, 1,2 or 3 chronometers. Take only one chronometer to the sea and you have a single point of failure. If it becomes faulty, imprecise, the marines would have no way on knowing it. Taking two instead of one brings another difficulty: how do we decide which one is right when there is divergence in the time we see on both chronometers? The odds are rather low that they will both be affected in the same way. One easy solution is thus to take three and hope that only one breaks.
Transpose the problem of consensus, i.e agreement between multiple parties, to your bank account. Say you want to withdraw some hard earned money, using your bank card. You first checked on your phone the amount you can withdraw and you expect the ATM will give you, at least, that amount. If there is more, you will be happy about it, though it might be a very bad idea to spend that money that is not yours, but you certainly do not want less on your account. The bank has the inverse problem, they want you to withdraw, at most, what you have. Thus everyone is happy when there is exactly the amount expected in any ATM you use.
Let’s play a game: decentralized Monopoly
What the point of the game of Monopoly: Make money. This could mean bend the rule (or just cheat) like a banker(a not so subtle jab at banks). This game use a set of assumptions that breaks if you are not physically in the same location:
- you know your counterparty, i.e only Alice can sell her properties, you do not pay Eve for stayong at Bob’s
- you see all the transaction that happen, except of course if you do not pay attention
- you can transact with anyone participants.
How do you play online? The easy solution is to use a centralized service, maybe Monopoly server. The advantages: this is very easy and scalable. The disadvantages: you cannot catch a cheater and you might get censor from part or the whole game.
Issue 1: Who are you dealing with
Issue 2: Can Eve spend that much money
Issue 3: Double Spend
Enter Bitcoin
This is the question Bitcoin proposed to answer, “how to have P2P Money”. Bitcoin answer the problem of Byzantine generals or Byzantine aggrement, an old problem from the distributed consensus field, with the twist that it relies on decentralization. There is no known identities or consortium that guarantees consensus.