Skip to content

Commit 9a5bb87

Browse files
ggwpezacatangiu
andauthored
Kusama 1.9 Release for Asset Hub Migration (#935)
We go directly to 1.9 now so that we can officially release Polkadot 2.0 with the next runtime upgrade. This was discussed in the last [OpenDev call](https://www.youtube.com/live/eGbubFmqm5A?si=jmGSbd1qIr_8C-es&t=962). Video tutorial for the backup multisig is [here](https://drive.google.com/file/d/1D5g_EYKMs73XE6lFlU62xOYLEBMp-yb6/view?usp=sharing). Draft until: - [x] #934 - [x] <s>#932</s> - [x] #936 - [ ] Double check that feature `kusama-ahm` is used for the runtimes build - [ ] Ping all multisig members whether their acc is hot - [ ] Check manager account ID - [ ] Perserve this acc from the migration - [x] Set Migration schedule block number - [ ] Final ZB dry-run by @ggwpez --------- Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by: Adrian Catangiu <adrian@parity.io>
1 parent 2bf2f71 commit 9a5bb87

File tree

14 files changed

+75
-55
lines changed

14 files changed

+75
-55
lines changed

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ Changelog for the runtimes governed by the Polkadot Fellowship.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
66

7-
## [Unreleased]
7+
## [1.9.0] 26.09.2025
8+
9+
### Added
10+
11+
- Enable the Asset Hub Migration for Kusama at block `30423691`, projected to be Tuesday 7th Oct 8 AM UTC ([polkadot-fellows/runtimes/pull/935](https://github.com/polkadot-fellows/runtimes/pull/935))
12+
- Code for the Asset Hub Migration ([polkadot-fellows/runtimes/pull/856](https://github.com/polkadot-fellows/runtimes/pull/856))
813

914
### Changed
1015

relay/kusama/src/lib.rs

Lines changed: 57 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ use frame_support::{
5151
parameter_types,
5252
traits::{
5353
fungible::HoldConsideration,
54+
schedule::DispatchTime,
5455
tokens::{imbalance::ResolveTo, UnityOrOuterConversion},
5556
ConstU32, ConstU8, ConstUint, Currency, DefensiveResult, EitherOf, EitherOfDiverse,
5657
EnsureOrigin, EnsureOriginWithArg, Equals, FromContains, InstanceFilter,
@@ -187,7 +188,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
187188
spec_name: alloc::borrow::Cow::Borrowed("kusama"),
188189
impl_name: alloc::borrow::Cow::Borrowed("parity-kusama"),
189190
authoring_version: 2,
190-
spec_version: 1_007_001,
191+
spec_version: 1_009_000,
191192
impl_version: 0,
192193
apis: RUNTIME_API_VERSIONS,
193194
transaction_version: 26,
@@ -1908,41 +1909,50 @@ const AH_MAXIMUM_BLOCK_WEIGHT: Weight = Weight::from_parts(
19081909
polkadot_primitives::MAX_POV_SIZE as u64,
19091910
);
19101911

1912+
/// Kusama multisig members for the `Manager` privilege of the RC Migrator pallet with threshold 3.
1913+
///
1914+
/// ACCOUNTS MUST BE ABLE TO SIGN VIA POLKADOTJS APPS `DEVELOPER->SIGN AND VERIFY` FEATURE.
1915+
/// This does *not* work for signing devices and implies that the account is *hot*. The account
1916+
/// does not need to have a balance and the chain does not matter.
1917+
///
1918+
/// Will be used to respond to issues during the Asset Hub Migration and to adjust the scheduled
1919+
/// timepoint to ensure that it runs at the right time. Most members do not need to do anything
1920+
/// but are just in place to act as emergency backup contacts.
1921+
#[cfg(feature = "std")]
1922+
fn multisig_members() -> Vec<AccountId32> {
1923+
use sp_core::crypto::Ss58Codec;
1924+
1925+
let addresses = vec![
1926+
"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY", // Alice SR25519
1927+
"5FA9nQDVg267DEd8m1ZypXLBnvN7SFxYwV7ndqSYGiN9TTpu", // Alice ED25519
1928+
"5C7C2Z5sWbytvHpuLTvzKunnnRwQxft1jiqrLD5rhucQ5S9X", /* Alice ECDSA Address (not SS58
1929+
* Public Key) */
1930+
"FoQJpPyadYccjavVdTWxpxU7rUEaYhfLCPwXgkfD6Zat9QP", // Bob
1931+
"Fr4NzY1udSFFLzb2R3qxVQkwz9cZraWkyfH4h3mVVk7BK7P", // Charlie
1932+
"HnMAUz7r2G8G3hB27SYNyit5aJmh2a5P4eMdDtACtMFDbam", // Eve
1933+
];
1934+
1935+
addresses
1936+
.into_iter()
1937+
.filter_map(|ss| sp_runtime::AccountId32::from_ss58check(ss).defensive_ok())
1938+
.collect()
1939+
}
1940+
1941+
#[cfg(not(feature = "std"))]
19111942
fn multisig_members() -> Vec<AccountId32> {
19121943
use sp_core::crypto::Ss58Codec;
1913-
let addresses = if cfg!(test) {
1914-
vec![
1915-
"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY", // Alice SR25519
1916-
"5FA9nQDVg267DEd8m1ZypXLBnvN7SFxYwV7ndqSYGiN9TTpu", // Alice ED25519
1917-
"5C7C2Z5sWbytvHpuLTvzKunnnRwQxft1jiqrLD5rhucQ5S9X", /* Alice ECDSA Address (not SS58
1918-
* Public Key) */
1919-
"FoQJpPyadYccjavVdTWxpxU7rUEaYhfLCPwXgkfD6Zat9QP", // Bob
1920-
"Fr4NzY1udSFFLzb2R3qxVQkwz9cZraWkyfH4h3mVVk7BK7P", // Charlie
1921-
"DfnTB4z7eUvYRqcGtTpFsLC69o6tvBSC1pEv8vWPZFtCkaK", // Dave
1922-
"HnMAUz7r2G8G3hB27SYNyit5aJmh2a5P4eMdDtACtMFDbam", // Eve
1923-
"FFFF3gBSSDFSvK2HBq4qgLH75DHqXWPHeCnR1BSksAMacBs", // basti
1924-
"FcxNWVy5RESDsErjwyZmPCW6Z8Y3fbfLzmou34YZTrbcraL", // gav
1925-
"HL8bEp8YicBdrUmJocCAWVLKUaR2dd1y6jnD934pbre3un1", // kian
1926-
"F2jgWXy7X8GQ2ykf1UGrsCXRERZvjEcd2aDf39fMf3BWVy6", // oliver
1927-
"GcDZZCVPwkPqoWxx8vfLb4Yfpz9yQ1f4XEyqngSH8ygsL9p", // joe
1928-
"12HWjfYxi7xt7EvpTxUis7JoNWF7YCqa19JXmuiwizfwJZY2", // muharem
1929-
"121dd6J26VUnBZ8BqLGjANWkEAXSb9mWq1SB7LsS9QNTGFvz", // adrian
1930-
"12pRzYaysQz6Tr1e78sRmu9FGB8gu8yTek9x6xwVFFAwXTM8", // robK
1931-
"FcJnhk4i1bfuN9E2B6yMnL8h97ogtuL7e4ZpqnYgvj9moQy", // donal
1932-
]
1933-
} else {
1934-
vec![
1935-
"FFFF3gBSSDFSvK2HBq4qgLH75DHqXWPHeCnR1BSksAMacBs", // basti
1936-
"FcxNWVy5RESDsErjwyZmPCW6Z8Y3fbfLzmou34YZTrbcraL", // gav
1937-
"HL8bEp8YicBdrUmJocCAWVLKUaR2dd1y6jnD934pbre3un1", // kian
1938-
"F2jgWXy7X8GQ2ykf1UGrsCXRERZvjEcd2aDf39fMf3BWVy6", // oliver
1939-
"GcDZZCVPwkPqoWxx8vfLb4Yfpz9yQ1f4XEyqngSH8ygsL9p", // joe
1940-
"12HWjfYxi7xt7EvpTxUis7JoNWF7YCqa19JXmuiwizfwJZY2", // muharem
1941-
"121dd6J26VUnBZ8BqLGjANWkEAXSb9mWq1SB7LsS9QNTGFvz", // adrian
1942-
"12pRzYaysQz6Tr1e78sRmu9FGB8gu8yTek9x6xwVFFAwXTM8", // robK
1943-
"FcJnhk4i1bfuN9E2B6yMnL8h97ogtuL7e4ZpqnYgvj9moQy", // donal
1944-
]
1945-
};
1944+
1945+
let addresses = vec![
1946+
"FFFF3gBSSDFSvK2HBq4qgLH75DHqXWPHeCnR1BSksAMacBs", /* Basti Kusama Fellowship https://kusama.subscan.io/account/FFFF3gBSSDFSvK2HBq4qgLH75DHqXWPHeCnR1BSksAMacBs */
1947+
"FcxNWVy5RESDsErjwyZmPCW6Z8Y3fbfLzmou34YZTrbcraL", /* Gav Kusama Fellowship https://kusama.subscan.io/account/FcxNWVy5RESDsErjwyZmPCW6Z8Y3fbfLzmou34YZTrbcraL */
1948+
"HL8bEp8YicBdrUmJocCAWVLKUaR2dd1y6jnD934pbre3un1", /* Kian Kusama Fellowship https://kusama.subscan.io/account/HL8bEp8YicBdrUmJocCAWVLKUaR2dd1y6jnD934pbre3un1 */
1949+
"F2jgWXy7X8GQ2ykf1UGrsCXRERZvjEcd2aDf39fMf3BWVy6", /* Oliver Hot https://kusama.subscan.io/account/F2jgWXy7X8GQ2ykf1UGrsCXRERZvjEcd2aDf39fMf3BWVy6 */
1950+
"GcDZZCVPwkPqoWxx8vfLb4Yfpz9yQ1f4XEyqngSH8ygsL9p", /* Joe Kusama Fellowship https://kusama.subscan.io/account/GcDZZCVPwkPqoWxx8vfLb4Yfpz9yQ1f4XEyqngSH8ygsL9p */
1951+
"12HWjfYxi7xt7EvpTxUis7JoNWF7YCqa19JXmuiwizfwJZY2", /* Muharem Polkadot Fellowship https://polkadot.subscan.io/account/12HWjfYxi7xt7EvpTxUis7JoNWF7YCqa19JXmuiwizfwJZY2 */
1952+
"121dd6J26VUnBZ8BqLGjANWkEAXSb9mWq1SB7LsS9QNTGFvz", /* Adrian Polkadot Fellowship https://polkadot.subscan.io/account/121dd6J26VUnBZ8BqLGjANWkEAXSb9mWq1SB7LsS9QNTGFvz */
1953+
"12pRzYaysQz6Tr1e78sRmu9FGB8gu8yTek9x6xwVFFAwXTM8", /* RobK Polkadot Fellowship https://polkadot.subscan.io/account/12pRzYaysQz6Tr1e78sRmu9FGB8gu8yTek9x6xwVFFAwXTM8 */
1954+
"FcJnhk4i1bfuN9E2B6yMnL8h97ogtuL7e4ZpqnYgvj9moQy", /* Donal Polkadot Fellowship https://kusama.subscan.io/account/FcJnhk4i1bfuN9E2B6yMnL8h97ogtuL7e4ZpqnYgvj9moQy */
1955+
];
19461956

19471957
addresses
19481958
.into_iter()
@@ -2212,18 +2222,23 @@ pub mod migrations {
22122222
return T::DbWeight::get().reads(2)
22132223
}
22142224

2215-
// We will set this as part of the release MR
2216-
/*let result = pallet_rc_migrator::Pallet::<T>::do_schedule_migration(
2217-
DispatchTime::After(/* START */),
2218-
DispatchTime::After(/* WARM UP */),
2219-
DispatchTime::After(/* COOL OFF */),
2225+
let result = pallet_rc_migrator::Pallet::<T>::do_schedule_migration(
2226+
// Migration start block, Tuesday 7th Oct 8 AM UTC
2227+
// Naive estimate [30422513](https://kusama.subscan.io/block/30422513)
2228+
// Adjusted with -20.52 clock skew / day [30423691](https://kusama.subscan.io/block/30423691), avg delay per day over the last 30 days.
2229+
DispatchTime::At(30423691u32.into()),
2230+
// Warm up to wait for Messaging queues to empty
2231+
DispatchTime::After((5 * MINUTES).into()),
2232+
// Cool off to verify the success of the migration
2233+
DispatchTime::After((60 * MINUTES).into()),
2234+
// Respect the session scheduling check:
22202235
Default::default(),
22212236
);
22222237
if let Err(e) = result {
2223-
log::error!("KickOffAhm: Failed to schedule Asset Hub Migration: {:?}", e);
2238+
log::error!("KickOffAhm: Failed to schedule Asset Hub Migration: {e:?}");
22242239
} else {
22252240
log::info!("KickOffAhm: Scheduled Asset Hub Migration");
2226-
}*/
2241+
}
22272242

22282243
T::DbWeight::get().reads_writes(1, 1)
22292244
}
@@ -3242,7 +3257,7 @@ mod ahm_multisig {
32423257
#[test]
32433258
fn all_ss58s_decode() {
32443259
// ensure all non-dev account ids we have are valid ss58s
3245-
assert_eq!(MultisigMembers::get().len(), 16);
3260+
assert_eq!(MultisigMembers::get().len(), 6);
32463261
}
32473262

32483263
#[test]

relay/polkadot/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
175175
spec_name: alloc::borrow::Cow::Borrowed("polkadot"),
176176
impl_name: alloc::borrow::Cow::Borrowed("parity-polkadot"),
177177
authoring_version: 0,
178-
spec_version: 1_007_001,
178+
spec_version: 1_009_000,
179179
impl_version: 0,
180180
apis: RUNTIME_API_VERSIONS,
181181
transaction_version: 26,

system-parachains/asset-hubs/asset-hub-kusama/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
143143
spec_name: Cow::Borrowed("statemine"),
144144
impl_name: Cow::Borrowed("statemine"),
145145
authoring_version: 1,
146-
spec_version: 1_007_001,
146+
spec_version: 1_009_000,
147147
impl_version: 0,
148148
apis: RUNTIME_API_VERSIONS,
149149
transaction_version: 15,

system-parachains/asset-hubs/asset-hub-polkadot/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
191191
impl_name: Cow::Borrowed("statemint"),
192192
spec_name: Cow::Borrowed("statemint"),
193193
authoring_version: 1,
194-
spec_version: 1_007_001,
194+
spec_version: 1_009_000,
195195
impl_version: 0,
196196
apis: RUNTIME_API_VERSIONS,
197197
transaction_version: 15,

system-parachains/bridge-hubs/bridge-hub-kusama/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
180180
spec_name: Cow::Borrowed("bridge-hub-kusama"),
181181
impl_name: Cow::Borrowed("bridge-hub-kusama"),
182182
authoring_version: 1,
183-
spec_version: 1_007_001,
183+
spec_version: 1_009_000,
184184
impl_version: 0,
185185
apis: RUNTIME_API_VERSIONS,
186186
transaction_version: 5,

system-parachains/bridge-hubs/bridge-hub-polkadot/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
210210
spec_name: Cow::Borrowed("bridge-hub-polkadot"),
211211
impl_name: Cow::Borrowed("bridge-hub-polkadot"),
212212
authoring_version: 1,
213-
spec_version: 1_007_001,
213+
spec_version: 1_009_000,
214214
impl_version: 0,
215215
apis: RUNTIME_API_VERSIONS,
216216
transaction_version: 4,

system-parachains/collectives/collectives-polkadot/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
130130
spec_name: Cow::Borrowed("collectives"),
131131
impl_name: Cow::Borrowed("collectives"),
132132
authoring_version: 1,
133-
spec_version: 1_007_001,
133+
spec_version: 1_009_000,
134134
impl_version: 0,
135135
apis: RUNTIME_API_VERSIONS,
136136
transaction_version: 7,

system-parachains/coretime/coretime-kusama/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
154154
spec_name: Cow::Borrowed("coretime-kusama"),
155155
impl_name: Cow::Borrowed("coretime-kusama"),
156156
authoring_version: 1,
157-
spec_version: 1_007_001,
157+
spec_version: 1_009_000,
158158
impl_version: 0,
159159
apis: RUNTIME_API_VERSIONS,
160160
transaction_version: 1,

system-parachains/coretime/coretime-polkadot/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
161161
spec_name: Cow::Borrowed("coretime-polkadot"),
162162
impl_name: Cow::Borrowed("coretime-polkadot"),
163163
authoring_version: 1,
164-
spec_version: 1_007_001,
164+
spec_version: 1_009_000,
165165
impl_version: 0,
166166
apis: RUNTIME_API_VERSIONS,
167167
transaction_version: 0,

0 commit comments

Comments
 (0)