分布式计算 – 为什么简单的三向多数投票不能解决拜占庭故障?

我最近读过许多关于拜占庭容错的论文.有一个共同的证据就是需要3m 1的计算机来处理m个拜占庭式的故障.一般证据如下:

有三个“将军”:A,B和C.假设将军这样沟通,其中C是“叛徒”:

A --> B "Attack", A --> C "Attack"
B --> A "Attack", B --> C "Attack"
C --> A "Attack", C --> 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.

因此,我们不能保证大多数参与者会达成共识.

我有点理解这个证据,但它似乎错过了一个重点.不要A,B和C也做自己内部计算做什么?自A& B是这里的“忠诚”将军,似乎“正确”的行动就是攻击.是否允许B在决定做什么时考虑自己的计算?在这种情况下,他可以轻松打破冲突的A& C输入之间的联系,并决定进攻.然后,A& B攻击,我们解决问题.这是一个与经典的拜占庭将军问题不同的问题吗?

最佳答案 什么是“他们自己的内部计算”?是否意味着如果一个将军有冲突消息,那么它基本上是默认选项(例如攻击)?

“(B)他自己在决定做什么时的计算”是什么意思?在假设中,B仅在他获得大部分匹配消息时决定该做什么.好吧,冲突时可能会有一个默认选项.但是默认选项并不能保证忠诚将军之间的一致决定,因为他们不相互信任.

拜占庭一般问题的重要一点是,他们不相互信任,也不知道谁忠诚.任何人都可以成为叛徒,所以即使A和B都是忠诚的将军,他们也不知道他们每个人都是A或B方面真正忠诚的将军.在这种情况下,即使B在B获得时进行自己的内部计算来自A和C的冲突消息,它无法确定100%的正确决定(A和B做同样的动作).

点赞