2

I am unable to understand why there is a requirement of 3m+1 generals overall given m traitors. As per my understanding, the steps are as follows:

  1. Each general decides a strategy and forwards their strategy to all the other ($3m$) generals.
  2. Each general forwards a vector containing the strategies (of all the other generals they received) to all the generals ($m$)
  3. Now, each general has a list of vectors corresponding to the vote made by each general and using a majority criteria (majority vote) decides each general's strategy and thus, the strategy that it itself chooses.

If there are $3m+1$ generals then, with $m$ (loyal) generals choosing to 'attack' and $m+1$ (loyal) generals choosing to 'defend' and $m$ traitors, then since every loyal general forwards the message correctly, each of the $m$ 'attacking' generals will receive $m-1 + m$ (from the other 'attacking' generals and the $m$ 'defending' generals) confirmations of attack for all the other $m-1$ 'attacking' generals, similarly $m-1 + m$ confirmations of 'defend' for the strategy adopted by each one of the defending generals. The traitors however can alter either by sending whatever they'd like (different bits) to the attackers and the defenders [send d for all the defenders and a for all the attackers, but send conflicting values — d to the defenders and a to the attackers — for all the traitors' values], thus making them follow a different plan (defenders will defend, while attackers will attack).

This can't be right, because all the papers and presentations I've gone through state that $3m+1$ with only $m$ traitors will definitely give you the correct solution (all loyal generals follow the same plan). Can anybody go through my understanding, find the flaw and re-explain it to me?

Also, I have understood the $m = 1$ example, it would be nice if someone could explain to me how it fails when $m = 2$ and there are 6 generals and how it succeeds if $m = 2$ and there are 7 generals... I've tried a lot and am stuck.

Gilles 'SO- stop being evil'
  • 44,159
  • 8
  • 120
  • 184

1 Answers1

1

all the papers [...] state that $3m+1$ with only $m$ traitors will definitely give you the correct solution

They should actually state that when $3m+1$ then correct algorithms exist, but not all algorithms are correct.

Algorithms are like cooking recipes (in fact recipes are algorithms): Consider the problem of baking bread. There are books that tell you that you require flour, water and yeast (or similar). But not every recipe of the three will at the end resemble bread. Consider this one: Mix a spoon yeast, a spoon of flour and 5 litres of water, fill in glasses and refrigerate overnight, serve cold... Definitely not bread ;-)

What your example shows is that the algorithm given in 1),2),3) is not one that solves the Byzantine Generals problem. (Note that it is well known that a correct algorithm will (in the worst case) need at least m+1 rounds.)

Answer to original question on CSTheory:

I think your miss-conception lies in the assumption

m+1 loyal generals should vote the same way

Why should this hold?

Assuming you are talking about the problem as defined in LSP82: For simplicity let's set $m=1$. Then with just $2m+1=3$ generals you have one commanding general and two lieutenant generals. When the commanding general is correct, he and the correct general will vote the same way. So in this case your assumption holds. But what if the commanding general himself is Byzantine? Then he can give different instructions to the two correct (lieutenant) generals, and they are no longer guaranteed to vote the same way.

In general, if the proposer/commanding general is faulty then there is no way to guarantee that all correct processes will vote in the same way.

subsub
  • 111
  • 3