透啃区块链 PBFT 拜占庭容错是什么

来自:jinse.com 归档时间:2018-08-05

今天,一起来学习一个共识机制,PBFT 拜占庭容错。

先了解一下拜占庭容错什么,它是一种共识算法,比如我们知道的 PoW 和 PoS 也是另外的共识算法一样。

那它是一种什么样的共识算法呢?拜占庭容错解决如何使远距离通信的人们对一个提案达成一致意见,也就是在分布式系统中如何获得一致性的决策。

我们先看结论,在分布式系统当中,N 为计算机总数,F 为有问题计算机总数。在 N ≥ 3F + 1 的情况下,系统的一致性问题是可以依据大多数的投票结果来得到解决的。也就是说,PBFT 可以容忍投票的人中产生叛徒或者不响应。

这个结论听完后,你可能还是不太理解,没关系,我们通过一个小例子来看一下。

有一个愚昧的国王,没有自己的判断力,不知道对敌国应该进攻还是投降好。这个时候,国王希望听从他的大臣们的意见做出决定,但是大臣们都离国王很远,国王只能通过飞鸽传书的方式告知他们目前的问题,得到他们的选择。然而,可能出现大臣叛变,故意提出相反的观点(错误的节点),也可能出现鸽子在传输过程中飞错了,国王没有得到大臣的选择(网络堵塞)。

假设一共有 n 个大臣,国王知道其中有 f 个大臣是叛徒,所以国王一定要能从 n-f 个大臣的回应中进行判断。这里需要交代一点,f 个叛徒大臣,可能是不回应,也可能用假的消息回应。

然而由于是飞鸽传书,也就是异步传输,所以当国王陆续收到 n-f 个大臣传来的消息后,其实并不知道之后是否还会有新的消息传来。

因为如果 f 个有问题的大臣都是未响应,那么国王将不会收到新的消息。如果目前收到的消息当中已经有大臣是叛徒,那么之后国王还会继续收到消息。

不知道是哪但作为国王,他现在种情况,却需要立刻作出进攻还是投降的判断。

我们来看一下,最坏的极端情况,就是剩下的 f 个大臣都是好人,只是鸽子飞得慢国王还没收到消息。也就是说国王收到消息的 n-f 个大臣中有 f 个大臣都是叛徒,也就是 n-f 个人中,有 f 个叛徒和 n-2f 个好人。由于需要好人占多数才能有正确的判断,所以只有当 n-2f > f 的情况下,国王才会做出正确的决定,即 n>3f,n 最小需要取 3f+1。

好,到现在我们基本用一个例子推导出了 PBFT 这个共识算法大概的思路脉络了,嗯,我知道,你或许还有点没太明白,没关系,其实不难懂,如果有时间,可以再听一遍,或者看稍候公众号更新中的文字稿,如果懒得去理解,也没关系,我们大概了解这个共识算法,先有个印象就好。

现在明白在分布式系统中,当有 f 个节点未响应或出错时,只要有至少 3f+1 个节点能够进行投票,就可以保证系统的正常运行。换句话说,拜占庭容错能够容纳将近1/3的错误节点误差。记住这句话,我觉得就可以了。

相较于传统的 PoW 等共识机制,PBFT 这种通过投票来达成共识的机制可以很好的解决包括分叉在内的很多问题,同时又能极大提升系统的效率,在联盟链和私有链中,用的很多。好,听到这,大家可能也有点累了,今天就到这里吧,拜拜。

有关于透啃区块链 PBFT 拜占庭容错是什么

透啃世界 | 透啃区块链第 032期

亲爱的们,男神驾到。每天一个新观点,带你啃透区块链。今天来关注另一个公链项目:Thunder。首先,我们知道,因为受限于“不可能三角”的制约,目前并没有一个共识协议,可以同时在安全性/可扩展性和去中心化这三个维度上做到最好。现在各种公链项目,都是在设置自己独特的发展路线的同时,在不同的方面寻求一个

大表姐视频:迅速理解实用拜占庭容错算法PBFT

视频在此 Practical Byzantine Fault Tolerance简称PBFT,意为实用拜占庭容错算法。该算法是Miguel Castro (卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多

WBFEX大讲堂丨区块链的共识机制(三)

WBFEX大讲堂是WBFEX交易所旗下的学习栏目,旨在传播区块链知识,普及区块链技术。同时,WBFEX大讲堂也会不定期的分享区块链行业的历史趣事,致力于帮助区块链的“局外人”全方位的学习、了解行业知识。 今天,WBFEX大讲堂主要讲解区块链的BFT、DBFT、PBFT共识机制。

BFT VS比特币PoW VS PBFT

我一直在研究共识算法,并且陷入困境。 如果你查看Neo对其共识算法的解释,它说 "已经开发了许多协议来解决拜占庭将军的问题。例如,Hyperledger在其工作证明算法中使用实际拜占庭容错。另一方面,Neo实现委托拜占庭容错来解决拜占庭将军的问题 " 我清楚地了解拜占庭将军的问题,但我仍然

从零到壹学习共识算法第四讲:实用拜占庭容错系统

原始的拜占庭容错系统由于需要展示理论上的可行性而缺乏实用性。另外,算法的复杂度也是随节点的增加而呈指数级增加。实用拜占庭容错系统(Practical Byzantine Fault Tolerance, PBFT)降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别,使拜占庭协议在分布式系统中应