Merged
Conversation
damiannolan
approved these changes
Nov 28, 2025
damiannolan
left a comment
There was a problem hiding this comment.
Aligns with the write up I had in https://hackmd.io/@damian666/HkCWLNNs1g and makes sense to me. Nice to finally see this put into action.
Key part being the lightclient update at H + 1 as this is where the header reflects trusted validators and they have signed NextValsHash = SequencerKey. Subsequently at H + 2 the sequencer key is the only active validator in the set.
tac0turtle
approved these changes
Nov 28, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
I noticed some odd behaviour when attempting to manually test this with a local multi chain setup and hermes.
I saw the "ibc" specific path was not actually enabled (while IBC was enabled, the migration module was not being provided with the store key)
I dug in a little more, and realised the bare minimum requirement for ibc to continue to function, is to have a
MsgUpdateClientsubmitted atH + 1whereHis the migration height.This will be the transition from N -> 1 validator, and then all future ibc transactions are accompanied by a
MsgUpdateClient.I confirmed that the test fails with
failed to verify header: cant trust new val set: invalid commit -- insufficient voting power: got 5, needed more than 8if trying to only updateH + 2or anything afterwards. There is no need to spam MsgTransfers or to perform more than a singleMsgUpdateClientThis means we can also completely remove the special handling for ibc and perform the migration the same way no matter what, the only important thing is
MsgUpdateClientat heightH+1