社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
参考资料:
- https://www.jianshu.com/p/fb5edf031afd
- https://www.cnblogs.com/gexin/p/10242161.html
源码地址:https://github.com/corgi-kx/blockchain_consensus_algorithm/tree/master/pbft
本demo为pbft共识算法的代码实现,如果想了解pbft的详细信息请自行浏览参考资料
本demo展示了pbft的部分功能(没有写主节点轮循机制),写的并不严谨,仅作为对pbft的了解用途
pbft公式: n>=3f + 1 其中n为全网总节点数量,f为最多允许的作恶、故障节点
数据从客户端输入,到接收到节点们的回复共分为5步
git clone https://github.com/corgi-kx/blockchain_consensus_algorithm.git
cd blockchain_consensus_algorithm/pbft
go build -o pbft.exe
客户端执行pbft.exe client
其他四个节点依次执行 pbft.exe N0 pbft.exe N1 pbft.exe N2 pbft.exe N3
可以看到,客户端依然会接收到reply,因为根据公式 n >= 3f+1 ,就算宕机一个节点,系统依然能顺利运行
可以看到,关闭两个节点后,故障节点已经超出了pbft的允许数量,消息进行到Prepare阶段由于接收不到满足数量的信息,固系统不再进行commit确认,客户端也接收不到reply
建了个QQ群:722124200 有问题可以加群互相讨论 :)
邮箱:mikesen1994@gmail.com vx:965952482
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!