IBC Relayer
Running an IBC relayer for Nomic works mostly the same as with other Cosmos chains, but with a few caveats:
Currently, Nomic is only compatible with Hermes and does not support the ibc-go relayer.
Hermes must be configured with a custom proof spec. Please see the example configuration below.
1. Configure Hermes
Here's an example Hermes configuration relaying between a local Nomic and Osmosis node:
The proof_specs
and event_source
fields for Nomic are the main differences to note for those otherwise familiar with IBC relaying with Hermes.
Please refer to the Hermes docs for more information.
2. Run gRPC server
Nomic features a gRPC server to support IBC relaying, which implements only the minimum set of gRPC methods required by Hermes. The server does not run by default, and must be run in a separate process with:
or:
3. Fund relayer with nBTC
Fees for IBC transactions are paid with nBTC (1 sat per tx). After you've configured your relayer, you'll need to fund its Nomic account (hermes keys list --chain nomic-stakenet-3
to see the address) with nBTC.
4. (Optional) Relay operator keys
To ensure that nBTC is recoverable by the remote chain's validator set in the event of an Emergency Disbursal, run:
This command may be re-run anytime to refresh the operator keys of the remote chain's validator set. If an Emergency Disbursal occurs on Nomic, a portion of the Bitcoin reserves equal to the nBTC held in channels backed by the specified client will become spendable by 2/3+ of the voting power of that network's top 30 validators.
Other notes
Below are a couple other notes to keep in mind, given Nomic's custom IBC implementation.
Channel ports
For channels supporting token transfers, the Nomic channel port must be transfer
. ICS 20 is the only application-layer standard currently supported by Nomic:
Manual clearing
Typically, the main Hermes process (hermes start
) will properly relay packets between Nomic and its counterparty. However, if it seems like an event has been missed by Hermes, packets can be manually cleared (bidirectionally) with:
Last updated