拜占庭将军

时间:2012-10-25 12:07:54

标签: distributed-computing distributed-transactions

所以我正在阅读Lamport关于拜占庭将军的论文,其中他证明了对于T恶意将军,你需要一组2T + 1名将军来阅读共识。但是我不明白怎么做。如果有T个恶意节点组成东西,你只需要T + 1票就可以投票。为什么不是这样?

2 个答案:

答案 0 :(得分:0)

a section on Wikipedia about this

  

一种解决方案考虑可以伪造消息的情况,但只要叛逆将军的数量不等于或超过三分之一,这将是拜占庭容错的情况。 如果指挥官是叛徒,那么处理三分之一或更多叛徒的不可能最终会减少证明1指挥官+ 2中尉问题无法解决。原因是,如果我们有三名指挥官, A,B和C,A是叛徒:当A告诉B攻击而C撤退,B和C互相发送消息,转发A的消息时,B和C都不知道谁是叛徒,因为它不一定是A - 其他指挥官可能伪造了据称来自A的消息。可以证明,如果n是总数的总数,而t是该n中的叛徒数,则有解决方案只有当n大于或等于3t + 1时才能解决问题

答案 1 :(得分:0)

  

您只需要T + 1票就可以投票。为什么不是这样?

如果所有忠实的将军都给出相同的答案,这是有道理的,但对于BGP系统而言,情况并非如此,因为每个诚实元素都可以为您提供不同的答案。

BGP适用于每个元素看到不同信息的系统。示例:冗余雷达。不适用于已对元素进行镜像的系统(例如,冗余HD)。

示例:

  • 将军:A,B,C;
  • 叛逃者: C;
  • A 说“ 攻击”;
  • B 说“ 撤退”;
  • C 对“ A ”说“ 攻击”,对“ B < / strong>”;
  • 结果: A 认为已达成协议,将独自进攻;