Skip to content

Using Hermes in the Filecoin Network #63

@dennis-tra

Description

@dennis-tra

As part of the Filecoin devgrant#1851 ProbeLab is putting together measurement infrastructure to trace and analyse GossipSub messages and traffic in the Filecoin network. To accomplish this goal, ProbeLab has set aside dedicated time to design the monitoring infrastructure "Milestone 1: Design of monitoring architecture, data collection infrastructure and lightweight node particulars" which we’re briefly discussing here.

As part of another workstream, ProbeLab has developed the Hermes GossipSub tracer for the Ethereum network and the natural approach is to try to adapt Hermes to operate within the Filecoin network. In the Ethereum network, Hermes needs to “speak” Ethereum-specific protocols to be considered a “good citizen” of the network and don’t get immediately pruned when connecting to other peers. This is crucial to maintain stable GossipSub meshes. To achieve this, Hermes offloads some requests to a consensus client in the background. The intention is to also do that in the Filecoin network but just with a Lotus node.

After careful review of the Lotus, Venus, Boost, and Forest code bases and initial testing, we concluded that in the Filecoin network there is no strict requirement on supported protocols and hence Hermes does not need to implement Filecoin-specific functionality.

The current design of the monitoring architecture and internal workflow include the following:

  • Extend Hermes to bootstrap into the Filecoin network

  • Participate in GossipSub by subscribing to the following topics:

    • /f3/chainexchange/0.0.1/filecoin
    • /f3/granite/0.0.3/filecoin
    • /fil/blocks/testnetnet
    • /fil/msgs/testnetnet

    Optional:

    • /f3/manifests/0.0.2 (deprecated)
    • /indexer/ingest/mainnet
    • /drand/pubsub/v0.0.0/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971
    • /drand/pubsub/v0.0.0/80c8b872c714f4c00fdd3daa465d5514049f457f01f85a4caf68cdcd394ba039
    • /drand/pubsub/v0.0.0/8990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce
    💡 We are not sure about whether there is a drand topic schedule. We will hard code the above topics for now.
  • Do regular DHT lookups (once per minute) for random keys

    • This is allows us to continuously discover additional peers which the GossipSub implementation can use to maintain a stable mesh
    • In turn, this means that we don’t have to exclusively rely on GossipSub peer exchange

Building on top of the existing Hermes implementation will allow us to make use of the existing GossipSub tracing capabilities. Hermes can then be considered a very lightweight GossipSub tracer which could be deployed multiple times to cover different parts of the network with non-overlapping meshes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions