We assume that you already have access to Secret and Osmosis nodes (preferably with 21 days of archive and under your own maintentance). These can be either local nodes, or you can access them over the network. However, for networked version, you will need to adjust the systemd configuration not to depend on the chains that are run on other servers. And naturally the hermes configuration needs to adjust the addressing of each chain as well. All nodes should be ran on the same machine, using NVMe drives.
The nodes you use should have the GRPC and Websocket ports open/enabled
The given example has all relayed chains run locally, Secret is on standard ports, other chains are configured as follows:
Secret: 26657 and 9090
Osmosis: 26557 and 9091
In these instructions, Hermes is installed under /ibc/hermes
, adjust the paths according to your setup. We also install the Go relayer.
These instructions are based on installation on Debian 10, but should work the same on Debian 11 or recent Ubuntu.
--> RLY installation
There is a group for active Secret Relayers to learn and work together on maintenance. Please contact @Ertemann on telegram if you would like to be added and contribute. You can also contact us there if you want us to setup a channel for your network, Wasm project, Flush stuck packets etc.
The configuration of Hermes is slightly more involved and has a less intuitive system to pull additional config items from the chain registry as it only replaces and not adds to your config. The allowlist of hermes however is very handy to specify exactly what you want to relay, so as soon as chains are configured adding more channels is a breeze.
Hermes has some problems relaying Wasm channels and startup time can increase a lot if a lot of channels are added using wildcard operators in the config.
The Hermes docs themselves are outstanding and the API utillities in the program allow you to do a lot without ever needing to install the Daemon for any specific chain.
Hermes requires a Grpc and WS endpoint which can be hard to get, especially if relaying with public nodes. their new pull mode helps to reduce this to just RPC though.
Hermes has features to keep Clients of IBC conenctions alive and the Flushing commands work great even when automised. Hermes is also the only software that supports external fee-grants.
Anecdotally many relayers have said it performs really well, this seems to be specifically the case for ICA and ICQ channels. Adding to that a very intuitive Config which can be added to using 2 simple commands and a PR to the chain registry and it has become quite popular. RLY uses connection based relaying, which means adding config for a connection between 2 chains is a little more work. When added however ALL channels using those clients and connections are relayed meaning no additional config changes when Teams add ICA, ICQ or WASM channels. RLY uses just RPC which makes it a great lightweight version to configurate for a testnet if needed and also simple for mainnet.
Relayers client update tools and flushing automation are very helpful and set up by default however more detailed configs are available if needed. That together with the Commands requiring simple naming (chain registry conventions) instead of chain-ids and Channel numbers makes using the software for maintenance very enjoyable.
The docs of RLY however are quite poor, and although it has a very advanced Fee-grant splitter feature it currently does not support adding fee-grants from addresses not controlled by the relayer themselves.
Official documentation: https://hermes.informal.systems/documentation
You will need rust, build-essential and git installed to follow these instructions:
For preparation, we will create a dedicated user to run Hermes. Following command will also create home directory for the new user.
We will next switch to the hermes user and create a directory where we will compile the relayer software.Open the generated ~/.relayer/config/config.yaml file,
Now is time to clone the source repository and build it. Note that we need to checkout the latest release.
Next we will check that the newly built hermes version is the correct one:
Choose your favourite editor and edit the following configuration template to mach your setup. There are features like telemetry and rest API that you can enable, but they are not necessary, so they are left out from this tutorial.
Open config
Edit the config
Want to relay for all/more existing connections on secret? -- check the channel database
You can validate the configuration with following:
We will need to create a new wallet, import it, and ultimately fund it. Note the unique derivation paths for secret.
If you want to make sure the keys got imported, you can check them with following command:
Let's do a quick test to see things work properly.
Validate your ~/.hermes/config.toml
file by running:
Perform a health check:
You should see a similar output as the one below:
Once we see things load up correctly and there are no fatal errors, we can break out of hermes with ctrl-c.
Now we will setup hermes to be run by systemd, and to start automatically on reboots.
Create the following configuration to /etc/systemd/system/hermes.service
Then we will start hermes with the newly created service and enable it. Note that this step is done from your normal user account that has sudo privileges, so no longer as hermes.
Make sure you have installed go.
Clone the repository, checkout the latest stable release and install rly
Run the following command to initialize the configuration in ~/.relayer/config/config.yaml
To set up the RLY config file You can add the respective channels and chains using the Chain registry queries:
Or open the generated ~/.relayer/config/config.yaml file,
and copy-paste the sample configuration below and adjust it to point to the RPC endpoints of your Secret and Osmosis full nodes:
Now you need to add a new key for your relayer or import an existing one to use to sign and relay IBC transactions. Adding a new key happens with the following command:
If you already have a private key and want to restore it from your mnemonic you can use the restore subcommand.
If you specify a different [key-name] from default you would need to edit the config.yaml and change the key parameter value to the label that you’ve chosen.
If your nodes are fully synced, feel free to start the rly daemon:
Official documentation:
All Chains and their respective IBC channels with Secret Network are listed below
Secret
-
-
-
-
-
-
-
secret1yvejj22t78s2vfk7slty2d7fs5lkc8rn3w9mcq
secret1czy3ak7s26sajcr99cyzfd2l75rprjxlkw4n6t
-
secret1q5uvvkg0wp94hpnc8argyjr9ldgqyuty86r68v
secret1xl46gc2w3yl03vm675atstapyc7a3wajlg37me
secret19r27uswt23nr68tp5pfxzcguatd6k5jjp6ssnw
secret1774dxw23f92z9s4ugcnnd9k590l456x2hdzluy
secret19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqyd3shc secret1l267dmlmprhu4p5aqslf50f495vjqlg3l37d0h secret19pjtx7dah2fquf7udyxjv94h0eraha788n9h54
secret1v29569qjca5uda5nsrvkfmlj93tv869ks2ajcq
secret1xpgjd2akpc8gmwez25keftpmlgs4aa3un463s7
-
Osmosis
1
88
transfer
07-tendermint-2
osmosis-1
07-tendermint-1588
Live
osmo1yvejj22t78s2vfk7slty2d7fs5lkc8rnmszznw
osmo18xrruhq5r246mwk0yj9elnn3mte8xa9ugwga6w
-
-
-
osmo1fdtz9rl0d8yvd0e3np74gj5an3r39l99fk5a27
-
osmo19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqwnkfuk
-
osmo1ryq6zncdxpdnnwhn9h24ar48ap9zkqgl3xl6u7
-
Osmosis
44
476
wasm.secret1tqmms5awftpuhalcv5h5mg76fa0tkdz4jv9ex4
07-tendermint-2
osmosis-1
07-tendermint-1588
Live
osmo1yvejj22t78s2vfk7slty2d7fs5lkc8rnmszznw
osmo18xrruhq5r246mwk0yj9elnn3mte8xa9ugwga6w
-
-
-
osmo1fdtz9rl0d8yvd0e3np74gj5an3r39l99fk5a27
-
osmo19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqwnkfuk
-
osmo1ryq6zncdxpdnnwhn9h24ar48ap9zkqgl3xl6u7
-
Terra
16
3
transfer
07-tendermint-38
phoenix-1
07-tendermint-4
Live
terra1yvejj22t78s2vfk7slty2d7fs5lkc8rn40tj8u
-
-
terra14cpqjy6tfryrqlwyycyy7hca5uzrdyqh0leked
-
terra13d40wvew03h7h6rgzy3fn66ue8xyfgkv752wf6
-
-
-
-
-
Cosmos Hub
0
235
transfer
07-tendermint-1
cosmoshub-4
07-tendermint-492
Live
cosmos1yvejj22t78s2vfk7slty2d7fs5lkc8rnnt3j9u
cosmos18xrruhq5r246mwk0yj9elnn3mte8xa9uq4mdvu
cosmos1mjq48r6435aewerpruwc8up3tz3rzan2ve7hp4
-
-
cosmos1fdtz9rl0d8yvd0e3np74gj5an3r39l99pd8duv
-
cosmos19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqxg9e2y
-
cosmos1ryq6zncdxpdnnwhn9h24ar48ap9zkqgleav22v
-
Sentinel
3
50
transfer
07-tendermint-14
sentinelhub-2
Live
-
-
sent1mjq48r6435aewerpruwc8up3tz3rzan2hzgw96
-
-
sent1fdtz9rl0d8yvd0e3np74gj5an3r39l996k35cr
-
-
sent1jct5gn7gpknl0kmqkm3agfwxm2mmtekwc9qkl0
sent1ryq6zncdxpdnnwhn9h24ar48ap9zkqglzx6nwr
-
Juno
8
48
transfer
07-tendermint-23
juno-1
07-tendermint-108
Live
juno1yvejj22t78s2vfk7slty2d7fs5lkc8rn9ejfzq
juno18xrruhq5r246mwk0yj9elnn3mte8xa9uk8cktq
juno1mjq48r6435aewerpruwc8up3tz3rzan26tavxf
-
-
-
-
juno19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqs6xzdc
-
juno1ryq6zncdxpdnnwhn9h24ar48ap9zkqgl0003ds
-
Juno
45
163
wasm.secret1tqmms5awftpuhalcv5h5mg76fa0tkdz4jv9ex4
07-tendermint-23
juno-1
07-tendermint-108
Live
juno1yvejj22t78s2vfk7slty2d7fs5lkc8rn9ejfzq
juno18xrruhq5r246mwk0yj9elnn3mte8xa9uk8cktq
juno1mjq48r6435aewerpruwc8up3tz3rzan26tavxf
-
-
-
-
juno19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqs6xzdc
-
juno1ryq6zncdxpdnnwhn9h24ar48ap9zkqgl0003ds
-
Juno
40
161
transfer
07-tendermint-23
juno-1
07-tendermint-108
Live
juno1yvejj22t78s2vfk7slty2d7fs5lkc8rn9ejfzq
juno18xrruhq5r246mwk0yj9elnn3mte8xa9uk8cktq
juno1mjq48r6435aewerpruwc8up3tz3rzan26tavxf
-
-
-
-
juno19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqs6xzdc
-
juno1ryq6zncdxpdnnwhn9h24ar48ap9zkqgl0003ds
-
Chihuahua
11
16
transfer
07-tendermint-27
chihuahua-1
07-tendermint-70
Live
chihuahua15md2qvgma8lnvqv67w0umu2paqkqkheg6l5zfa
chihuahua18xrruhq5r246mwk0yj9elnn3mte8xa9urqkrd7
chihuahua1mjq48r6435aewerpruwc8up3tz3rzan20vneqh
-
-
-
-
chihuahua19kzuzfmmy9wjr3cl0ss8wjzjup9g49hq9aghtx
-
chihuahua1ryq6zncdxpdnnwhn9h24ar48ap9zkqgl6gpytw
-
Sifchain
15
65
transfer
07-tendermint-37
sifchain-1
-
Dead
-
-
sif1mjq48r6435aewerpruwc8up3tz3rzan2fy3pw7
-
-
sif1fdtz9rl0d8yvd0e3np74gj5an3r39l99ysgmn8
-
-
-
-
-
Stargaze
19
48
transfer
07-tendermint-43
stargaze-1
-
Live
stars15md2qvgma8lnvqv67w0umu2paqkqkhegdkw3rw
-
stars1mjq48r6435aewerpruwc8up3tz3rzan2c9f22y
-
-
-
-
-
-
stars1ryq6zncdxpdnnwhn9h24ar48ap9zkqgldpmhpa
-
Gravity bridge
17
79
transfer
07-tendermint-40
gravity-bridge-3
07-tendermint-140
Live
gravity1yvejj22t78s2vfk7slty2d7fs5lkc8rnhmr2q5
gravity18xrruhq5r246mwk0yj9elnn3mte8xa9uy9f4f5
gravity1mjq48r6435aewerpruwc8up3tz3rzan2gfv0ya
-
-
-
-
gravity19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqzchp0v
-
-
-
Terra Classic
2
16
transfer
-
-
-
Dead
-
-
-
-
-
-
-
-
-
-
-
Evmos
18
15
transfer
07-tendermint-42
evmos_9001-2
07-tendermint-50
Live
evmos1je8d8g73zrmp79fugdm3gn0a326ar5php3ll8j
evmos1mx070d26eu5trde862pfl6gaqmzlcj9959gw86
evmos175l97fdm2a6x5xp82psec52elzu8nsl7dmc7an
-
-
evmos1t397gn7rdpxk07nj79zcy3pdz2zyqqfzseg07k
-
evmos1hc23n29r9q54hqqfn8hqagh4tft6tcsvekkacr
-
evmos1jszj9xyh2eh8lx25u88rsv7hmsytvwsvtj7e3l
Akash
21
43
transfer
07-tendermint-47 ( NEW: 07-tendermint-122)
akashnet-2
07-tendermint-102
Live
akash18xrruhq5r246mwk0yj9elnn3mte8xa9udwk24x
akash1mjq48r6435aewerpruwc8up3tz3rzan2pznsc0
-
-
akash1fdtz9rl0d8yvd0e3np74gj5an3r39l99vk229k
-
-
-
-
-
Injective
23
88
transfer
07-tendermint-49
injective-1
07-tendermint-126
Live
-
inj1mx070d26eu5trde862pfl6gaqmzlcj99udwy02
inj1mjq48r6435aewerpruwc8up3tz3rzan2xsfnnd
inj12qsz2ks3c88knmdg70naeu8xap6reeex9vyjg6
-
inj1t397gn7rdpxk07nj79zcy3pdz2zyqqfzc3w9kx
-
-
-
inj1jszj9xyh2eh8lx25u88rsv7hmsytvwsvr6cne0
-
Axelar
20
12
transfer
07-tendermint-44
axelar-dojo-1
07-tendermint-40
Live
-
axelar18xrruhq5r246mwk0yj9elnn3mte8xa9uymd98a
axelar1mjq48r6435aewerpruwc8up3tz3rzan2ghgl25
-
-
-
-
axelar19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqzxn3p9
-
axelar1ryq6zncdxpdnnwhn9h24ar48ap9zkqglan6zpd
axelar1q9rk7gtlepjkn6a4ea8cc097u7ezqa2mtq3ruk
Axelar
61
69
wasm.secret1yxjmepvyl2c25vnt53cr2dpn8amknwausxee83
07-tendermint-120
axelar-dojo-1
07-tendermint-103
Live
-
axelar18xrruhq5r246mwk0yj9elnn3mte8xa9uymd98a
axelar1mjq48r6435aewerpruwc8up3tz3rzan2ghgl25
-
-
-
-
axelar19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqzxn3p9
-
axelar1ryq6zncdxpdnnwhn9h24ar48ap9zkqglan6zpd
axelar1q9rk7gtlepjkn6a4ea8cc097u7ezqa2mtq3ruk
Kujira
22
10
transfer
07-tendermint-48
kaiyo-1
07-tendermint-12
Live
kujira15md2qvgma8lnvqv67w0umu2paqkqkheggzm594
kujira1gptmp9zhjgzgjkpvqpza3gfgdgjl72etl8kzd0
kujira1mjq48r6435aewerpruwc8up3tz3rzan2a3u0vl
kujira1670dvuv348eynr9lsmdrhqu3g7vpmzx9ma654e
-
-
-
kujira1l267dmlmprhu4p5aqslf50f495vjqlg3vugulp
-
kujira1ryq6zncdxpdnnwhn9h24ar48ap9zkqglg4wj8x
-
Kujira
46
44
wasm.secret1tqmms5awftpuhalcv5h5mg76fa0tkdz4jv9ex4
07-tendermint-48
kaiyo-1
07-tendermint-12
Live
kujira15md2qvgma8lnvqv67w0umu2paqkqkheggzm594
kujira1gptmp9zhjgzgjkpvqpza3gfgdgjl72etl8kzd0
kujira1mjq48r6435aewerpruwc8up3tz3rzan2a3u0vl
kujira1670dvuv348eynr9lsmdrhqu3g7vpmzx9ma654e
-
-
-
kujira1l267dmlmprhu4p5aqslf50f495vjqlg3vugulp
-
kujira1ryq6zncdxpdnnwhn9h24ar48ap9zkqglg4wj8x
-
Crescent
24
10
transfer
07-tendermint-53
crescent-1
-
Dead
-
-
cre1mjq48r6435aewerpruwc8up3tz3rzan2g3dj5c
-
cre1l4vzv9tsk7mfse52g973tenrvpza0fhqgls88k
-
-
-
-
-
-
OKC
36
27
transfer
07-tendermint-74
-
-
Dead
-
-
ex1mjq48r6435aewerpruwc8up3tz3rzan2ysgjgz
-
-
-
-
-
-
-
-
Stride
37
40
transfer
07-tendermint-75
stride-1
07-tendermint-37
Live
-
stride18xrruhq5r246mwk0yj9elnn3mte8xa9ur7m3cs
stride1mjq48r6435aewerpruwc8up3tz3rzan20j7t4e
stride1670dvuv348eynr9lsmdrhqu3g7vpmzx9f7csvl
-
-
-
stride1l267dmlmprhu4p5aqslf50f495vjqlg37l2cx8
-
stride1ryq6zncdxpdnnwhn9h24ar48ap9zkqgl6kvk7q
-
Comdex
47
44
transfer
07-tendermint-93
comdex-1
07-tendermint-82
Live
comdex18xrruhq5r246mwk0yj9elnn3mte8xa9u86e04t
comdex1mjq48r6435aewerpruwc8up3tz3rzan2tku4cz
-
-
-
-
-
-
-
-
Comdex (New)
63
65
transfer
07-tendermint-125
comdex-1
07-tendermint-142
Live
-
comdex18xrruhq5r246mwk0yj9elnn3mte8xa9u86e04t
-
-
-
-
-
comdex19kzuzfmmy9wjr3cl0ss8wjzjup9g49hqp88mnn
-
comdex1ryq6zncdxpdnnwhn9h24ar48ap9zkqgl7jwgnm
-
Agoric
51
10
transfer
07-tendermint-111
agoric-3
07-tendermint-17
Live
agoric18dswkgr8xlw3jjpunzsxqm5z9u5v8m70wwvep5
-
-
agoric1w5rhcd877s59ukasw2qyp0vz7h7zg77qy7v8y3
-
-
-
agoric1kajhwxl7lelxmvq5eve4scayh5jdchtdytjca4
-
-
Migaloo
57
4
transfer
07-tendermint-116
migaloo-1
07-tendermint-6 (NEW: 07-tendermint-35)
Live
-
-
-
migaloo1wqp8yslqh2mdvxzgljsde8wu6nyjp4qymq3zme
-
-
-
-
-
-
-
Persistence
64
82
transfer
07-tendermint-126
core-1
07-tendermint-106
Live
-
-
-
-
-
-
-
persistence1l267dmlmprhu4p5aqslf50f495vjqlg3ncvhu0
-
-
-
Jackal
62
2
transfer
07-tendermint-124
jackal-1
07-tendermint-6
Live
-
jkl18xrruhq5r246mwk0yj9elnn3mte8xa9uet4u4r
-
-
-
-
-
-
jkl1jct5gn7gpknl0kmqkm3agfwxm2mmtekw6qc7zl
jkl1ryq6zncdxpdnnwhn9h24ar48ap9zkqglqrzmnn
-
Quicksilver
65
52
transfer
07-tendermint-138
quicksilver-2
07-tendermint-28
Live
-
quick18xrruhq5r246mwk0yj9elnn3mte8xa9ut3tl4w
-
-
-
-
-
quick1l267dmlmprhu4p5aqslf50f495vjqlg3ks6kte
-
-
-
Composable
80
14
transfer
07-tendermint-166
Centauri-1
07-tendermint-52
Live
-
-
-
-
-
-
-
-
-
-
-
Composable
83
26
wasm.secret1tqmms5awftpuhalcv5h5mg76fa0tkdz4jv9ex4
07-tendermint-166
Centauri-1
07-tendermint-52
Live
-
-
-
-
-
-
-
-
-
-
-
Noble
88
17
transfer
07-tendermint-170
noble-1
07-tendermint-24
Live
-
noble18xrruhq5r246mwk0yj9elnn3mte8xa9ugkw95j
-
-
-
-
-
-
-
-
-
dYdX
89
2
transfer
07-tenderint-171
dydx-mainnet-1
o7-tendermint-2
Live
-
-
-
-
-
-
-
-
-
-
-
Archway
84
21
transfer
07-tendermint-169
archway-1
07-tendermint-24
Live
-
-
-
-
-
-
-
-
-
-
-
Archway
90
39
wasm.secret1tqmms5awftpuhalcv5h5mg76fa0tkdz4jv9ex4
07-tendermint-169
archway-1
07-tendermint-24
Live
-
-
-
-
-
-
-
-
-
-
-
Celestia
91
14
transfer
07-tendermint-174
celestia
07-tendermint-52
Live
-
-
-
-
-
-
-
-
-
-
-