bitxhub icon indicating copy to clipboard operation
bitxhub copied to clipboard

Implement checkpoint for RAFT consensus

Open sandyzhou opened this issue 3 years ago • 1 comments

Raft nodes should check the blockchain state with other nodes at each checkpoint. If failed, the node should rollback state to last checkpoint.

sandyzhou avatar Apr 28 '21 09:04 sandyzhou

描述

为raft共识协议实现checkpoint机制

标准

  1. 接口设计清晰
  2. 完善的单元测试
  3. 必要的功能使用文档

赛题解读

目前BitXHub中,raft共识由主节点出块后,将区块信息广播给从节点,从节点执行区块并将执行结果写入本地账本。各个节点之间没有检查执行结果是否一致,如果执行不一致,则将影响整个系统。因此需要实现checkpoint进行状态检查,以保障整个系统的稳定运行。

解题思路

系统出块过程中,可以每隔一定区块(如10个区块)建立一个checkpoint,将各自在checkpoint高度的区块哈希(BitXHub中区块哈希是本地节点交易执行后才能计算出来的)广播给其他节点。每个节点收到其他节点的区块hash后进行检查,如果有至少quorum个(包括自己)区块hash一致,则checkpoint通过,如果未达到该条件,则需要将本地的执行结果(包括状态数据和会执)回滚到上一个checkpoint,重新执行交易,并在下一个checkpoint重新广播并检查。

jzhe886 avatar Jul 27 '21 09:07 jzhe886