-
Notifications
You must be signed in to change notification settings - Fork 323
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support non IBC upgrade genesis restarts #1152
Comments
Hi, I have encountered this same issue in the context of building a testnet for Interchain Security. The steps to reproduce the issue:
Note that sometime the relayer has to be restarted using |
Closes: #1152 This PR adds two optional flags to the `hermes update client` command which allow the update to retrieve blocks from a separate Node when updating a client. The two flags are: * `--archive-address` * `--restart-height` If one of the flags is set, the other must also be set. ## Testing It is possible to test this solution using the branch `luca_joss/setup-with-gm` from the forked repo, https://github.com/ljoss17/ICS-testnet/tree/main, with the following instructions: https://github.com/ljoss17/ICS-testnet/blob/luca_joss/setup-with-gm/docker/TEST_RESTART.md --------- * WIP: adding a new flag to specify an address when updating client using CLI * Add a flag to specify halted height * Add documentation related to genesis restart without IBC upgrade proposal * Improved address selection when 'archive-address' is given * Handle case where the light client needs to do bisection across the restart height (#3227) * Rename 'halted-height' to 'restart-height' * Add unclog entry --------- Co-authored-by: Romain Ruetschi <romain@informal.systems>
@colin-axner @sainoe @adizere Should you ever run into this again, we now added two new flags to
Hermes will then use the archive node to fetch blocks below 1101 and the live node for the blocks at and above 1101, which enables it to update the client across the restart height. |
Thank you @romac! This is so cool! Thanks y'all for your work 🙏 |
Crate
relayer
Summary
When a chain undergoes a genesis restart which does not utilize an IBC upgrade proposal, the chain history will be reset. Hermes will attempt to get the trusted header after the restart, but it was erased during the genesis restart:
Problem Definition
While using in process upgrades are ideal, chains will still opt for genesis restarts from time to time. Not all of these restarts will require an IBC upgrade. This is a bit of an edge case scenario, but if it does occur then it'd be a pain to try to fix live since it would need to be fixed before the client expires
Proposal
I'm not sure what the best solution is. Short term patches might include creating a genesis restart specific command to update a client by querying a node which hasn't been reset for the trusted header. Alternatively there could be a command to rely on historical entries, but these might be pruned after 24 hours. The best solution would likely rely on a cache of old headers. I think the trusted header must have been referenced at some point in the past to update the client. Maybe keeping this header around could be the solution, but I imagine this might be a larger change.
I mostly wanted to open this issue as food for thought in case there are other ongoing structural changes that might allow for this to be handled smoothly
Acceptance Criteria
Hermes can update clients after non IBC upgrade genesis restarts
For Admin Use
The text was updated successfully, but these errors were encountered: