PBFT实用拜占庭容错算法

这篇具有很好参考价值的文章主要介绍了PBFT实用拜占庭容错算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PBFT实用拜占庭容错算法原理

本篇文章开启区块链共识算法的普及——我以 PBFT (Practical-Byzantine-fault-tolerant)实用拜占庭容错共识算法打头阵。

为什么先是PBFT呢?

一个原因是觉得这个算法的名字很酷,实际上它也有着有趣的历史背景。另一个原因呢,就是最近在接触联盟链,而这个算法呢,正是联盟链的共识算法的宠儿。

共识算法概览

pbft,区块链共识算法,算法,区块链

联盟链有两个共识算法:一个是本章将去讲的PBFT,另一个就是DBFT(Delegated Byzantine fault tolerance)委托拜占庭容错共识算法。

在区块链中有一个著名的问题,就是拜占庭将军问题,对于拜占庭将军问题,这里不再做普及,因为网上相关的文章已经很多了。不了解的同学移步至此拜占庭将军问题。

PBFT为何而来

PBFT 刚开始是在MIT的Miguel 和 Barbara Liskov在1999年的学术论文中提出的,他们的本意是为设计一个低延迟存储系统设计系统,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行,主要是为了应用于不需要大交易量但需要处理许多事件的数字资产平台,每个节点都可以发布公钥,这是被允许的。

节点将签名所有通过节点的消息,以验证其准确性。当得到一定数量的签名想用,此交易就被认定为有效。

解决了BFT(原始拜占庭容错算法)效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。

PBFT对付恶意节点

几个数字

了解即可,后面会提到

f 是恶意节点数,N是总结点数

  1. 3f : 临界点数
  2. 3f + 1 :总结点最小数
  3. (N-1)/3 :最大容错节点数

当节点数>3时,拜占庭将军问题的有解情况将会比较复杂;

For example:

N = 3f

恶意节点数f = 1时,总结点数N = 3f = 3时,问题将会无解,如下图所示

pbft,区块链共识算法,算法,区块链

显而易见,在f = N/3的时候,整个节点系统都将无法做出正确的决定;因为恶意节点恶意传递结果,导致无论恶意节点时发令者还是接令者,都会坏了整个结果的输出;

N > 3f

恶意节点数f = 1时,总结点数N > 3f = 4时,问题将会得到解决,如下图所示:

pbft,区块链共识算法,算法,区块链

pbft,区块链共识算法,算法,区块链

无论恶意节点如何恶意地传递信息,由于还存在着其他三个公平节点,因此最后总是能够少数服从多数,得到最终的结果。

为什么最大容错节点数是(N-1)/3 ?

假定节点总数是N,作恶节点数为f,那么剩下的正确节点数为N - f

意味着只要收到N - f个消息且N - f > f就能做出决定,但是这N - f个消息里可能有f个是由作恶节点冒充的(或因网络延迟导致f个恶意节点的消息先被收到),那么正确的消息就是N - f - f个。

为了多数一致,正确消息必须占多数,也就是N - f - f > f ,所以N最少是3f + 1个。

总结

1.优点

  • 节能。
  • 吞吐量高。
  • 分叉几率很低。
  • 节点数适当时交易延时极低。
  • PBFT中的主节点并不具备很大权限,与普通节点地位相对平等,如果主节点出现问题,普通节点可以拒绝其请求并可以很容易地将其替换。

2.缺点

  • 节点需要选举或许可,不像PoW可以随意加入,去中心化程度相对较弱。
  • 不能很好的存贮记录交易信息,黑客能够截取一些失效的副本,这可能会让信息外漏。
  • 系统节点是固定的,无法应对公有链的开放环境。因此只适用于节点数量少且网络环境更可信的联盟链或私有链。
  • 安全边界较Pow等算法相对较低。Pow对网络内恶意算力容忍度为不超过1/2,PBFT对恶意节点数的容忍度则为1/3。
  • 受节点数量限制,可扩展性差,由于每个副本节点都需要和其它节点进行P2P的共识同步,因此随着节点的增多,性能会下降的很快。

