之前写过一篇文章,大家尽量不要去改造共识算法,这个难度很高,尤其共识算法再与区块链底层平台结合,那真是压力山大。一个完整的PBFT拥有完善的状态机流转,除多轮次投票,还要考虑投票超时处理、View Change等,Primary节点更换等,节点异常退出及重连,网络包乱序、丢包处理等,复杂度很高。本节简单实现PBFT,根据开源SIMPLE_PBFT改造,无View Change逻辑,只实现多轮次投票逻辑,帮助大家理解学习PBFT原理,有技术实例的同学可根据本节附带的代码,进一步二次开发,例如增加PoS流程等。
1.该项目的原始代码是https://github.com/bigpicturelabs/simple_pbft.git,但无法满足使用需求,进而二次开发。
2.改进版本的代码下载,https://download.youkuaiyun.com/download/xjmtxwd24/85483624。下载完成后解压到本地。
3.本项目为golang语言编写,代码使用gomod进行依赖包管理,需要查看上面的教程