11. Chained-BFT共识公共组件

    • 它的设计中将liveness和safty解耦开来,使得非常方便与其他的共识进行扩展;
    • 将bft过程拆解成3阶段,每个阶段都是o(n)的通信;
    • 它允许一个节点处于不同的view,并且将view的切换与区块结合起来,使得其能够实现异步共识,进一步提升共识的效率。

    这样一个chained-bft可以在给定主集合的场景下确保网络的共识安全性,并且通过与外层共识配合工作实现共识的活性保证。

    Smr是 chained-bft 的核心实例。他的主要的作用有以下几点:

    • 维护节点链的chained-bft共识状态机;
    • 处理其他验证节点的消息并更新本地状态;
    • 判断当前Proposal的View值是否大于本地locked Proposal的View值;
    • 验证当前Proposal中上一个Proposal的投票信息有效性和投票个数是否大于系统矿工数目的2/3;
    • 验证当前Proposal的ProposalMsg是否有效;

    当一个验证节点收到一个新的提案时,如果满足上述 的认证,则会给这个提案进行投票,否则拒绝这次提案。