更多区块链技术干货请关注

岚链技术论坛
77Brother的技术小栈

参考

深入浅出PBFT
PBFT原论文
深入剖析区块链的共识算法 PBFT文章来源地址https://www.toymoban.com/news/detail-782364.html

到了这里,关于PBFT实用拜占庭容错算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式协议与算法——拜占庭将军问题

    背景:以战国时期为背景 战国时期,齐、楚、燕、韩、赵、魏、秦七雄并立,后来秦国的势力不断强大起来,成了东方六国的共同威胁。于是,这六个国家决定联合,全力抗秦,免得被秦国各个击破。一天,苏秦作为合纵长,挂六国相印,带着六国的军队叩关函谷,驻军在了

    2024年02月14日
    浏览(36)
  • 【区块链共识协议论文】【拜占庭异步通信】【Chronos: An Efficient Asynchronous Byzantine Ordered Consensus】

    1、 版权归属:牛津大学出版社(Oxford University Press) 2、 笔者为共同作者之一,联系方式:E230047@e.ntu.edu.sg 3、 引用格式: 4、 代码仓库:见GitHub 第1页 第2页 第3页 第4页 第5页 第6页 第7页 第8页

    2024年02月20日
    浏览(44)
  • 拜占庭问题

    本文为哈尔滨工程大学计算机科学与技术学院区块链技术课程附加作业 完成人: (1)学号:2019201131 姓名:周光煜 工作量:50% (2)学号:2019201120 姓名:孙世威 工作量:50% 区块链是一个基于比特币协议的不需要许可的分布式数据库,它维护了一个持续增长的不可被篡改和

    2024年01月16日
    浏览(47)
  • 一致性广播、可靠广播、原子广播、安全因果原子广播以及与拜占庭协议结合

    在分布式系统中,广播协议是确保信息在网络中的节点之间有效传递的关键机制。一致性广播、可靠广播、原子广播和安全因果原子广播是分布式系统中用于确保消息传递和一致性的四种不同类型的广播协议。它们各自有不同的目标和特性,适用于不同的应用场景。本文是对

    2024年04月13日
    浏览(63)
  • 【复现go语言编写的区块链PBFT共识算法中爬坑记录】

    先附上代码链接:https://github.com/corgi-kx/blockchain_consensus_algorithm/tree/master/pbft 主要是想记录一下运行代码过程中遇到的问题,万一以后用得到,还能抄一下作业 电脑上没有go语言环境,按下面步骤进行环境配置: 1、首先在go官网下载https://golang.org/dl/安装包,根据自己电脑选择

    2024年01月25日
    浏览(49)
  • 区块链实验室(11) - PBFT耗时与流量特征

    耗时特征见下图所示。横坐标是节点的度,纵轴是耗时(毫秒) 从上图可以看出,在度值小的节点上发起的交易,与度值大的节点上发起的交易,两者的耗时差别不大。原以为在度值大的节点上发起交易(例如上图的度值38),该节点处于网络中心位置,报文传播速度快,耗时应该

    2024年02月04日
    浏览(39)
  • 区块链实验室(10) - 实例说明PBFT的共识过程

    1:表示节点0的报文 2:这是发出消息的共识请求,本文从0节点开始进行共识 3:从0节点开始的共识请求,马上向它的邻居节点1节点发送preprepare报文 4:0节点向其邻居1节点发送commit报文。这条消息在时序上靠后,结合其他节点的报文来阅读。 1:表示节点1的报文 2:来自0节

    2024年02月16日
    浏览(40)
  • 区块链实验室(23) - FISCO中PBFT耗时与流量特征

    前面的实验(区块链实验室(11) - PBFT耗时与流量特征)用仿真的PBFT观察耗时。现在用真实的Fisco网络再次观察其特征。同样地,用相同的网络,即100个节点构成的无标度网络。在每个节点上发起10次交易,记录每次交易的耗时。结果见下图所示。 前半部分的趋势明显,耗时呈现上

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包