要启用 Raft 共识,请在启动 GoQuorum 时指定 --raft 命令行 选项。
Raft 要求集群中的所有初始节点都配置为静态节点 static peers 。 static-nodes.json 文件中 enode IDs 的顺序在所有对等方中必须相同。
enode ID 必须包含一个 raftport 查询字符串参数,用于指定每个对等方的 Raft 端口。
要使 Raft 网络正常工作,必须有 51% 的对等点启动并运行。 我们建议在网络中至少有 3 个奇数对等点。
添加 Raft 成员
要将验证节点添加到集群,请附加到 JS console 并发出 raft.addPeer(enodeId) 。
要将学习者节点添加到集群,请附加到 JS console 并发出 raft.addLearner(enodeId) 。
要将学习者提升为集群中的验证者,请附加到领导者或验证者节点的 JS console 并发 raft.promoteToPeer(raftId). 。
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 毫秒。 当交易到达时:
速率限制实现了交易吞吐量和延迟之间的平衡。
启动 GoQuorum 时,使用 --raftblocktime command line 选项配置铸造频率。
Raft 传输层
块通过内置于 etcd Raft . 中的 HTTP 传输层进行通信。
默认情况下, GoQuorum 在端口 50400 上侦听 Raft 传输。 使用 --raftport 命令行选项更改端口。
默认情况下,对等点数为 25 。使用 --maxpeers N 命令行选项配置最大对等点数,其中 N 是集群的预期大小。