#consensus-algorithm #safe-network #membership #section #vote #node #join

sn_consensus

安全网络成员资格:允许节点动态加入和离开一个分区

23 个稳定版本

3.5.2 2023年3月29日
3.2.2 2023年2月28日
3.2.0 2022年12月7日
3.1.4 2022年11月14日
1.16.0 2022年3月28日

#1 in #vote


4 个 crate 中使用 (通过 sn_interface)

MIT 或 BSD-3-Clause

205KB
5K SLoC

sn_consensus

MaidSafe 网站 安全网络论坛

关于

此安全网络成员资格模块允许节点动态加入和离开一个安全网络分区。

分区长者运行共识算法以决定重构。算法分阶段进行

  1. 长者代表加入节点提出重构(加入或离开)的建议。建议被广播给所有长者
  2. 如果一个长者检测到分裂的投票,他们将提出合并投票。 (这可能会发生多达 O(log(n)) 次)
  3. 如果一个长者看到大多数同意的投票,他们将提出超级多数投票
  4. 一旦长者看到超级多数的超级多数投票,他们将执行决定的重构。

测试

消息序列图 (MSC)

您会注意到运行 cargo test 后,会生成一系列 .msc 文件。

这些文件显示了投票在网络中被处理时的进度。它们可以使用 mscgen 进行渲染。例如,test_round_robin_split_vote 测试生成图表,展示了网络如何处理 1 到 6 个成员的分裂投票,以渲染 2 个成员投票不同的情况的图表

cargo test # generates the *.msc files in the current directory.

mscgen -T png -i round_robin_split_vote_2.msc -o round_robin_split_vote_2.png

渲染的图表 round_robin_split_vote_2.png 将看起来像以下这样

round robin split vote with 2 members

请注意,尽管网络成员之间的线是完美水平的,但这并不意味着投票是瞬间发送和接收的。当一个网络成员收到投票时,它会立即响应(如果有)自己的投票,但模拟网络会排队等待这些投票,并以确定性的方式交付它们。水平线显示了投票最终送达目的地的时间和来自谁。

许可

此安全网络软件可在修改后的 BSD ( https://opensource.org/licenses/BSD-3-Clause) 或 MIT 许可证 ( https://opensource.org/licenses/MIT) 下双许可,由您选择。

贡献

想要贡献?太棒了 🎉

项目回馈的方式有很多,无论是编写新代码、修复漏洞还是仅仅报告错误。所有形式的贡献都受到鼓励!

有关如何贡献的说明,请参阅我们的贡献指南

依赖项

~5MB
~170K SLoC