拜占庭将军问题

很多人可能没有听说过“拜占庭将军问题”。

实际上,这是一个困扰了计算机科学家数十年的问题。

“拜占庭将军问题”(Byzantine Generals Problem),是在1982年由莱斯利·兰伯特(Leslie Lamport)提出,指“在存在消息丢失的不可靠信道上,试图通过消息传递的方式达到一致性是不可能的”。

因此在系统中存在除了消息延迟或不可送达的故障以外的错误,包括消息被篡改、节点不按照协议进行处理等,将会潜在地对系统造成针对性的破坏。

起源:

拜占庭即中世纪的土耳其,是东罗马帝国的首都。

由于当时拜占庭罗马帝国国土辽阔,为了达到防御目的,每个军队都分隔很远,将军与将军之间只能靠信差传消息。

在战争的时候,拜占庭军队内所有将军和副官必须达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。

但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。

在进行共识时,结果并不代表大多数人的意见。

这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。

另外,即使将军们在谈判桌上达成了一致,但可能还是会出现:

有的将军可能欺骗其他将军自己将采取进攻行动;

有的将军可能怂恿其他将军行动,自己按兵不动;

有的将军可能使用假消息迷惑其他将军,使他们接受不一致的信息,从而感到迷惑。

只要有叛徒达成目的之一,则任何行动的结果都是注定要失败的。

将“拜占庭将军问题”延伸到互联网生活中来,其内涵可概括为:在互联网大背景下,当需要与不熟悉的对方进行价值交换活动时,人们如何才能防止不会被其中的恶意破坏者欺骗、迷惑从而作出错误的决策。

进一步将“拜占庭将军问题”延伸到技术领域中来,其内涵可概括为:在缺少可信任的中央节点和可信任的通道的情况下,分布在网络中的各个节点应如何达成共识?

下一期给大家讲讲解决“拜占庭将军问题”的终极大招。

拜占庭将军问题

扫一扫手机访问

拜占庭将军问题

发表评论