区块链100问|基础概念|16、经常听说的拜占庭将军问题指的是什么?
我最近在重新学区块链,巩固一下细节,也收集一个“区块链100问”,供小白们使用(大佬可以另找教程),每天更新1-2个。
推特:0x00pluto
区块链的出现解决了闻名已久的拜占庭将军问题——1982年由Leslie Lampoort提出用于解释一致性问题的模拟场景,也是共识机制需要解决的问题。
在介绍之前不得不提一下两军问题(计算机领域经典思想实验)。该模拟场景下,位于峡谷两侧的红军和蓝军想要合力攻下处于谷底且军力强盛的白军。但是红蓝两军之间通信需要穿过白军领地,中间可能会出现信件被截、掉包等情况;使得双方难以达成统一的出兵时间。而绝对可靠的“信道”并不存在,所以两军问题在经典情景下是无解的。
而拜占庭将军问题则是在两军问题已解、“信道”可靠的前提下,讨论各军之间如何达成共识。在这一场景之下,参与讨论的军队不止两个,而是分散在拜占庭帝国辽阔疆域的多支军队。具体来说,拜占庭帝国虽军力强盛,但兵力分散,为此需集齐一定数量的军队才可攻下敌国。也就是说,在出兵之前拜占庭内所有的将军必须达成共识,决定是否发起战争。
不过军队内可能会有叛徒以及敌军间谍等的存在,他们可通过扣留消息或发送错误消息来扰乱整个军队的秩序,左右将军的决定。即使最后共识达成也只能作废,因为忠诚的将军无法判断传信人或者说信件是否可靠。
如果将场景放回现实世界中,那就是一个去中心化的分布式系统,将军们是里面的节点,而节点间通信过程中可能会出现的信息丢失、重复,甚至是内容损坏和篡改问题。如果要让系统运行顺利起来,就需要一个可信的“客观机器”。
相关文章