你可能在阅读《区块链小白书》这样的比特币科普文章的时候,见过这个“拜占庭将军问题”,然后一上来就被“拜占庭”这个生僻词给劝退了。
其实它的另一个名字你肯定听过,就是东罗马帝国。为了避免再次出现生词劝退的情况,咱们今天也不聊东罗马帝国,更不聊拜占庭将军,换一个你作为中国人,更耳熟能详的例子来说明同一个问题:
“三英战吕布”模型
三国演义里三英战吕布的典故相信你一定听过,说的是刘关张三兄弟联手,与三国故事里的第一猛将吕布大战三百回合不分胜负的故事。
我们不妨进一步假设一个更加符合真实历史情况的场景:
如果是刘关张三人分别率领一路军队各自奔赴战场讨伐吕布。刘关张三路军队在接近战场的时候都可以独立的做出进攻和撤退的选择,三路齐出可以一鼓作气打败吕布,三路齐退则可以保全实力择机再战。
貌似无解的关键问题
但是问题出现了,由于当时没有现代通讯设备,更没有微信群,三路军队之间的统一行动必须仰赖互相派出信使传递进攻和撤退的信号。
这就给了吕布可乘之机:假如吕布买通了刘关张军队中的信使,就可以通过传递错误消息的方式误导这三路军队,导致其行动不统一,最终被吕布各个击破。
只要吕布成功地买通了其中的一路军队的信使,这个消息甚至不怕被刘关张知道,吕布军就已经立于不败之地了。因为刘关张三路军队无法在得知信使有可能被买通的情况下,做出一致的决断。
也就是说,无论如何决策,都有可能面临在战场上孤军或者两军战吕布的局面,无论决断还是犹豫,都将不可避免地面临败北。
而最可怕的问题是:一旦刘关张三路军队无法排除传话信使被买通的可能性,那么即使吕布并没有真的买通信使,三路军队仍然有可能因为对信使的不信任而贻误战机,或者做出完全错误的决策。
所以在这个三英战吕布的模型里,只要刘关张三路军队之间的信使不是完全可信的,那么三路军队就无法在进攻还是撤退的问题上达成一致,吕布就一定会获胜。这也是拜占庭将军问题的核心:在不可靠信道上试图通过消息传递方式达到一致性是不可能的。
拜占庭将军问题及其重要性
拜占庭将军问题(Byzantine Generals Problem),是由莱斯利·兰波特在其同名论文中提出的分布式对等网络通信容错问题。兰波特在论文中是这么描述该问题的:
上面列举的三英战吕布模型,其实就是拜占庭将军问题里面的一个特例:也就是将军数量为三的情况。
拜占庭将军问题为什么重要呢?因为几乎所有的分布式网络,都必然面临这种在不可信的信道上要求达成共识的需求,只有解决了拜占庭将军问题,才能真正建立一个节点之间地位平等的可信的分布式网络。
比特币本质上也就是解决了在三英战吕布的模型下,如何让刘关张三路军队在信使未必可靠的情况下仍然能够统一行动战胜吕布的问题。
比特币当前区块高度:716,742
内容整理来源:
翻译、排版:恬儿
内容团队:李卫军、寂寞不语、杨卫祥、穆逸扬
本文主理人:穆逸扬
顾问:Sylvia
统筹:志刚
技术支持:运营组
这个类比有意思
终于搞清楚拜占庭将军的问题了~