title: Why does simple 3-way majority voting not solve Byzantine faults?
body: <p>I have been reading many papers recently about Byzantine fault tolerance. There is a common proof that 3m+1 computers are needed to handle m Byzantine faults. The general proof goes something like this:</p>
  
  <p>There are three "generals": A, B, and C. Suppose the generals communicate like this, where C is a "traitor":</p>
  
  <pre><code>A --&gt; B "Attack", A --&gt; C "Attack"
  B --&gt; A "Attack", B --&gt; C "Attack"
  C --&gt; A "Attack", C --&gt; B "Retreat"
  
  A receives "Attack" from both sources, and will attack.
  B receives "Attack" from A but "Retreat" from C and doesn't know what to do.
  C is a traitor, so his action could be anything.
  </code></pre>
  
  <p>Therefore, we can't guarantee that a majority of the actors will reach consensus.</p>
  
  <p>I sort of understand that proof, but it seems to miss a major point. Don't A, B, and C also do their <strong>own</strong> internal calculation of what to do? Since A &amp; B are the "loyal" generals here, it would seem that the "correct" action is to attack. Isn't B allowed to factor in his own calculation in deciding what to do? In that case, he could easily break the tie between the conflicting A&amp;C inputs and decide to attack. Then, both A &amp; B attack, and we solve the problem. Is this a different problem than the classic Byzantine Generals problem?</p>