bitxhub
bitxhub copied to clipboard
Implement checkpoint for RAFT consensus
Raft nodes should check the blockchain state with other nodes at each checkpoint. If failed, the node should rollback state to last checkpoint.
描述
为raft共识协议实现checkpoint机制
标准
- 接口设计清晰
- 完善的单元测试
- 必要的功能使用文档
赛题解读
目前BitXHub中,raft共识由主节点出块后,将区块信息广播给从节点,从节点执行区块并将执行结果写入本地账本。各个节点之间没有检查执行结果是否一致,如果执行不一致,则将影响整个系统。因此需要实现checkpoint进行状态检查,以保障整个系统的稳定运行。
解题思路
系统出块过程中,可以每隔一定区块(如10个区块)建立一个checkpoint,将各自在checkpoint高度的区块哈希(BitXHub中区块哈希是本地节点交易执行后才能计算出来的)广播给其他节点。每个节点收到其他节点的区块hash后进行检查,如果有至少quorum个(包括自己)区块hash一致,则checkpoint通过,如果未达到该条件,则需要将本地的执行结果(包括状态数据和会执)回滚到上一个checkpoint,重新执行交易,并在下一个checkpoint重新广播并检查。