什么是实用拜占庭容错机制?丨白话区块链入门248

作者 | 杜小娜
出品|白话区块链(ID:hellobtc)

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

 01 
拜占庭将军问题

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

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

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


 02 
拜占庭容错机制

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

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

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

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

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

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

 03 
小结

通过上述描述,你是否对拜占庭容错机制有了深入的了解呢?欢迎在评论区留言。

——End——

『声明:本系列内容仅供区块链科普入门学习,不构成任何投资意见或建议。如有任何错漏,敬请留言指出。

亲,据说99.9%有品位的人都点了「在看」????

猜你喜欢

转载自blog.csdn.net/mrRqAEr7ci9s2v0/article/details/110675480