The Byzantine Generals' problem is to devise a system where multiple generals 1) all agree on the action to be taken and 2) how each of them can be sure that all the others really agree to that action.
This is a re-written version of the problem, and a re-written solution.
Imagine two countries, North Byzantine and South Byzantine. They are sworn enemies, joined by a mutual border. The armies are amassed on either side of the border, and war seems imminent.
In the south, the south Byzantine army is divided into three divisions, each commanded by a general. Each division is a thousand kilometers from the next one. The only way to communicate is by messenger on horseback. The generals know that there are only two possible decisions, "attack", or "retreat". Furthermore, unless each of the three divisions acts in unison, i.e. they all attack, or they all retreat, they will be destroyed. If two divisions were to attack and one was to retreat, then both attackers and retreaters would be destroyed.
Commanding the three divisions, is a Field-Marshall. He dispatches three messengers on horseback with an order to each of his three Generals to "attack". When each General receives the instruction, he can't be sure that his message hasn't been interfered with. Each General can't be sure the other two Generals have received the same message. He can't be sure they will act on it.
That's the problem.
The solution
Each General, after receiving the "attack" instruction, immediately dispatches a messenger to each of the other generals, confirming the instruction received, and asking them to confirm their instruction and intention. Each general replies by messenger. The reply not only confirms the instruction received from the Field-Marshall, but also states what confirmations were received from the other generals. Each General should now hold:
- the instruction received from the Field-Marshall
- the confirmation from each of the other two Generals that they received the same instruction, and intend to act on it.
- a reply from each of the other two Generals confirming not only that they intend to act, but also advising what they heard from the the other Generals.
If there was no interception of any message, then all messages should agree. For added security, they can send out a third batch of messengers for another iterration.
That is how Satoshi Nakamoto solved the double-spend problem for bitcoin. The Field-Marshall is the end user. The Generals are the nodes. Only when all the nodes are in agreement, does the transaction get processed and confirmed on the block chain.