AllowUpdateAfterExpiry and AllowUpdateAfterMisbehavior have been deprecated, and will both be set to false upon upgrades even if they were previously set to true. These parameters will no longer play a role in restricting a client upgrade. Please see ADR026 for more details.
How to recover an expired client with a governance proposal
See also the relevant documentation: ADR-026, IBC client recovery mechanismsWho is this information for? Although technically anyone can submit the governance proposal to recover an expired client, often it will be relayer operators (at least coordinating the submission).
Preconditions
- There exists an active client (with a known client identifier) for the same counterparty chain as the expired client.
- 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
Anyone can submit the governance proposal to recover the client by executing the following via CLI. If the chain is on an ibc-go version older than v8, please see the relevant documentation.-
From ibc-go v8 onwards
where
proposal.jsoncontains:
<expired-client-id> identifier is the proposed client to be updated. This client must be either frozen or expired.
The <active-client-id> represents a substitute client. It carries all the state for the client which may be updated. It must have identical client and chain parameters to the client which may be updated (except for latest height, frozen height, and chain ID). It should be continually updated during the voting period.
After this, all that remains is deciding who funds the governance deposit and ensuring the governance proposal passes. If it does, the client on trial will be updated to the latest state of the substitute.