我最近读了很多关于拜占庭容错的论文。有一个常见的证明是需要 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都出击了,我们解决了问题。这是一个不同于经典拜占庭将军问题的问题吗?