这一节,不再去学习如何写代码,而是想聊聊共识机制,我们知道基于区块链技术现在有很多的共识机制,包括不限于POW,POS,DPOS,PBFT……,我先不说为什么我最认可POW,我们先来看看著名的拜占庭将军问题:
拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。
然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。
于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。
在拜占庭将军问题里,最重要的事情是如何让所有将军达成一致,如果中间出现了被拜占庭帝国收买的将军导致只有半数以下的将军攻打拜占庭,那么基本上这些国家将会灭亡,所以建立信任是攻打拜占庭帝国最关键的一环!
而这个经典的问题其实在我们现实的生活场景也会经常发生,如果这些将军中出现了叛徒,他们会产生很多坏的作用,如:
- 叛徒欺骗忠诚的将军自己采取行动
- 叛徒可能怂恿其它将军行动
- 叛徒发出干扰指令,迷惑将军使他们感到无所适从
模型假设一:假设只有3个将军A,B,C,假如只有一个人A是叛徒。A告诉B进攻,但告诉C撤退,B告诉C接收A的命令是进攻,而C接收到A的命令是撤退,这时候B和C都会迷惑,B和C都会怀疑对方或者A是叛徒