Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update README to add differences with other existing tools #28

Merged
merged 2 commits into from
May 22, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.
cortze marked this conversation as resolved.
Show resolved Hide resolved
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).
cortze marked this conversation as resolved.
Show resolved Hide resolved

It avoids updating and maintaining a custom fork of existing full/light clients, which complicates the control of events and upgradeability of new features.
cortze marked this conversation as resolved.
Show resolved Hide resolved

Currently available similar tools:

### Armiarma Crawler from MigaLabs
cortze marked this conversation as resolved.
Show resolved Hide resolved
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.
cortze marked this conversation as resolved.
Show resolved Hide resolved

[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
Loading