在远古之前的战争时代,没有无线电通讯,将军与将军、将军与下属间只能采用最原始的方式「口头传输」。Leslie Lamport的论文The Byzantine Generals Problem中所提出算法的第一部分,OM(m)算法,m为间谍数量。在拜占庭将军问题的情形之下,难以分辨真伪,只有当叛徒的总数不超过将军总数的三分之一,才能形成特殊的「拜占庭容错」。这样的容错只能在特定条件下才能形成,无法成立的变量实在太多与太大,或又如果只有三个将军,其中一个是叛变者,那么此时无解。但这样的错误,这样的有意、无意的「叛徒」却可能经常出现。无论是我们把「叛变的将军」替换成以下哪种,该问题都成立(来自区块链革命中的例子)。.
。 一份失效的医疗纠纷合约;
。 一份含混不清的保单;
。 一个可以发出消息,做出行动的错误信息节点。
。 一个故障的、不断向其他计算机发出不同错误信息的服务器;
。 一份为获取暴利而做出来的金融票据;
而这里,叛徒将军(节点)可能做出以下响应:
。 不回应
。 发送错误信息
。 对不同节点发送不同决定
。 不同错误节点联合起来攻击其他节点等。就是一些荒谬的错误。
如果说「叛变的拜占庭将军」是我们社会中各种类型的信息节点的隐喻,那么「拜占庭将军问题」所描述的情景,则就是我们缺乏去中心化的、难以判别信息与产生信任的社会的极度悲观的隐喻。
*参考数据:
核心议题:分布式一致性问题 (Distributed Consistency Problems) / https://rickhw.github.io/2018/08/11/Architecture/Distributed-Consistency-and-Consensus-Algorithm/
本文网址: