From cd2133333444b255748c95c0b9901e72fc885c68 Mon Sep 17 00:00:00 2001 From: Mikel Cortes Date: Tue, 21 May 2024 11:40:22 +0200 Subject: [PATCH 1/2] update README with difference with other existing tools --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b00a573..f26ac02 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![GoDoc](https://pkg.go.dev/badge/github.com/probe-lab/hermes)](https://pkg.go.dev/github.com/probe-lab/hermes) Hermes is a GossipSub listener and tracer. It subscribes to all relevant pubsub topics -and traces all protocol interactions. As of `2024-03-27`, Hermes supports the Ethereum +and traces all protocol interactions. As of `2024-05-21`, Hermes supports the Ethereum network. ## Table of Contents @@ -21,6 +21,7 @@ network. - [Telemetry](#telemetry) - [Metrics](#metrics) - [Tracing](#tracing) + - [Differences with other tools](#differences-with-other-tools) - [Maintainers](#maintainers) - [Contributing](#contributing) - [License](#license) @@ -199,6 +200,20 @@ You can find the UI at [`http://localhost:16686`](http://localhost:16686). Port Run Hermes with the `--tracing` flag. To change the address of the trace collector, you can also specify `--tracing.addr` and `--tracing.port`. +## Differences with other tools +Hermes jumps to the web3/blockchain/libp2p ecosystem with a pretty consolidated tooling around it, such as the existing variety of network crawlers or light clients for most mature networks. Despite it could look competence for other toolings, there was still a large incentive to develop it. +Hermes was designed to behave as a light node in each supported network, where, on top of being an honest participant supporting all the protocols and RPC endpoints, allowing the streaming of custom internal events (mostly Libp2p-related). + +It avoids updating and maintaining a custom fork of existing full/light clients, which complicates the control of events and upgradeability of new features. + +Currently available similar tools: + +### Armiarma Crawler from MigaLabs +Although both tools seem to be focusing on the same goals at first sight, they have significant differences in their use cases and their targets in data collection and metrics. + +[Armiarma](https://github.com/migalabs/armiarma) is a network crawler that relies on running discv5 peer discovery service and a libp2p host 24/7 to establish connections. However, significant modifications have been made to connect to as many peers as possible (custom peering module). This way, it tries to identify as many peers as possible in the network periodically. Thus, its focus is mainly on opening and identifying as many peers as possible, rather than maintaining stable connections to other peers in the network. + +On the other hand, although Hermes also relies on a continuously running discv5 and libp2p host, it uses the libp2p connection manager for a different purpose to Armiarma (which is to connect to as many peers as possible). In the case of Hermes, the connection manager is used to decide who it connects to (i.e., simulating the behaviour of a standard node). Furthermore, it backs up some of the RPC, which requires keeping the chain db calls on a trusted node. This way, it behaves like a light node to the network, which is honest and beneficial for the rest of the network, allowing us to track all desired networking events from stable connections, while at the same time having a highly customizable tracing system. ## Maintainers From b1463952f3b5defb81620e0b4c5d0590dc583c67 Mon Sep 17 00:00:00 2001 From: Mikel Cortes <45786396+cortze@users.noreply.github.com> Date: Wed, 22 May 2024 11:37:14 +0200 Subject: [PATCH 2/2] Apply suggestions from @yiannisbot Co-authored-by: Yiannis Psaras <52073247+yiannisbot@users.noreply.github.com> --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f26ac02..9997a90 100644 --- a/README.md +++ b/README.md @@ -201,15 +201,15 @@ You can find the UI at [`http://localhost:16686`](http://localhost:16686). Port Run Hermes with the `--tracing` flag. To change the address of the trace collector, you can also specify `--tracing.addr` and `--tracing.port`. ## Differences with other tools -Hermes jumps to the web3/blockchain/libp2p ecosystem with a pretty consolidated tooling around it, such as the existing variety of network crawlers or light clients for most mature networks. Despite it could look competence for other toolings, there was still a large incentive to develop it. -Hermes was designed to behave as a light node in each supported network, where, on top of being an honest participant supporting all the protocols and RPC endpoints, allowing the streaming of custom internal events (mostly Libp2p-related). +Hermes jumps to the web3/blockchain/libp2p ecosystem despite a large variety of tools around it, such as the many existing network crawlers or light clients for most mature networks. Although at first sight it might look like a competitor to those, there was still a large incentive to develop it. Here, we describe the gap that Hermes fills as well as the use-cases that it is suitable for. +Hermes was designed to behave as a light node in each supported network, where, in addition to being an honest participant in the network and supporting all the protocols and RPC endpoints, it also allows streaming of custom internal events (mostly libp2p-related). -It avoids updating and maintaining a custom fork of existing full/light clients, which complicates the control of events and upgradeability of new features. +Hermes avoids being based on a custom fork of existing full/light clients, which would come with non-negligible maintenance baggage and would complicate having control of events. Currently available similar tools: -### Armiarma Crawler from MigaLabs -Although both tools seem to be focusing on the same goals at first sight, they have significant differences in their use cases and their targets in data collection and metrics. +### Armiarma Crawler from MigaLabs vs Hermes from ProbeLab +Although both Hermes and Armiarma seem to be focusing on the same goals at first sight, they have significant differences in their use cases and their targets in data collection and metrics. [Armiarma](https://github.com/migalabs/armiarma) is a network crawler that relies on running discv5 peer discovery service and a libp2p host 24/7 to establish connections. However, significant modifications have been made to connect to as many peers as possible (custom peering module). This way, it tries to identify as many peers as possible in the network periodically. Thus, its focus is mainly on opening and identifying as many peers as possible, rather than maintaining stable connections to other peers in the network.