Xbft共识,基于hotstuff流水线共识算法实现;是一种优化后的三阶段BFT算法,当拜占庭节点数小于共识节点数的1/3时,可以保证系统的安全、高效运行、并提供状态的最终性保证;Xbft当前仅支持共识节点数 >= 4的场景,
1) 当创世节点数小于4时,节点无法成功启动;
2) 当链上共识节点数量动态减少时,导致链上节点数小于4的交易,执行失败。
Xbft在实现过程中,对活性(liveness)规则与安全性(safetyRules)规则解耦。在与区块链网络适配过程中,发现当每次都切换leader,下一个被切换的leader可能还没有获取到最新的状态,从而引起下一个共识不能成功,导致共识的稳定性存在问题。因此,当前版本根据实际情况在hotstuff流水线共识算法的基础上进行了如下方面的实现改进:
1) leader节点不在每次投票后主动切换,leader节点的提案数据在接收到其它节点的投票数据后,即可马上进行下一个提案的生成。
2) new-view仅由超时进行触发,节点在规定时间内未收到新提案生成消息,则发起视图切换请求,并广播到其它节点。节点收集new-view消息,所有节点共同判断2f+1个new-view后更新view-number,完成leader节点切换。
- g++ 8.4.0以上版本
- cmake 3.22以上版本
cd Xbft & mkdir 3rd & cd 3rd
- 三方库源码下载 按照3rd-install文件下载需要三方库源码
cd ..
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/xbft
make && make install
欢迎参与“星火开源“的生态建设:
-
如项目对您有帮助,欢迎点亮我们的小星星(点击项目上方Star按钮)。
-
欢迎提交代码(Pull requests)。
-
提问和提交BUG。
-
邮件反馈:maxufeng@caict.ac.cn
我们将尽快给予回复。
各版本更新将记录在CHANGELOG中。
版权所有 2023 中国信息通信研究院工业互联网与物联网研究所