James A. Donald once said, “It is not sufficient that everyone knows X. We also need everyone to know that everyone knows X, and that everyone knows that everyone knows that everyone knows X — which, as in the Byzantine Generals’ problem, is the classic hard problem of distributed data processing.”
A few months ago, I read the above words of James A. Donald about The Byzantine Generals Problem. For nearly an hour on my way home, I struggled to understand it.
It is a hypothetical problem, one that is not as simple as it may look at first. Today, I’ll try to explain this problem in an effort to highlight its significance in the world of Distributed Ledger Technology or DLT for short in the context of achieving consensus on a blockchain network.
Let me begin by rephrasing this problem as a question:
How do you ensure multiple entities, that are far from each other, are in complete agreement on anything they do before any action is taken?
To put it another way, how do different parties find a way to achieve complete consensus?”
Brief History of Byzantine Generals’ Problem
Byzantine Generals’ Problem was first referenced in the paper titled ‘The Byzantine Generals’ Problem’, published in 1982.
There is a leader-follower set-up in the official definition of the Byzantine Generals’ Problem which you can see on page 3 of the above-mentioned paper.
To reach a consensus, the Commander-in-Chief and every general will have to agree on the same decision.
The specific conditions outlining how these are defined are mentioned in Page 3 of the afore mentioned paper.
What is the Byzantine Generals’ Problem?
The fictitious story of Byzantine Generals’ Problem is about a set of Generals, and their armies surrounding a royal palace they want to capture. They must choose the exact time of their attack to have the best chances of success.
There are multiple generals and multiple armies. Success can only be achieved if at least half of them attack at exactly the same time. If they fail to…