How to recover an expired client with a governance proposal
See also the relevant documentation: ADR-026, IBC client recovery mechanismsPreconditions
- The chain is updated with ibc-go
>=v1.1.0. - The client identifier of an active client for the same counterparty chain.
- The governance deposit.
Steps
Step 1
Check if the client is attached to the expectedchain-id. For example, for an expired Tendermint client representing the Akash chain the client state looks like this on querying the client state:
chain-id. Note that although the parameters (allow_update_after_expiry and allow_update_after_misbehaviour) exist to signal intent, these parameters have been deprecated and will not enforce any checks on the revival of client. See ADR-026 for more context on this deprecation.
Step 2
If the chain has been updated to ibc-go>= v1.1.0, anyone can submit the governance proposal to recover the client by executing this via cli:
<active-client-id> should be a client identifier on the same chain as the expired or frozen client. This client identifier should connect to the same chain as the expired or frozen client. This means: use the active client that is currently being used to relay packets between the two chains as the replacement client.
After this, it is just a question of who funds the governance deposit and if the chain in question votes yes.