Skip to main content

Restoring IBC Channel

IBC channels rely on client states to maintain synchronization. If no transactions are relayed for an extended period, the client state may expire due to inactivity or configuration parameters like trusting_period and max_clock_drift. Once expired, the channel becomes non-functional and requires restoration through governance processes.

Requirements

Ensure Hermes is configured and working.

Informations Needed

To restore the IBC channel, we need the client ID, connection ID, and channel ID. These can be found here https://ping.pub/sentinel/ibc/connection/connection-33

For example:

  • clientId = 07-tendermint-58
  • connectionId = connection-33
  • channel-id = channel-12

Step-by-Step Process

On sentinelhub-2, the client 07-tendermint-58 has expired because no relayers refreshed it. To fix this, we need to:

  • Create a new client.
  • Submit a governance proposal to update the expired client.

Note: While the proposal is for "replacing" the client, the old client will actually be updated.

Query the Existing Client

Use the following command to check the state of the old client and save the output:

hermes query client state --chain sentinelhub-2 --client 07-tendermint-58

Create a New Client

Create a new client between the chains. Save the newly created client ID from the output (e.g., 07-tendermint-208):

hermes create client --host-chain sentinelhub-2 --reference-chain cosmoshub-4

Verify the New Client

Query the new client to ensure it's correctly configured and save the output:

hermes query client state --chain sentinelhub-2 --client 07-tendermint-208

Compare the outputs of the old and new clients to verify they are identical.

Handle Configuration Issues

If the new client has a different max clock drift (or other mismatched parameters), creating the proposal may fail. For example: Failed Proposal Example

To fix this, create a new client with a custom max clock drift:

hermes create client --host-chain sentinelhub-2 --reference-chain cosmoshub-4 --clock-drift 1800s

Query and verify the new client again:

hermes query client state --chain sentinelhub-2 --client 07-tendermint-209

Submit a Governance Proposal

Once the new client matches the old one, submit a governance proposal to update the client. Run this command on a server with sentinelhub installed (not the one running Hermes):

sentinelhub tx gov submit-proposal update-client 07-tendermint-58 07-tendermint-209 --chain-id sentinelhub-2 --from validator --fees 200000udvpn --gas 2000000 --title 'Reviving DVPN <-> ATOM IBC channel' --description 'Currently, the DVPN <-> ATOM IBC channel has its client expired on Sentinel side, which blocks relaying. To fix that, we need to replace the client with the newly created one that is not expired.\n\nPlease vote YES if you agree with restoring IBC channel between Cosmos Hub and Sentinel.' --deposit 1000000udvpn

Final Steps

The proposal is now submitted with a 1 DVPN deposit. Next:

  • Put the proposal to a vote.
  • Ensure it passes to restore the IBC channel.