#node #section #vote #membership #join #leave #dynamically

sn_membership

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

13个稳定版本

1.15.0 2022年3月8日
1.14.0 2022年3月2日
1.13.0 2022年2月23日
1.7.0 2022年1月26日

#9 in #vote

MIT OR BSD-3-Clause

56KB
1.5K SLoC

sn_membership

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)。

贡献

想要贡献?太棒了 🎉

有多种方式可以为项目做出贡献,无论是编写新代码、修复错误还是仅报告错误。所有形式的贡献都受到鼓励!

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

依赖项

~6MB
~181K SLoC