二维码

4.4 PBFT算法 - 数据结构 - 机器学习

1235 人阅读 | 时间:2021年01月15日 01:05
4.4 PBFT算法 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

4.4 PBFT算法

1844 人参与  2018年08月25日 17:22  分类 : 区块链精品文章  评论

1999年Castro和Liskov提出的PBFT(Practical Byzantine Fault Tolerance)是第一个得到广泛应用的BFT算法。在PBFT算法中,至多可以容忍不超过系统全部节点数量的1/3的拜占庭节点“背叛”,即如果有 超过2/3的节点正常,整个系统就可以正常工作。早期的拜占庭容错算法或者基于同步系统的假设,或者由于性能太低而不能在实际系统中运作。PBFT算法解 决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。也许就是出于效率的考虑,央 行推出的区块链数字票据交易平台用的就是优化后的PBFT算法。腾讯的区块链用的也是PBFT。

在PBFT算法中,每个副本有3个状态:pre-prepare、prepared和commited。消息也有 3种:pre-prepare、prepare和committed。收到pre-prepare消息并且接受就进入prepared状态。收到 commit消息并且接受就进入Committed状态。下面以一个有4个节点/拷贝的例子说明,这个网络内,仅允许1个拜占庭节点(此处设f=1)。

百花村小学举行百米赛跑比赛,3年级第一组的选手只有4个人:Alice、Bob、Cathy和David(简称 A、B、C、D)。为了节省钱,比赛并没有请裁判,而是在4个选手中随机挑出一个做裁判,假设是Alice。众所周知,百米跑的口令是:“各就各位,预 备,跑!”

这里“各就各位”就是pre-prepare消息,选手接受了命令就会脚踩进助跑器,而这一动作被其他选手看到, 就会认为该选手进入了prepared状态。相当于发了一个prepare消息给其他选手。同理,预备就是prepare消息,选手接受了就是双手撑起, 身子呈弓形,而这一动作被其他选手看到,就会认为该选手进入了committed状态。

1)假设A是公正的。Alice得到老师示意,3年级第一组准备比赛。Alice就喊:“各就各位!”

老师的示意相当于一个外部消息请求。Alice收到这个消息,给消息编一个号,比如编为030101号。必须编 号,因为比赛有一个规则(假想),连续4次起跑失败,整个组都被淘汰。B、C、D同学收到口令后,如果认为命令无误,便都把脚踩进助跑器(拜占庭的那个人 例外)。而这一个动作又相当于互相广播了一个prepare消息。A、B、C、D选手互相看到对方的动作,如果确认多于f个人(由于此处f=1,所以至少 是2个人)的状态和自己应有的状态相同,则认为大家进入prepared状态。选手会将自己收到的pre-prepare和发送的prepare信息记录 下来。

2)假设A是公正的。Alice看到至少2个人进入prepare状态,Alice就接着喊:“预备,跑!”。

3)接下来发生的事类似上一步:B、C、D同学收到口令后(相当于收到commit消息),如果认为命令无误,便 都双手撑起,身子呈弓形(拜占庭的那个人例外)。而这一个动作又相当于互相广播了一个commit消息。A、B、C、D选手互相看到对方的动作,如果确认 多于f个人(由于此处f=1,所以至少是2个人)的状态和自己应有的状态相同,则认为大家进入committed状态。当大家都确认进入 Committed状态后,就可以起跑了!

4)假设A是不公正的。A就会被换掉,重新选一个选手B发令。

这时候,由于所有选手都记录了自己的状态和接受/发送的信息。那些换掉前已经是Committed状态的选手,开 始广播commit消息,如果确认多于f个人(由于此处f=1,所以至少是2个人)的状态和自己应有的状态相同,则认为大家进入committed状态。 而对于换掉前是prepared和pre-prepare状态的选手,则完全作废以前的命令和状态,重新开始。

PBFT算法的主要优点如下。

·PBFT算法共识各节点由业务的参与方或者监管方组成,安全性与稳定性由业务相关方保证。

·共识的时延大约在2~5秒,基本达到商用实时处理的要求。

·共识效率高,可满足高频交易量的需求。

因为非常适合联盟链的应用场景,PBFT及其改进算法因此成为目前使用最多的联盟链共识算法。改进主要集中在:①修改底层网络拓扑的要求,使用P2P网络;②可以动态地调整节点数量;③减少协议使用的消息数量等。

不过PBFT仍然是依靠法定多数(quorum),一个节点一票,少数服从多数的方式,实现了拜占庭容错。对于联盟链而言,这个前提没问题,甚至是优点所在。但是在公有链中,就有很大的问题。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=95

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×