了解过比特币和区块链的人,多少都听说过拜占庭将军问题,或听说过比特币(或区块链)的一个重要成就正是解决了拜占庭将军问题
但真正明白这个问题的人并不多,甚至知道这个问题实质的人都很罕见
本文是一篇技术科普,将重点提供了拜占庭将军问题本身对本质及经典算法的解析,并探讨与之相关的一些问题
笔者参考了不少文献,夹杂了大量私货,但并没有提出解决该问题的新算法,这也不是本文的目的
:拜占庭将军问题是什么拜占庭将军问题是一个共识问题首先由年提出,被称为与另外两人在或者
核心描述是军中可能有叛徒,却要保证进攻一致,由此引申到计算领域,发展成了一种容错理论
随着比特币的出现和兴起,这个著名问题又重入大众视野
拜占庭将军问题场景关于拜占庭将军问题,一个简易的非正式描述如下:拜占庭帝国想要进攻一个强大的敌人,为此派出了支军队去包围这个敌人
这个敌人虽不比拜占庭帝国,但也足以抵御支常规拜占庭军队的同时袭击
基于一些原因,这支军队不能集合在一起单点突破,必须在分开的包围状态下同时攻击
他们任一支军队单独进攻都毫无胜算,除非有至少支军队同时袭击才能攻下敌国
他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间
困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间
在这种状态下,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商,从而赢取战斗
这就是著名的拜占庭将军问题
应该明确的是,拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问
已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的
所以,在研究拜占庭将军问题的时候,我们已经假定了信道是没有问题的,并在这个前提下,去做一致性和容错性相关研究
如果需要考虑信道是有问题的,这涉及到了另一个相关问题:两军问题
与拜占庭将军相关问题:两军问