区块链实验室(10) - 实例说明PBFT的共识过程

这篇具有很好参考价值的文章主要介绍了区块链实验室(10) - 实例说明PBFT的共识过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前面描述过PBFT的仿真方式,见区块链实验室(3) – 用Go语言仿真PBFT算法,本文以上述仿真程序说明PBFT的共识过程。

为叙述方便,首先给出1个简化的网络,共4个节点,构成如下图所示的网络。这样的网络可以避免冗余的网络报文。从0节点开始,利用PBFT算法对1条消息完成共识。

区块链实验室(10) - 实例说明PBFT的共识过程,区块链,Fabric,以太坊,区块链

完成该消息的共识后,各节点的报文如下所示。首先是节点0的网络报文。

区块链实验室(10) - 实例说明PBFT的共识过程,区块链,Fabric,以太坊,区块链
1:表示节点0的报文
2:这是发出消息的共识请求,本文从0节点开始进行共识
3:从0节点开始的共识请求,马上向它的邻居节点1节点发送preprepare报文
4:0节点向其邻居1节点发送commit报文。这条消息在时序上靠后,结合其他节点的报文来阅读。

节点1的网络报文

区块链实验室(10) - 实例说明PBFT的共识过程,区块链,Fabric,以太坊,区块链
1:表示节点1的报文
2:来自0节点的preprepare报文,由1节点转发给2节点
3:节点1验证preprepare报文后,创建自己的prepare报文,发给节点0和节点2
4:同上
5:向节点0转发prepare报文,该报文由节点2或者节点3创建,由节点2转发而来
6:向节点0转发prepare报文,该报文由节点3或者节点2创建,由节点2转发而来
7:节点1创建commit报文,发送到邻居节点0和节点2
8:同上
9:向节点0转发commit报文,该报文来自节点2。此时节点1已经收到足够多的commit报文,不必等节点3的commit报文。
10:节点1创建reply报文,该报文不再广播,而是直接发给目标节点0
11:节点1转发其他节点的reply报文
12:同上

节点2的网络报文

区块链实验室(10) - 实例说明PBFT的共识过程,区块链,Fabric,以太坊,区块链
1:节点2的报文
2:来自节点1的preprepare报文,由节点2转发给节点3
3:创建prepare报文,转发给邻居节点1和3
4:同上
5:转发prepare报文,该报文来自节点3
6:转发prepare报文,该报文来自节点1
7:创建commit报文,发给节点1
8:同时发给节点3
9:转发节点3的commit报文给节点1
10:创建reply报文,发给节点1
11:向节点1转发节点3的reply报文

节点3的网络报文

区块链实验室(10) - 实例说明PBFT的共识过程,区块链,Fabric,以太坊,区块链
1:节点3的报文
2:创建prepare报文并发送
3:创建commit报文并发送
4:创建reply报文并发送文章来源地址https://www.toymoban.com/news/detail-604967.html

节点3为什么没收到其他节点的commit消息?节点3参与共识的时序靠后,共识已完成,没必要再向节点3发送commit消息。节点1,2,3为什么没有收到reply消息?reply消息直接发到目标节点,不广播reply消息。

到了这里,关于区块链实验室(10) - 实例说明PBFT的共识过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包