The Byzantine General's Problem

Before we can understand how the blockchain works, we need to understand the problem it is trying to solve

Let me take you back to the medieval times, to a fictitious problem: Imagine two Byzantine armies, one on each side of an enemy city.

Image for post

They need to attack at the exact same time. If one army attacks on its own, it will lose, but if both armies attack at the same time, they will win.

The only way to communicate is to send messengers back and forth (this is the medieval ages, so no walkie-talkies). So, basically, one army sends a messenger with a message saying, “We will attack on Wednesday at 8PM”. That messenger brings back the reply, “No, we can’t do Wednesday, how about Friday?”, and so on until they reach a consensus.

However, there’s a catch. The messenger could be caught on their way to the other army and replaced with a fake messenger who could deliver a fake message, causing one army to attack at the wrong time on their own and lose the battle. Also, one of the generals could be traitorous and send a fraudulent message, so that the other army attacks and loses, and their army is the last one standing.

This analogy is usually used to describe how multiple nodes in a distributed computer system must agree on a plan of action even though some of those nodes could be corrupted, fraudulent, or otherwise unreliable. This is a problem the blockchain solves.