46  
配置 Raft 共识
作者: 姜天雨 于 2021年07月14日 发布在分类 / 底层框架资料 / GoQuorum 下,并于 2021年07月14日 编辑

配置 Raft 共识

要启用 Raft 共识,请在启动 GoQuorum 时指定   --raft   命令行 选项。

Raft 要求集群中的所有初始节点都配置为静态节点 static peers  static-nodes.json 文件中 enode IDs 的顺序在所有对等方中必须相同。

enode ID 必须包含一个 raftport 查询字符串参数,用于指定每个对等方的 Raft 端口。

粘贴图片

要使 Raft 网络正常工作,必须有 51% 的对等点启动并运行。 我们建议在网络中至少有 3 个奇数对等点。

添加 Raft 成员

  1. 要将验证节点添加到集群,请附加到 JS console 并发出 raft.addPeer(enodeId)

  2. 要将学习者节点添加到集群,请附加到 JS console 并发出 raft.addLearner(enodeId)

  3. 要将学习者提升为集群中的验证者,请附加到领导者或验证者节点的 JS console 并发 raft.promoteToPeer(raftId).

  4. enode ID 必须包含一个 raftport 查询字符串参数,如 enode IDs static-nodes.json   文件。

 addPeer addLearner  调用分配并返回一个尚未使用的 Raft ID 。 在 addPeer addLearner 之后,使用   --raftjoinexisting   --raft   作为命令行 选项来启动新的 GoQuorum 节点。 使用 addPeer  addLearner 返回 Raft ID 作为   --raftjoinexisting  的参数。

移除 Raft 成员

要从集群中删除节点,请附加到 JS console 并发出 raft.removePeer(raftId) raftId 是要删除的节点的编号。 对于集群中的初始节点, raftId 编号是静态对等列表中节点的 enode ID 1 索引位置。 从集群中删除节点后,它是永久性的。 Raft ID 以后无法重新连接到集群。 如果重新加入,节点必须指定 addPeer addLearner 返回的新 Raft ID

铸币频率

默认情况下,块的铸造频率不会超过每 50 毫秒。 当交易到达时:

  • 如果距离上一个区块至少 50 毫秒,则立即铸造一个新区块。
  • 如果小于 50 毫秒,则在前一个区块被铸造后 50 毫秒铸造一个新区块。 等待可以防止 Raft 被块淹没。

速率限制实现了交易吞吐量和延迟之间的平衡。

启动 GoQuorum 时,使用   --raftblocktime  command line 选项配置铸造频率。

Raft 传输层

块通过内置于 etcd Raft . 中的 HTTP 传输层进行通信。

默认情况下, GoQuorum 在端口 50400 上侦听 Raft 传输。 使用   --raftport   命令行选项更改端口。

默认情况下,对等点数为 25 。使用  --maxpeers N  命令行选项配置最大对等点数,其中 N 是集群的预期大小。





 推荐知识

 历史版本

修改日期 修改人 备注
2021-07-14 15:10:35[当前版本] 姜天雨 修改内容
2021-07-14 15:10:09 姜天雨 创建版本

 附件

附件类型

PNGPNG

  目录
    区块链服务网络发展联盟