区块链实验室(3) – 用Go语言仿真PBFT算法

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

PBFT是一种容错算法或者共识算法,许多文章用下图来描述该算法。这个图的假设条件是4个节点构成1个全连通网络,能够彼此直接通信。实际的网络不是强连通图,因此一次共识的报文需要广播消息。

区块链实验室(3) – 用Go语言仿真PBFT算法,Fabric,网络

例如,上图新增1个节点4,该节点与其他对等节点没有直接连接,那么PBFT的每个阶段的报文需要广播消息。本文以100个节点为例,用GO语言仿真PBFT。这100个节点构成1个无标度网络,见下图。该网络是无向网络,用1个对称矩阵表示。

区块链实验室(3) – 用Go语言仿真PBFT算法,Fabric,网络

在GO工程里,用1个线程表示1个节点,共启动100个线程。每个节点与其邻居节点通信,向邻居节点发送广播报文。GO工程代码片段如下。

区块链实验室(3) – 用Go语言仿真PBFT算法,Fabric,网络
区块链实验室(3) – 用Go语言仿真PBFT算法,Fabric,网络

运行结果如下图。6次交易均已达成共识,但各自耗时不一样。

区块链实验室(3) – 用Go语言仿真PBFT算法,Fabric,网络

上述6次交易的网络流量如下图,达到了772176。此处所谓的网络流量是指报文数量。由此可见,PBFT共识的流量真是大啊。

区块链实验室(3) – 用Go语言仿真PBFT算法,Fabric,网络

改成4个节点的网络,发起3次交易,启动4个节点能达成共识,见下图。网络的规模小了,这3次交易的耗时明显不一样啊。

区块链实验室(3) – 用Go语言仿真PBFT算法,Fabric,网络

还是4个节点的网络,发起3次交易,但只启动3个节点,这时不能共达成共识,见下图所示。在线的3个节点均报告共识失败。

区块链实验室(3) – 用Go语言仿真PBFT算法,Fabric,网络文章来源地址https://www.toymoban.com/news/detail-744980.html

做这个有什么用?研究并改进共识算法,进行仿真,从完成时间、网络流量等对比实验。

欢迎探讨goodlcp@163.com

到了这里,关于区块链实验室(3) – 用Go语言仿真PBFT算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包