【问题标题】:How does RAFT consensus algorithm in Quorum ensure deterministic chain extension?Quorum 中的 RAFT 共识算法如何保证确定性扩链?
【发布时间】:2018-10-20 14:54:07
【问题描述】:

Quorum 的RAFT consensus docs 中提到

这种链扩展逻辑是确定性的:完全相同的行为 将发生在集群中的每个节点上,保持区块链 同步。

在发生leader变更的情况下,共识算法如何保证所有follower节点拥有相同的账本?是不是有一些follower节点先从前一个leader那里得到一个新块,而一些节点先从新leader那里得到一个新块?是否有任何同步机制来避免这种行为?

【问题讨论】:

    标签: blockchain consensus raft quorum


    【解决方案1】:

    follower 节点有可能在领导层变更期间从前一个领导者那里获得一个块;但在新领导者提交区块之前,他们不会使用它,这可能不会发生。

    raft 复制分两个阶段进行:准备阶段和提交阶段。两者都通过Append 消息发生,该消息具有committed 水印。

    新的筏领导者做的第一件事就是修复追随者的日志。也就是说,它会覆盖日志中未提交的部分,使其与自己的匹配,然后提交这些部分。

    一旦一个区块的转换数低于节点的承诺水印,它就可以用于业务;在此之前,节点必须假定该块可能不正确并且可以被删除。

    我强烈建议在https://raft.github.io/ 上玩可视化:

    1. 关闭大部分节点,但保持领导者和其他节点处于活动状态;
    2. 请求领导者的价值;
    3. 关闭leader,开启其他节点;
    4. 使您刚刚重新激活的节点之一超时(不是您请求的值。)
    5. 看看会发生什么。

    【讨论】:

    • 谢谢...可视化非常有帮助。虽然之前也遇到过,但没想到是交互式的。
    猜你喜欢
    • 2021-07-15
    • 2020-08-22
    • 2022-01-20
    • 2020-11-07
    • 2019-02-07
    • 2019-10-15
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多