This repository has been archived by the owner on Nov 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Westend state trie to version 1 #6336
Merged
paritytech-processbot
merged 15 commits into
paritytech:master
from
cheme:westend-migration
Jan 11, 2023
Merged
Changes from 13 commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
a6b43bd
Switch to state V1 and add state-trie-migration pallet with dummy manual
cheme 98eb976
Initialize limit on runtime upgrade.
cheme 6dda492
add prelude
cheme 0d01e51
sp_std prelude only for no_std
cheme a94fc6a
Disable filter for signed migration
cheme e9c4cdf
revert hex dep
cheme 21c9093
use NeverEnsureOrigin
cheme 1b1ed4a
Merge branch 'master' into westend-migration
cheme 93a70d0
Merge branch 'master' into westend-migration
cheme 9b75e96
fix
cheme f9c7796
correct fix
cheme 84416a8
Merge remote-tracking branch 'origin/master' into westend-migration
24ede00
check init state in try-runtime
cheme b48585c
Merge branch 'master' into westend-migration
cheme 99ed695
Merge branch 'master' into westend-migration
cheme File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -116,7 +116,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { | |
#[cfg(feature = "disable-runtime-api")] | ||
apis: sp_version::create_apis_vec![[]], | ||
transaction_version: 15, | ||
state_version: 0, | ||
state_version: 1, | ||
}; | ||
|
||
/// The BABE epoch configuration at genesis. | ||
|
@@ -1086,6 +1086,26 @@ impl pallet_nomination_pools::Config for Runtime { | |
type MaxPointsToBalance = MaxPointsToBalance; | ||
} | ||
|
||
parameter_types! { | ||
// The deposit configuration for the singed migration. Specially if you want to allow any signed account to do the migration (see `SignedFilter`, these deposits should be high) | ||
pub const MigrationSignedDepositPerItem: Balance = 1 * CENTS; | ||
pub const MigrationSignedDepositBase: Balance = 20 * CENTS * 100; | ||
pub const MigrationMaxKeyLen: u32 = 512; | ||
} | ||
|
||
impl pallet_state_trie_migration::Config for Runtime { | ||
type RuntimeEvent = RuntimeEvent; | ||
type Currency = Balances; | ||
type SignedDepositPerItem = MigrationSignedDepositPerItem; | ||
type SignedDepositBase = MigrationSignedDepositBase; | ||
type ControlOrigin = EnsureRoot<AccountId>; | ||
type SignedFilter = frame_support::traits::NeverEnsureOrigin<AccountId>; | ||
|
||
// Use same weights as substrate ones. | ||
type WeightInfo = pallet_state_trie_migration::weights::SubstrateWeight<Runtime>; | ||
type MaxKeyLen = MigrationMaxKeyLen; | ||
} | ||
|
||
construct_runtime! { | ||
pub enum Runtime where | ||
Block = Block, | ||
|
@@ -1154,6 +1174,9 @@ construct_runtime! { | |
// Fast unstake pallet: extension to staking. | ||
FastUnstake: pallet_fast_unstake = 30, | ||
|
||
// State trie migration pallet, only temporary. | ||
StateTrieMigration: pallet_state_trie_migration = 35, | ||
|
||
// Parachains pallets. Start indices at 40 to leave room. | ||
ParachainsOrigin: parachains_origin::{Pallet, Origin} = 41, | ||
Configuration: parachains_configuration::{Pallet, Call, Storage, Config<T>} = 42, | ||
|
@@ -1215,6 +1238,7 @@ impl Get<&'static str> for StakingMigrationV11OldPallet { | |
pub type Migrations = ( | ||
pallet_balances::migration::MigrateToTrackInactive<Runtime, xcm_config::CheckAccount>, | ||
crowdloan::migration::MigrateToTrackInactive<Runtime>, | ||
init_state_migration::InitMigrate, | ||
); | ||
|
||
/// Unchecked extrinsic type as expected by this runtime. | ||
|
@@ -1835,3 +1859,46 @@ mod remote_tests { | |
ext.execute_with(|| Runtime::on_runtime_upgrade()); | ||
} | ||
} | ||
|
||
mod init_state_migration { | ||
use super::Runtime; | ||
use frame_support::traits::OnRuntimeUpgrade; | ||
use pallet_state_trie_migration::{AutoLimits, MigrationLimits, MigrationProcess}; | ||
#[cfg(not(feature = "std"))] | ||
use sp_std::prelude::*; | ||
|
||
/// Initialize an automatic migration process. | ||
pub struct InitMigrate; | ||
impl OnRuntimeUpgrade for InitMigrate { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will you put this into Substrate for future use or always copy&paste? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. More copy&paste, I mean this is specific to the migration strategy of the chain. |
||
#[cfg(feature = "try-runtime")] | ||
fn pre_upgrade() -> Result<Vec<u8>, &'static str> { | ||
frame_support::ensure!( | ||
AutoLimits::<Runtime>::get().is_none(), | ||
"Automigration already started." | ||
); | ||
Ok(Default::default()) | ||
ggwpez marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
|
||
fn on_runtime_upgrade() -> frame_support::weights::Weight { | ||
if MigrationProcess::<Runtime>::get() == Default::default() && | ||
AutoLimits::<Runtime>::get().is_none() | ||
{ | ||
AutoLimits::<Runtime>::put(Some(MigrationLimits { item: 160, size: 204800 })); | ||
log::info!("Automatic trie migration started."); | ||
<Runtime as frame_system::Config>::DbWeight::get().reads_writes(2, 1) | ||
} else { | ||
log::info!("Automatic trie migration not started."); | ||
<Runtime as frame_system::Config>::DbWeight::get().reads(2) | ||
} | ||
} | ||
|
||
#[cfg(feature = "try-runtime")] | ||
fn post_upgrade(_state: Vec<u8>) -> Result<(), &'static str> { | ||
frame_support::ensure!( | ||
AutoLimits::<Runtime>::get().is_some(), | ||
"Automigration started." | ||
); | ||
Ok(()) | ||
} | ||
} | ||
} |
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have sudo on westend. We can set any of these manually as well FYI.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In fact, I think it is better to start it manually via sudo than bundling it with the migration.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would like it to run the exact same way as it will be on kusama and polkadot, so without sudo