In last post, we talk about "Two General Problem" and how it is unsolved as of today. You can read about more on that from below link before you read about Byzantine Generals Problem.
Byzantine Generals Problem is advance version of “Two general problem” where there can be many generals and they need not to agree only on time of attack but here one or more than one general can be traitor.
So the question comes how consensus can be reached, answer to that is, consensus is reached when 2/3 of the actors are honest. If the traitors are more than 1/3, consensus is not reached, the armies do not coordinate their attack and the enemy wins. You can read about this in detail from this link.
This should be clear from below diagram where we are seeing Lieutentant 2’s point of view.
In this scenario, Lieutenant 3 is traitor. As shown in above diagram,
- Commander sends "attack" command to all Lieutenants
- Lieutenant-1 sends "attack" command to Lieutenant-2
- Lieutenant-3 sends "no attack" command to Lieutenant-2
Now Lieutenant-2 has 2 "attack" command and 1 "no attack" command so majority is "attack" so he will go with "attack" command.
Let's consider another scenario where commander is traitor.
In this scenario, commander is traitor. As shown in above diagram,
- Commander sends "attack tomorrow" command to Lieutenant-1, "attack now" command to Lieutenant-2 and "no attack" command to Lieutenant-3 .
- Lieutenant-1 sends "attack tomorrow" command to Lieutenant-2 and Lieutenant-3.
- Lieutenant-2 sends "attack now" command to Lieutenant-1 and Lieutenant-3.
- Lieutenant-3 sends "no attack" command to Lieutenant-1 and Lieutenant-2.
Now Lieutenant-1 will have "attack tomorrow", "attack now" and "no attack" command so since there is no majority so he will retreat.
same apply to other Lieutenants as well.