diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index 7b203d2e93..064132e61c 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -82,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 232, + spec_version: 233, impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/substrate/frame/balances/src/migration.rs b/substrate/frame/balances/src/migration.rs index d50f916b31..4412a38ca1 100644 --- a/substrate/frame/balances/src/migration.rs +++ b/substrate/frame/balances/src/migration.rs @@ -68,15 +68,20 @@ fn upgrade_v1_to_v2, I: Instance>() { put_storage_value(b"Balances", b"Account", &hash, account); } + let prefix = { + let encoded_prefix_key_hash = b":session:keys".to_vec().encode(); + let mut h = twox_64(&encoded_prefix_key_hash[..]).to_vec(); + h.extend(&encoded_prefix_key_hash[..]); + h + }; + for (hash, balances) in StorageIterator::>::new(b"Balances", b"Account").drain() { let nonce = take_storage_value::(b"System", b"AccountNonce", &hash).unwrap_or_default(); let mut refs: system::RefCount = 0; // The items in Kusama that would result in a ref count being incremented. if have_storage_value(b"Democracy", b"Proxy", &hash) { refs += 1 } // We skip Recovered since it's being replaced anyway. - let k = b":session:keys".encode(); - let mut prefixed_hash = twox_64(&k[..]).to_vec(); - prefixed_hash.extend(&k[..]); + let mut prefixed_hash = prefix.clone(); prefixed_hash.extend(&hash[..]); if have_storage_value(b"Session", b"NextKeys", &prefixed_hash) { refs += 1 } if have_storage_value(b"Staking", b"Bonded", &hash) { refs += 1 }