Skip to content

Product Overview

Sean Chen edited this page Feb 15, 2023 · 20 revisions

Why are we building Hermes?

We build Hermes towards fulfilling Informal's Vision of creating a secure, sustainable, and scalable Interchain serviced by the Cosmos Hub. Our contribution is towards solving the problem that existing infrastructure is fragile and cannot support 10x growth in networks or traffic.

What functionality is currently implemented in Hermes?

Hermes is an IBC relayer. It is a central element of our mandate to build and operate robust node and relaying software to power the Interchain. The functionality consists of production-grade relaying software serving the full suite of IBC protocol standards, among them: ICS07 (Tendermint light client), ICS20 (Fungible Token Transfer), ICS27 (Interchain Accounts), ICS28 (Cross-Chain Validation), ICS29 (Relayer Incentivisation Mechanism).

Current Hermes initiatives

The Hermes team, in between actively maintaining the current iteration of Hermes, is also working on some long-running initiatives that each seek to address a substantial pain point. Such initiatives include:

  1. The Relayer-Next project, which involves re-architecting Hermes' back end for the purpose of making it more flexible and composable. The goal is to eventually provide a library that allows relayer developers to easily create and customize relayer instances for all sorts of different relaying use-cases.
  2. The IBC Node project, which aims to implement a PostgreSQL indexer that will serve the purpose of relieving network pressure on validators and relayer operators, with the ultimate goal of reducing the costs that validators and operators incur as part of contributing to the Cosmos network.

How is Hermes implemented?

  • Architecture: For a high-level architectural description, see architecture.md.

    • We use Architecture Decision Records (ADRs) to track major decisions on how the Hermes software is evolving. See here all our ADRs.
  • QA: Our testing regimen comprises 2 levels:

    1. We have integration tests covering various network binaries and with numerous test cases: https://github.com/informalsystems/hermes/tree/master/tools/test-framework
    2. We provide support to networks who test with Hermes in their CI/CD, for example Gaia E2E tests or Osmosis E2E tests.
  • Security: There are no established security practices specifically for Hermes. Please direct your security reports to the IBC-go repository or see the "Who" section below.

    • Note: The disclosure log documents problems we have uncovered while specifying and implementing Hermes. Some of the cases recorded there might have been fixed.

Tech debt

Planned work

Onboarding material

  • If you are a Hermes user: Checkout the user guide
  • If you are a external contributor seeking to develop Hermes feature or fork: See these excellent tutorials on IBC.
  • If you are an Informal employee: See here.
  • Contributor guideline: contributing.md

Contact information

  • Product owner: Adi Seredinschi @adizere.
  • If you are a Hermes user: Please find a community of Hermes users on the IBC Gang Discord server here.
  • For general inquiries with Informal: Please get in touch with us at [email protected].