显示crate…
1个不稳定版本
0.8.0 | 2021年4月4日 |
---|---|
0.0.0 |
|
#14 in #gossip-protocol
79 每月下载量
在 28 个crate中(通过 tc-finality-grandpa)使用
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