
The Byzantine Generals? Problem
The problem can be described with one General and two Lieutenants preparing themselves to either attack or retreat.
Updated

On this page
Updated November 2026. This was first published on 22 October 2020. The idea is the same. Any number below is what the original piece said then. It is not a new count.
Key takeaways
- The problem can be described with one General and two Lieutenants preparing themselves to either attack or retreat.
- Scenario 1******: In Fig.1, the Commander gives orders to both the Lieutenants to attack but Lieutenant 2 is a traitor because he tells lieutenant 1 that the commander ordered him to retreat.
- Now Lieutenant 1 receives two different orders.
The problem can be described with one General and two Lieutenants preparing themselves to either attack or retreat.
Scenario 1******: In Fig.1, the Commander gives orders to both the Lieutenants to attack but Lieutenant 2 is a traitor because he tells lieutenant 1 that the commander ordered him to retreat. Now Lieutenant 1 receives two different orders. Let’s assume that Lieutenant 1 follows the commander’s order because of strict hierarchy. 1/3rd of the army is weaker by force as Lieutenant 2 is a traitor and this creates a lot of problems and confusions and eventually the army will fail.
What if the commander himself is a traitor?
Scenario-2******: In Fig.2, The Commander gives different orders to both Lieutenants and this causes a confusion in the army. 2/3rd of the army has followed incorrect orders and failure is certain.
The problem consists of trying to agree on a course of action or the state of a system by exchanging information over an unreliable and potentially compromised network.
Problem can be summarised as a question: How do you make sure that multiple entities. are separated by distance, are in absolute full agreement before an action is taken.
All participating nodes have to agree upon every message that is transmitted between the nodes. If a group of nodes is corrupt or the message that they transmit is corrupt then still the network as a whole should not be affected by it and should resist this ‘Attack?. In short, the network in its entirety has to agree upon every message transmitted in the network. This agreement is called as consensus**.
to achieve consensus, the commanding general and every lieutenant must agree on the same decision.
The solution to the problem relies on an algorithm that can guarantee that:. All loyal lieutenant generals decide upon the same plan of action.. A small number of traitors cannot cause the loyal lieutenants to adopt a bad plan.
The nodes in the distributed system must all agree on a certain set of rules, and be able to move forward by agreeing on a particular assessment of a transaction before it is added to the database.
This is not easy, especially where thousands of nodes exist. Also to that, each one must agree on the validity of new information to be added, thus preventing bad actors from sabotaging the ledger and rewriting history.
A specific type of consensus algorithm must be adopted to achieve this, enabling the nodes to work together to update the ledger securely.
A Byzantine fault**** is any failure in the system that presents different symptoms to different observers. It implies no restrictions, and makes no assumptions about the kind of behaviour a node can have (e.g. a node can generate any kind of arbitrary data while posing as an honest actor).
Problem can be reduced to solving a ‘Commander and Lieutenants?
One solution that considers scenarios in which messages may be forged. which will be Byzantine-fault-tolerant as long as the number of traitorous generals does not equal or exceed one third of the generals. The impossibility of dealing with one-third or more traitors ultimately reduces to proving that the one Commander and two Lieutenants problem cannot be solved, if the Commander is traitorous. To see this, suppose we have a traitorous Commander A, and two Lieutenants, B and C: when A tells B to attack and C to retreat, and B and C send messages to each other, forwarding A’s message, neither B nor C can figure out who is the traitor, since it is not necessarily A ? another Lieutenant could have forged the message purportedly from A. It can be shown that if n is the number of generals in total, and t is the number of traitors in that n, then there are solutions to the problem only when n > 3t and the communication is synchronous (bounded delay).
For further knowledge on The Byzantine Generals Problem, check out the original paper by LESLIE LAMPORT, ROBERT SHOSTAK, and MARSHALL PEASE.
Questions and answers #
What is the main point? #
The problem can be described with one General and two Lieutenants preparing themselves to either attack or retreat.
What else did the original piece say? #
Scenario 1******: In Fig.1, the Commander gives orders to both the Lieutenants to attack but Lieutenant 2 is a traitor because he tells lieutenant 1 that the commander ordered him to retreat.