Run an IBC Relayer
What is an IBC Relayer?
An IBC relayer is a software component that facilitates communication between two distinct blockchain networks that support the Inter-Blockchain Communication (IBC) protocol. The IBC protocol is a standard for the secure and reliable transfer of digital assets and data across different blockchain networks. An IBC relayer is responsible for relaying IBC packets, which are used to send messages and data between two different blockchain networks. It receives packets from one chain, verifies their authenticity and validity, and then relays them to the receiving chain.Minimum Requirements
- 8 core (4 physical core), x86_64 architecture processor
- 32 GB RAM (or equivalent swap file set up)
- 1 TB+ nVME drives
Prerequisites
Before beginning, ensure you have an Paxeer Network node running in the background of the same machine that you intend to relay on. Follow this guide to set up an Paxeer Network node if you have not already. In this guide, we will be relaying between Paxeer Network (channel-3) and Cosmos Hub (channel-292). When setting up your Paxeer Network and Cosmos full nodes, be sure to offset the ports being used in both theapp.toml and config.toml
files of the respective chains (this process will be shown below).
In this example, the default ports for Paxeer Network will be used, and the ports of the Cosmos Hub node will be manually changed.
Paxeer Network Daemon Settings
First, setgrpc server on port 9090 in the app.toml file from the $HOME/.hyperpaxd/config directory:
pprof_laddr to port 6060, rpc laddr to port 26657, and prp laddr to 26656 in the config.toml
file from the $HOME/.hyperpaxd/config directory:
Cosmos Daemon Settings
First, setgrpc server to port 9090 in the app.toml file from the $HOME/.gaiad/config directory:
pprof_laddr to port 6062, rpc laddr to port 26757, and prp laddr to 26756 in the config.toml
file from the $HOME/.gaiad/config directory:
Install Rust Dependencies
Install the following rust dependencies:Build & Setup Hermes
Create the directory where the binary will be placed, clone the hermes source repository, and build it using the latest release.config and keys directory, and copy config.toml to the config directory:
$HOME/.hermes/keys)
The best practice is to use the same mnemonic over all networks. Do not use your relaying-addresses for anything else,
because it will lead to account sequence errors.
Final Checks
Validate your hermes configuration file:health-check to see if all connected nodes are up and synced:
Helpful Commands
Query hermes for unrecieved packets and acknowledgements (ie. check if channels are “clear”) with the following:v0.12.0 and higher) with the following: