You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: modules/migrationmngr/README.md
+4-7Lines changed: 4 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -116,14 +116,11 @@ The core of the migration is handled by returning `abci.ValidatorUpdate` message
116
116
-**Removing Old Validators**: The existing validators that are not part of the new sequencer/attester set have their power reduced to `0`.
117
117
-**Adding New Participants**: The new sequencer and/or attesters are added to the consensus set with a power of `1`.
118
118
119
-
### IBC-Aware Migrations
119
+
### Migration Execution
120
120
121
-
A critical feature of the migration manager is its awareness of the Inter-Blockchain Communication (IBC) protocol. A sudden, drastic change in the validator set can cause IBC light clients on other chains to fail their verification checks, leading to a broken connection.
121
+
The migration is performed in a single, atomic step. At the migration start height, all old validators are removed, and the new sequencer/attesters are added in one atomic update.
122
122
123
-
To prevent this, the module first checks if IBC is enabled by verifying the existence of the IBC module's store key.
124
-
125
-
-**If IBC is Enabled**: The migration is "smoothed" over a period of blocks (currently `30` blocks, defined by `IBCSmoothingFactor`). In each block during this period, a fraction of the old validators are removed, and a fraction of the new attesters are added. This gradual change ensures that IBC light clients can safely update their trusted validator sets without interruption. On the first block of the migration, all validators are set to have an equal power of `1` to prevent any single validator from having a disproportionate amount of power during the transition.
126
-
-**If IBC is Not Enabled**: The migration can be performed "immediately" in a single block. All old validators are removed, and the new sequencer/attesters are added in one atomic update at the migration start height.
123
+
**Note:** IBC light client updates must be performed at height H+1 (one block after the migration) to ensure proper verification of the validator set changes.
127
124
128
125
### The Chain Halt: A Coordinated Upgrade
129
126
@@ -143,7 +140,7 @@ If you are a validator or node operator on a chain using this module, you must b
143
140
144
141
1.**Monitor Governance**: The migration will be initiated by a governance proposal. Stay informed about upcoming proposals. The proposal will define the target block height for the migration.
145
142
146
-
2.**Prepare for the Chain Halt**: Your node **will stop** at a predictable block height, calculated from the migration's start height (`block_height` in the proposal). With IBC enabled, the halt is at`block_height + 31`; without IBC, it is`block_height + 2`. This is expected. Check your node's logs for the specific "MIGRATE" error message.
143
+
2.**Prepare for the Chain Halt**: Your node **will stop** at a predictable block height, calculated from the migration's start height (`block_height` in the proposal). The halt occurs at `block_height + 2`. This is expected. Check your node's logs for the specific "MIGRATE" error message.
147
144
148
145
3.**Perform the Upgrade**: Once the chain has halted, you must perform the following steps:
149
146
a. **Install the New Binary**: You will need to replace your current node software (e.g., `gmd`) with the new version required for the rollup.
// ensure that authority is a valid account address
@@ -55,7 +48,6 @@ func NewKeeper(
55
48
authority: authority,
56
49
addressCodec: addressCodec,
57
50
stakingKeeper: stakingKeeper,
58
-
ibcStoreKey: ibcStoreKey,
59
51
Sequencer: collections.NewItem(
60
52
sb,
61
53
types.SequencerKey,
@@ -103,42 +95,12 @@ func (k Keeper) IsMigrating(ctx context.Context) (start, end uint64, ok bool) {
103
95
return0, 0, false
104
96
}
105
97
106
-
// smoothen the migration over IBCSmoothingFactor blocks, in order to migrate the validator set to the sequencer or attesters network when IBC is enabled.
0 commit comments