Skip to content

Commit

Permalink
update README with difference with other existing tools
Browse files Browse the repository at this point in the history
  • Loading branch information
cortze committed May 21, 2024
1 parent e362cd6 commit cd21333
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand Down Expand Up @@ -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

Expand Down

0 comments on commit cd21333

Please sign in to comment.