ProbeLab团队很高兴宣布推出Hermes,主要由@dennis-tra和@cortze开发。Hermes是一个GossipSub监听器和跟踪器,用于libp2p网络。我们希望该工具能被社区广泛使用,并有更多功能和对其他网络的支持。
什么是Hermes以及它能做什么
Hermes的行为类似于轻节点,并连接到网络中的其他参与者。它依赖于可信的本地节点,以确保我们可以回复任何传入的请求并维持稳定的连接。
基于Hermes的实验旨在测量GossipSub消息广播协议在任何基于libp2p的网络中的效率和性能。Hermes可以帮助开发人员根据消息传播延迟和控制消息开销来调整网络协议。
该工具目前支持任何以太坊网络(在共识层),尽管未来将支持更多网络。
它是如何工作的
组件
Hermes作为单个组件运行,即轻节点,部署在每个网络中。但它有两个主要要求才能工作:1)一个可信的本地节点提供正确的链状态视图,2)一个事件消费者接收所有libp2p跟踪并存储它们。轻节点负责发现对等方,与它们保持连接,并监控libp2p主机的内部事件。
轻节点
Hermes像标准的libp2p节点一样运行,发现并连接到网络,同时支持所有libp2p协议以确保可靠和安全的通信。它连接到可信的本地或远程节点,以获取某些需要链状态信息的RPC,利用这些可信源来增强其功能。
Hermes订阅所有可用的GossipSub主题,这使它能全面接收、揭示和跟踪与网络的所有交互。这使该工具能有效地跟踪网络活动。
此外,Hermes可以将这些跟踪提交给任何定义的消费者,目前支持AWS Kinesis和Xatu(来自以太坊基金会)。这个功能有助于将网络数据与分析和监控工具集成,从而提高网络的整体安全性和功能性。
部署
Hermes被开发为持续运行。但是,为了增加轻节点连接的稳定性,节点必须成功响应远程对等方可能请求的面向链的RPC调用。由于Hermes被设计为与链无关,我们必须依赖外部可信节点提供该信息。
Hermes必须与一个链客户端配对:在我们的例子和以太坊共识层中,我们使用了Prysm。给Hermes提供HTTP API和gRPC主机的端点,Hermes可以将自己添加为"白名单"节点,以便稍后转发大部分与链或状态相关的RPC调用。但是,如下图所示,同一个Prysm节点可以连接到多个Hermes实例,这有助于减少部署要求。
Hermes已经扩展到支持不同的数据消费者或数据流。由于所有事件跟踪都需要持久保存,该工具提供了三个不同的选项:
- AWS Kinesis(我们的部署)
- Xatu回调(由EF使用)
- 跟踪记录器到stdout(用于本地开发测试)
如果您有兴趣使用或升级该工具以支持其他网络或数据流,请与我们联系。
Hermes收集了哪些数据
由于Hermes与网络中其他节点保持稳定连接,因此它可以发出调试跟踪,了解libp2p和GossipSub在野外的工作方式。
Hermes开箱即用地从libp2p主机和GossipSub协议收集以下信息:
- libp2p主机的连接和断开连接
- GossipSub控制消息:
- 其他节点对主题的订阅
GRAFT
和PRUNE
控制消息- GossipSub对等方评分
IHAVE
和IWANT
控制消息- 最近的
IDONTWANT
控制消息
- 发送和接收的消息
- 协议RPC
这是一组非常有价值的数据,因为它涵盖了GossipSub在给定网络中行为的大部分内容。相对简单的数据分析可以揭示非常重要的指标,并告知工程师协议的健康(或不健康)运行情况。对于GossipSub作为区块链网络的块传播协议的情况,深入了解这些指标至关重要!
我们如何使用它
Hermes帮助ProbeLab团队对以太坊网络上GossipSub的运行进行了广泛的研究。以下是相关ethresear.ch帖子的链接:
- 以太坊GossipSusb网络中Gossip IWANT/IHAVE的有效性
- 通过GRAFT和PRUNE实现GossipSub网络动态性
- 以太坊GossipSub网络中重复消息的数量
- 以太坊节点消息传播带宽消耗
- GossipSub消息传播延迟
此外,它还帮助发现了跨实现的GossipSub操作中的错误,并提供了支持性证据,说明需要采用IDONTWANT
消息。
未来计划和如何贡献
Hermes是开源的 - 它的GitHub仓库是: GitHub - probe-lab/hermes: A Gossipsub listener and tracer.。我们欢迎GitHub问题与社区讨论,接受功能请求和反馈。我们也欢迎Pull Request来改进工具,添加功能或支持其他网络。如果您对其他网络的数据感兴趣,并希望Hermes支持这些网络,请与我们联系。
我们希望您会喜欢使用Hermes。我们很想听听您如何使用它以及您做出的任何改进。
[最初发布于: https://www.probelab.network/blog/hermes-a-monitoring-light-node-for-gossipsub-based-networks.]