🌁IBC (HERMES)
Hermes is a Cosmos internetwork relay built on Rust. In simple words, it is a communication protocol between blockchains. The relay is a central element in the IBC network architecture and provides the extraction and collection of information from networks (blockchains) that cannot directly send messages to each other. Read more about Hermes here - https://hermes.informal.systems/index.html
Hermes is not the only implementation of cosmos relays, for example, there are also ibc-go and ts-relayer, but it is Hermes that has gained popularity and is the choice of most norunners This guide will set up a relayer between Teritori Osmosis and Evmos networks
Any relayer can be installed both on 1 server along with the necessary nodes, and on a separate server, while it is not even necessary to raise your own nodes, but it is enough to know the open RPCs of the worker nodes. But since the success of relaying is highly dependent on latency and I/O rate, it is currently recommended to serve hosts on the same machine as the relaying process.
Since the relay process must be able to request the network back in height for at least 2/3 of the unbonding period (trusting period = 2/3 of the unbonding period), it is recommended to use pruning settings that will keep the full state of the chain for a longer period of time, than unbonding period
That is, 14 days from 21 or 10 days from 14 or 1.3 days from 2 days
The required pruning can be calculated using the formula 14 days * 24 * 60 * 60 / average block time
For 14 days pruning-keep-recent = 200000
For 10 days pruning-keep-recent = 150000
For 1.3 days pruning-keep-recent = 18720
For 1.5 hours pruning-keep-recent = 1000
P/s - our pruning will be 1000/0/10 (THIS IS NOT RECOMMENDED) and we will try to trick the system a bit by changing the config as follows:
misbehaviour = false
In this example, we will use 1 server, on which we will install both the nodes themselves and Hermes First of all, we need:
install the two necessary nodes and fully synchronize them. In this example, install Teritori Osmosis and Evmos
minimum-gas-prices on Osmosis set to 0; on Teritori set to 0.0001
RPCs must be open and accessible by Hermes (how to do this can be found here)
indexing should be set to indexer = "kv" (if not changed, then skip this item)
check the availability of tokens on wallets. It's best to use the same mnemonic on all networks, don't use your relay addresses for anything else, because that could lead to mismatched account sequencing errors
Hermes installation
For UBUNTU 22.04 we can download the version
For UBUNTU 20.04, build from source above # hermes 1.0.0+ed4dd8c
Hermes customization
First, let's set the variables. RPC_ADDR is taken from config.toml - GRPC_ADDR is taken from app.toml. The value 127.0.0.1 is replaced by the IP address of the server if Hermes is installed separately from the nodes. The data below is just an example!
Chain_1 (Osmosis)
Chain_2 (Teritori)
Chain_3 (Evmos)
Create a config file This file will use the variables specified above
Checking if the configuration is correct
Adding wallets to Hermes
IMPORTANT - FOR EVM networks add -hd-path "m/44'/60'/0'/0/0"
Create a service
Next, similar logs with transaction hashes should go, and the balance of wallets should begin to decrease. Transactions can also be checked in explorer. If there are such logs, then everything is set up and working.

Last updated