显示crate…

1个不稳定版本

0.8.0 2021年4月4日
0.0.0 2021年3月5日

#14 in #gossip-protocol

Download history 20/week @ 2024-03-11 27/week @ 2024-03-18 33/week @ 2024-03-25 68/week @ 2024-04-01 18/week @ 2024-04-08 17/week @ 2024-04-15 23/week @ 2024-04-22 17/week @ 2024-04-29 18/week @ 2024-05-06 24/week @ 2024-05-13 13/week @ 2024-05-20 23/week @ 2024-05-27 21/week @ 2024-06-03 20/week @ 2024-06-10 15/week @ 2024-06-17 22/week @ 2024-06-24

79 每月下载量
28 个crate中(通过 tc-finality-grandpa)使用

GPL-3.0-or-later…

1MB
21K SLoC

礼貌的Gossiping。

此crate在网络上提供了Gossiping功能。

Gossip消息分为两个类别:“主题”和共识引擎ID。共识引擎ID与消息一起通过线发送,而主题则不发送,预期可以通过消息内容隐式地推导出主题,前提是它是有效的。

主题是与消息关联的单个32字节标签,用于以透明的方式对这些消息进行分组。共识代码可以调用broadcast_topic来尝试将单个主题下的所有消息发送给尚未拥有的所有对等方,并调用send_topic将单个主题下的所有消息发送给特定的对等方。

用法

  • 实现Network特质,表示低级网络原语。它已经在tc_network::NetworkService中实现。
  • 实现Validator特质。请参阅下面的章节。
  • 确定一个ConsensusEngineId。每个Gossiping协议都应该有一个不同的。
  • 使用这三个元素构建一个GossipEngine
  • 使用GossipEngine的方法来发送消息和接收传入的消息。

什么是验证器?

Validator的主要作用是处理来自对等方的传入消息,并决定是否丢弃或处理它们。它还决定是否重新广播消息。

验证器的次要功能是检查一条消息是否允许发送到指定的对等节点。在发送之前,所有消息都将与此过滤器进行比对。这使验证器能够利用其关于连接对等节点的已知信息,在任何给定时间点决定是否向它们发送消息——特别是,在发送之前等待对等节点能够接收和处理该消息。

最后,由于八卦验证器可以决定不重新广播消息,这为将邻居状态包嵌入八卦协议打开了大门。这些状态包通常包含一些轻量级信息,用于告知对等节点当前协议状态的视图。

许可:GPL-3.0-or-later WITH Classpath-exception-2.0

依赖项

~32–49MB
~852K SLoC