拜占庭将军问题是由Leslie Lamport等人在1982年提出,被称为The Byzantine Generals Problem或者Byzantine Failure,其可简单描述为:
拜占庭帝国想要进攻一个强大的敌城,由拜占庭将军们分别率领一支军队共同围攻。因为这座城市很强大,如果不协调统一将军们的行动策略,部分军队进攻、部分军队撤退会造成围困失败。因此各位将军必须通过投票来达成一致策略,要么一起进攻,要么一起撤退。
但因为拜占庭将军们是分散在各个角落,他们只能通过信使互相联系。这样一来每位将军根据自己的投票和其他将军送过来的投票,获得投票结果,从而决定是进攻还是撤退。
而问题的复杂性就在于:将军中可能出现叛徒,他们不仅可以投票给错误的决策,还可能会选择性地发送投票。假设忠诚的将军中一半投“进攻”,另一半投“撤退”,这时候叛徒可能故意给投“进攻”的将军投“进攻”,而给另外投“撤退”的将军投“撤退”。这样,双方得到的投票结果都是按自己的决策实施,一致性就遭到了破坏。此外,即便所有的将军都是忠诚的,将军之间派出去的信使也可能被敌军截杀,甚至被间谍替换,也就是说将军之间进行交流的信息通道是不能保证可靠性的。
那拜占庭将军问题有解吗?答案是有的,但有个前提,那就是叛徒的数量不能大于等于1/3,也就是实现拜占庭容错,使得即便存在叛徒的情况下,忠诚的将军们仍能达一致目标。
简单来说,拜占庭容错是能够抵抗拜占庭将军问题导致的一系列失败的系统属性。看到这里想必大家已经知道了,这不就是
区块链技术的共识机制吗?
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。