【问题标题】:Byzantine's General拜占庭将军
【发布时间】:2012-10-15 14:45:45
【问题描述】:

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

【问题讨论】:

    标签: distributed-computing distributed-transactions


    【解决方案1】:

    您只需要 T+1 票即可超过他们。为什么不是这样?

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

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

    示例:

    • 将军: A、B、C;
    • 叛徒: C;
    • A 说“攻击”;
    • B 说“撤退”;
    • CA说“进攻”,对“B说“撤退” ";
    • 结果: A认为已经达成协议,会单独出击;

    【讨论】:

      【解决方案2】:

      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 时才解决问题

      【讨论】:

      • 是的 Lamport 的论文表明,我们可以将少于 3m 个将军的问题(其中 m 是恶意将军的数量)减少为 3 个将军的问题,因此表明在这种情况下不可能达成共识。但是,这对我来说仍然没有意义,而且我也不明白为什么多数投票不起作用。假设总共有 9 位将军,其中 4 位恶意将军和 5 位好将军,其中 5 位好将军说“进攻”,其余 4 位说“撤退”。如果他们以多数票通过,那么优秀的将军们就会发起攻击,这正是我们想要的。
      • 我想问题在于,当他们中的两个被恶毒的指挥官告知要“撤退”时,这 5 个好将军很难就“进攻”达成一致。
      猜你喜欢
      • 2020-06-13
      • 1970-01-01
      • 2022-11-11
      • 2020-10-13
      • 2011-05-20
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多