什么是实用拜占庭容错机制?

白话区块链 view 54784 2020-12-4 13:11
share to
Scan QR code with WeChat

实用拜占庭容错机制( Practical Byzantine Fault Tolerance),简称 PBFT, 在前文《号称“区块链的灵魂”的共识机制是什么》一文中,我们已经了解过了 PoW、PoS、DPoS 等几种共识机制,今天我们就来了解下实用拜占庭容错机制,要想了解实用拜占庭容错机制,我们先从拜占庭将军问题说起。

01 拜占庭将军问题

什么是实用拜占庭容错机制?

故事是这样的,拜占庭帝国是 5-15 世纪的东罗马帝国,也就是现在的土耳其。拜占庭帝国拥有巨大的财富,它的十个邻邦国家都垂涎已久。但拜占庭城墙高耸,没有一个单独的邻邦能够成功入侵。任何单个的城邦的入侵行动都会失败,而且入侵的军队也会被歼灭,使得自身反而容易受到其他九个城邦的入侵。

这十个邻邦之间也相互觊觎对方的财富而时常爆发战争,拜占庭的防御能力很强,如果有六个或者更多的邻邦一起进攻才会成功。然而,其中一个或者几个邻邦发生背叛,答应一起进攻,但在其他人进攻的时候反悔了,就会导致只有五支或者更少的军队同时进攻,所有的进攻军队都会被歼灭。

因此,每个邻邦都小心翼翼,不敢轻易相信邻邦,因为稍有不慎,就会给自己带来灾难。这就是拜占庭将军问题。

02 拜占庭容错机制

什么是实用拜占庭容错机制?

在前文中我们已经了解过了什么是区块链的共识机制,通俗的解释就是大家共同商定好的一种规则,大家为了一个共同的目的共同达成的一个认知。区块链网络节点达成的记账共识与拜占庭将军问题的攻城是相似的,可以将区块链中的节点比作将军,不会背叛的将军比作正常节点,会背叛的将军比作恶意节点。

为了方便理解,我们假设有甲、乙、丙、丁 4 位将军攻城。同时有 3 位将军进攻视为进攻成功。我们假设将军乙为叛徒,将军甲派出通信兵告诉其他 3 位将军子时进攻,因为将军乙是叛徒,他收到将军甲的消息后,派出通信兵告诉将军丙和将军丁丑时进攻。将军丙收到将军甲的消息派出通信兵告诉将军乙和将军丁子时进攻。将军丁收到将军甲的消息派出通信兵告诉将军乙和将军丙子时进攻。于是:

将军乙收到:子时、子时、子时;

将军丙收到:子时、丑时、子时;

将军丁收到:子时、丑时、子时;

这样每个将军执行自己收到的最多的消息。将军丙和将军丁收到的子时进攻消息最多,将军甲、将军丙、将军丁 3 位将军于子时进攻,进攻成功。这就是 PBFT 算法,在研究拜占庭将军问题时,分布式节点总数必须大于或等于4,且恶意节点不能超过三分之一时,就可以保障节点达成一致性结果,区块链的中的各个节点按照这种算法即可达成共识。

btcfans公众号

Scan QR code with WeChat

Disclaimer:

Previous: 水滴互助上链:利用区块链技术打造透明安全互助业务 Next: 市场走到了阶段性选方向的时候

Related