pallet_grandpa/migrations/
v4.rs1use crate::LOG_TARGET;
19use frame_support::{
20 traits::{Get, StorageVersion},
21 weights::Weight,
22};
23use sp_io::hashing::twox_128;
24
25pub const OLD_PREFIX: &[u8] = b"GrandpaFinality";
27
28pub fn migrate<T: crate::Config, N: AsRef<str>>(new_pallet_name: N) -> Weight {
36 if new_pallet_name.as_ref().as_bytes() == OLD_PREFIX {
37 log::info!(
38 target: LOG_TARGET,
39 "New pallet name is equal to the old prefix. No migration needs to be done.",
40 );
41 return Weight::zero()
42 }
43 let storage_version = StorageVersion::get::<crate::Pallet<T>>();
44 log::info!(
45 target: LOG_TARGET,
46 "Running migration to v3.1 for grandpa with storage version {:?}",
47 storage_version,
48 );
49
50 if storage_version <= 3 {
51 log::info!("new prefix: {}", new_pallet_name.as_ref());
52 frame_support::storage::migration::move_pallet(
53 OLD_PREFIX,
54 new_pallet_name.as_ref().as_bytes(),
55 );
56
57 StorageVersion::new(4).put::<crate::Pallet<T>>();
58
59 <T as frame_system::Config>::BlockWeights::get().max_block
60 } else {
61 Weight::zero()
62 }
63}
64
65pub fn pre_migration<T: crate::Config, N: AsRef<str>>(new: N) {
70 let new = new.as_ref();
71 log::info!("pre-migration grandpa test with new = {}", new);
72
73 let next_key = sp_io::storage::next_key(&twox_128(OLD_PREFIX)).unwrap();
75 assert!(next_key.starts_with(&twox_128(OLD_PREFIX)));
76
77 let storage_key = StorageVersion::storage_key::<crate::Pallet<T>>();
79
80 assert!(
82 sp_io::storage::next_key(&twox_128(new.as_bytes())).map_or(
83 true,
85 |next_key| {
88 !next_key.starts_with(&twox_128(new.as_bytes())) || next_key == storage_key
89 },
90 ),
91 "unexpected next_key({}) = {:?}",
92 new,
93 sp_core::hexdisplay::HexDisplay::from(
94 &sp_io::storage::next_key(&twox_128(new.as_bytes())).unwrap()
95 ),
96 );
97 assert_eq!(StorageVersion::get::<crate::Pallet<T>>(), 3);
99}
100
101pub fn post_migration() {
106 log::info!("post-migration grandpa");
107
108 assert!(sp_io::storage::next_key(&twox_128(OLD_PREFIX))
110 .map_or(true, |next_key| !next_key.starts_with(&twox_128(OLD_PREFIX))));
111}