拜占庭将军问题,首先由Leslie Lamport与另外两人在1982年提出很简单的故事模型,却困扰了计算机科学家们数十年。拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。
任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。
拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。
于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。
在拜占庭问题里,各邻国最重要的事情是:所有将军如何能过达成共识去攻打拜占庭帝国。
达成共识并非坐下来开个会那么简单,有的将军心机深不可测,口是心非,如果有叛徒,可能会出现各种问题:
1. 叛徒可能欺骗某些将军自己将采取进攻行动。
2. 叛徒可能怂恿其他将军行动。
3. 叛徒可能迷惑其他将军,使他们接受不一致的信息,从而感到迷惑。
4. 针对拜占庭问题的深入研究,科学家们得出一个结论:如果叛徒的数量大于或等于1/3,拜占庭问题不可解。
解释过程可以用一个副官模型来解释:
假设只有3个人,A、B、C,三人中如果其中一个是叛徒。
当A发出进攻命令时,B如果是叛徒,他可能告诉C,他收到的是“撤退”的命令。
这时C收到一个“进攻”,一个“撤退”,于是C被信息迷惑,而无所适从。
如果A是叛徒。他告诉B“进攻”,告诉C“撤退”。
当C告诉B,他收到“撤退”命令时,B由于收到了司令“进攻”的命令,而无法与C保持一致。
正由于上述原因,在只有三个角色的系统中,只要有一个是叛徒,即叛徒数等于1/3,拜占庭问题便不可解。
当然,只要叛徒数小于1/3,问题还是可解的。
互联网的存在,首先降低了信息的流通成本。
每个将军配一台电脑,就解决了”书面协议“中骑马通讯造成时间延迟的问题。
如果10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致。
谁都可以发起进攻的信息,但由谁来发出呢?