diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7e90d1c5f6..76fcfeb532 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- All runtimes: add `LocationToAccountApi` ([polkadot-fellows/runtimes#413](https://github.com/polkadot-fellows/runtimes/pull/413))
- Enable Agile Coretime on Polkadot ([polkadot-fellows/runtimes#401](https://github.com/polkadot-fellows/runtimes/pull/401))
- Add the Polkadot Coretime Chain runtime ([polkadot-fellows/runtimes#410](https://github.com/polkadot-fellows/runtimes/pull/410))
+- Add the Polkadot and Kusama Coretime Chain specs ([polkadot-fellows/runtimes#432](https://github.com/polkadot-fellows/runtimes/pull/432))
#### From [#322](https://github.com/polkadot-fellows/runtimes/pull/322):
diff --git a/Cargo.lock b/Cargo.lock
index caa004cff0..832e3ade73 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -628,7 +628,6 @@ dependencies = [
"bp-bridge-hub-kusama",
"bp-bridge-hub-polkadot",
"cumulus-pallet-aura-ext",
- "cumulus-pallet-dmp-queue",
"cumulus-pallet-parachain-system",
"cumulus-pallet-session-benchmarking",
"cumulus-pallet-xcm",
@@ -1746,7 +1745,6 @@ dependencies = [
"bridge-hub-test-utils",
"bridge-runtime-common",
"cumulus-pallet-aura-ext",
- "cumulus-pallet-dmp-queue",
"cumulus-pallet-parachain-system",
"cumulus-pallet-session-benchmarking",
"cumulus-pallet-xcm",
@@ -2247,6 +2245,7 @@ dependencies = [
"people-polkadot-runtime",
"polkadot-runtime",
"sc-chain-spec",
+ "sc-network",
"serde",
"serde_json",
"staging-kusama-runtime",
@@ -3090,25 +3089,6 @@ dependencies = [
"sp-std",
]
-[[package]]
-name = "cumulus-pallet-dmp-queue"
-version = "0.15.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7926abe4b165565b8c86a3525ac98e3a962761d05c201c53012460b237ad5887"
-dependencies = [
- "cumulus-primitives-core",
- "frame-benchmarking",
- "frame-support",
- "frame-system",
- "log",
- "parity-scale-codec",
- "scale-info",
- "sp-io 37.0.0",
- "sp-runtime 38.0.0",
- "sp-std",
- "staging-xcm",
-]
-
[[package]]
name = "cumulus-pallet-parachain-system"
version = "0.15.0"
diff --git a/Cargo.toml b/Cargo.toml
index 7939bfd8c1..280dcd504a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -49,7 +49,6 @@ coretime-kusama-runtime = { path = "system-parachains/coretime/coretime-kusama"
coretime-polkadot-emulated-chain = { path = "integration-tests/emulated/chains/parachains/coretime/coretime-polkadot" }
coretime-polkadot-runtime = { path = "system-parachains/coretime/coretime-polkadot" }
cumulus-pallet-aura-ext = { version = "0.15.0", default-features = false }
-cumulus-pallet-dmp-queue = { version = "0.15.0", default-features = false }
cumulus-pallet-parachain-system = { version = "0.15.0", default-features = false }
cumulus-pallet-session-benchmarking = { version = "17.0.0", default-features = false }
cumulus-pallet-xcm = { version = "0.15.0", default-features = false }
@@ -189,6 +188,7 @@ frame-metadata-hash-extension = { version = "0.4.0", default-features = false }
remote-externalities = { version = "0.43.0", package = "frame-remote-externalities" }
runtime-parachains = { version = "15.0.1", default-features = false, package = "polkadot-runtime-parachains" }
sc-chain-spec = { version = "35.0.0" }
+sc-network = { version = "0.42.0" }
scale-info = { version = "2.10.0", default-features = false }
separator = { version = "0.4.1" }
serde = { version = "1.0.196" }
diff --git a/chain-spec-generator/Cargo.toml b/chain-spec-generator/Cargo.toml
index a302073ad2..66640c7e1b 100644
--- a/chain-spec-generator/Cargo.toml
+++ b/chain-spec-generator/Cargo.toml
@@ -15,6 +15,7 @@ polkadot-runtime = { workspace = true }
kusama-runtime = { workspace = true }
sc-chain-spec = { workspace = true }
+sc-network = { workspace = true }
asset-hub-polkadot-runtime = { workspace = true }
asset-hub-kusama-runtime = { workspace = true }
diff --git a/chain-spec-generator/src/main.rs b/chain-spec-generator/src/main.rs
index 40dde75490..3b6ed2288c 100644
--- a/chain-spec-generator/src/main.rs
+++ b/chain-spec-generator/src/main.rs
@@ -76,10 +76,18 @@ fn main() -> Result<(), String> {
"encointer-kusama-local",
Box::new(system_parachains_specs::encointer_kusama_local_testnet_config) as Box<_>,
),
+ (
+ "coretime-kusama",
+ Box::new(system_parachains_specs::coretime_kusama_config) as Box<_>,
+ ),
(
"coretime-kusama-local",
Box::new(system_parachains_specs::coretime_kusama_local_testnet_config) as Box<_>,
),
+ (
+ "coretime-polkadot",
+ Box::new(system_parachains_specs::coretime_polkadot_config) as Box<_>,
+ ),
(
"coretime-polkadot-local",
Box::new(system_parachains_specs::coretime_polkadot_local_testnet_config) as Box<_>,
diff --git a/chain-spec-generator/src/system_parachains_specs.rs b/chain-spec-generator/src/system_parachains_specs.rs
index 57d80dd42a..db726d7f0d 100644
--- a/chain-spec-generator/src/system_parachains_specs.rs
+++ b/chain-spec-generator/src/system_parachains_specs.rs
@@ -16,7 +16,9 @@
// along with Polkadot. If not, see .
use sc_chain_spec::{ChainSpec, ChainSpecExtension, ChainSpecGroup, ChainType};
+use sc_network::config::MultiaddrWithPeerId;
use serde::{Deserialize, Serialize};
+use std::str::FromStr;
/// Generic extensions for Parachain ChainSpecs.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)]
@@ -218,6 +220,41 @@ pub fn coretime_kusama_local_testnet_config() -> Result, Stri
))
}
+pub fn coretime_kusama_config() -> Result, String> {
+ let mut properties = sc_chain_spec::Properties::new();
+ properties.insert("ss58Format".into(), 2.into());
+ properties.insert("tokenSymbol".into(), "KSM".into());
+ properties.insert("tokenDecimals".into(), 12.into());
+
+ let boot_nodes = [
+ "/dns/kusama-coretime-connect-a-0.polkadot.io/tcp/30334/p2p/12D3KooWR7Biy6nPgQFhk2eYP62pAkcFA6he9RUFURTDh7ewTjpo",
+ "/dns/kusama-coretime-connect-a-1.polkadot.io/tcp/30334/p2p/12D3KooWAGFiMZDF9RxdacrkenzGdo8nhfSe9EXofHc5mHeJ9vGX",
+ "/dns/kusama-coretime-connect-a-0.polkadot.io/tcp/443/wss/p2p/12D3KooWR7Biy6nPgQFhk2eYP62pAkcFA6he9RUFURTDh7ewTjpo",
+ "/dns/kusama-coretime-connect-a-1.polkadot.io/tcp/443/wss/p2p/12D3KooWAGFiMZDF9RxdacrkenzGdo8nhfSe9EXofHc5mHeJ9vGX",
+ ];
+
+ Ok(Box::new(
+ CoretimeKusamaChainSpec::builder(
+ coretime_kusama_runtime::WASM_BINARY.expect("Kusama Coretime wasm not available!"),
+ Extensions { relay_chain: "kusama".into(), para_id: 1005 },
+ )
+ .with_name("Kusama Coretime")
+ .with_id("coretime-kusama")
+ .with_chain_type(ChainType::Live)
+ .with_genesis_config_preset_name("live")
+ .with_properties(properties)
+ .with_boot_nodes(
+ boot_nodes
+ .iter()
+ .map(|addr| {
+ MultiaddrWithPeerId::from_str(addr).expect("Boot node address is incorrect.")
+ })
+ .collect(),
+ )
+ .build(),
+ ))
+}
+
pub fn coretime_polkadot_local_testnet_config() -> Result, String> {
let mut properties = sc_chain_spec::Properties::new();
properties.insert("ss58Format".into(), 0.into());
@@ -238,6 +275,44 @@ pub fn coretime_polkadot_local_testnet_config() -> Result, St
))
}
+pub fn coretime_polkadot_config() -> Result, String> {
+ let mut properties = sc_chain_spec::Properties::new();
+ properties.insert("ss58Format".into(), 0.into());
+ properties.insert("tokenSymbol".into(), "DOT".into());
+ properties.insert("tokenDecimals".into(), 10.into());
+
+ let boot_nodes = [
+ "/dns/polkadot-coretime-connect-a-0.polkadot.io/tcp/30334/p2p/12D3KooWKjnixAHbKMsPTJwGx8SrBeGEJLHA8KmKcEDYMp3YmWgR",
+ "/dns/polkadot-coretime-connect-a-1.polkadot.io/tcp/30334/p2p/12D3KooWQ7B7p4DFv1jWqaKfhrZBcMmi5g8bWFnmskguLaGEmT6n",
+ "/dns/polkadot-coretime-connect-a-0.polkadot.io/tcp/443/wss/p2p/12D3KooWKjnixAHbKMsPTJwGx8SrBeGEJLHA8KmKcEDYMp3YmWgR",
+ "/dns/polkadot-coretime-connect-a-1.polkadot.io/tcp/443/wss/p2p/12D3KooWQ7B7p4DFv1jWqaKfhrZBcMmi5g8bWFnmskguLaGEmT6n",
+ "/dns4/coretime-polkadot.boot.stake.plus/tcp/30332/wss/p2p/12D3KooWFJ2yBTKFKYwgKUjfY3F7XfaxHV8hY6fbJu5oMkpP7wZ9",
+ "/dns4/coretime-polkadot.boot.stake.plus/tcp/31332/wss/p2p/12D3KooWCy5pToLafcQzPHn5kadxAftmF6Eh8ZJGPXhSeXSUDfjv",
+
+ ];
+
+ Ok(Box::new(
+ CoretimePolkadotChainSpec::builder(
+ coretime_polkadot_runtime::WASM_BINARY.expect("Polkadot Coretime wasm not available!"),
+ Extensions { relay_chain: "polkadot".into(), para_id: 1005 },
+ )
+ .with_name("Polkadot Coretime")
+ .with_id("coretime-polkadot")
+ .with_chain_type(ChainType::Live)
+ .with_genesis_config_preset_name("live")
+ .with_properties(properties)
+ .with_boot_nodes(
+ boot_nodes
+ .iter()
+ .map(|addr| {
+ MultiaddrWithPeerId::from_str(addr).expect("Boot node address is incorrect.")
+ })
+ .collect(),
+ )
+ .build(),
+ ))
+}
+
pub fn people_kusama_local_testnet_config() -> Result, String> {
let mut properties = sc_chain_spec::Properties::new();
properties.insert("ss58Format".into(), 2.into());
diff --git a/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml b/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml
index 510662d905..637720d361 100644
--- a/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml
+++ b/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml
@@ -86,7 +86,6 @@ xcm-runtime-apis = { workspace = true }
# Cumulus
cumulus-pallet-aura-ext = { workspace = true }
-cumulus-pallet-dmp-queue = { workspace = true }
cumulus-pallet-parachain-system = { workspace = true }
cumulus-pallet-session-benchmarking = { workspace = true }
cumulus-pallet-xcm = { workspace = true }
@@ -124,7 +123,6 @@ default = ["std"]
state-trie-version-1 = ["pallet-state-trie-migration"]
runtime-benchmarks = [
"assets-common/runtime-benchmarks",
- "cumulus-pallet-dmp-queue/runtime-benchmarks",
"cumulus-pallet-parachain-system/runtime-benchmarks",
"cumulus-pallet-session-benchmarking/runtime-benchmarks",
"cumulus-pallet-xcmp-queue/runtime-benchmarks",
@@ -162,7 +160,6 @@ runtime-benchmarks = [
]
try-runtime = [
"cumulus-pallet-aura-ext/try-runtime",
- "cumulus-pallet-dmp-queue/try-runtime",
"cumulus-pallet-parachain-system/try-runtime",
"cumulus-pallet-xcm/try-runtime",
"cumulus-pallet-xcmp-queue/try-runtime",
@@ -203,7 +200,6 @@ std = [
"bp-bridge-hub-polkadot/std",
"codec/std",
"cumulus-pallet-aura-ext/std",
- "cumulus-pallet-dmp-queue/std",
"cumulus-pallet-parachain-system/std",
"cumulus-pallet-session-benchmarking/std",
"cumulus-pallet-xcm/std",
diff --git a/system-parachains/asset-hubs/asset-hub-kusama/src/lib.rs b/system-parachains/asset-hubs/asset-hub-kusama/src/lib.rs
index 48ee7c5d85..43aa145858 100644
--- a/system-parachains/asset-hubs/asset-hub-kusama/src/lib.rs
+++ b/system-parachains/asset-hubs/asset-hub-kusama/src/lib.rs
@@ -1049,14 +1049,9 @@ pub type SignedExtra = (
pub type UncheckedExtrinsic =
generic::UncheckedExtrinsic;
-parameter_types! {
- pub DmpQueueName: &'static str = "DmpQueue";
-}
-
/// Migrations to apply on runtime upgrade.
pub type Migrations = (
- frame_support::migrations::RemovePallet,
- pallet_collator_selection::migration::v2::MigrationToV2,
+ // unreleased and/or un-applied
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5,
pallet_assets::migration::next_asset_id::SetNextAssetId<
ConstU32<50_000_000>,
diff --git a/system-parachains/asset-hubs/asset-hub-polkadot/src/lib.rs b/system-parachains/asset-hubs/asset-hub-polkadot/src/lib.rs
index cc54fa8be0..73fb67cd59 100644
--- a/system-parachains/asset-hubs/asset-hub-polkadot/src/lib.rs
+++ b/system-parachains/asset-hubs/asset-hub-polkadot/src/lib.rs
@@ -1029,16 +1029,9 @@ pub type SignedExtra = (
pub type UncheckedExtrinsic =
generic::UncheckedExtrinsic;
-parameter_types! {
- pub DmpQueueName: &'static str = "DmpQueue";
-}
-
/// Migrations to apply on runtime upgrade.
pub type Migrations = (
- // unreleased
- frame_support::migrations::RemovePallet,
- cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4,
- pallet_collator_selection::migration::v2::MigrationToV2,
+ // unreleased and/or un-applied
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5,
pallet_assets::migration::next_asset_id::SetNextAssetId<
ConstU32<50_000_000>,
diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/Cargo.toml b/system-parachains/bridge-hubs/bridge-hub-kusama/Cargo.toml
index c5fd0a09e2..d4140280da 100644
--- a/system-parachains/bridge-hubs/bridge-hub-kusama/Cargo.toml
+++ b/system-parachains/bridge-hubs/bridge-hub-kusama/Cargo.toml
@@ -75,7 +75,6 @@ xcm-runtime-apis = { workspace = true }
# Cumulus
cumulus-pallet-aura-ext = { workspace = true }
-cumulus-pallet-dmp-queue = { workspace = true }
cumulus-pallet-parachain-system = { workspace = true }
cumulus-pallet-session-benchmarking = { workspace = true }
cumulus-pallet-xcm = { workspace = true }
@@ -146,7 +145,6 @@ std = [
"bridge-runtime-common/std",
"codec/std",
"cumulus-pallet-aura-ext/std",
- "cumulus-pallet-dmp-queue/std",
"cumulus-pallet-parachain-system/std",
"cumulus-pallet-session-benchmarking/std",
"cumulus-pallet-xcm/std",
@@ -227,7 +225,6 @@ std = [
runtime-benchmarks = [
"bridge-hub-common/runtime-benchmarks",
"bridge-runtime-common/runtime-benchmarks",
- "cumulus-pallet-dmp-queue/runtime-benchmarks",
"cumulus-pallet-parachain-system/runtime-benchmarks",
"cumulus-pallet-session-benchmarking/runtime-benchmarks",
"cumulus-pallet-xcmp-queue/runtime-benchmarks",
@@ -269,7 +266,6 @@ runtime-benchmarks = [
try-runtime = [
"cumulus-pallet-aura-ext/try-runtime",
- "cumulus-pallet-dmp-queue/try-runtime",
"cumulus-pallet-parachain-system/try-runtime",
"cumulus-pallet-xcm/try-runtime",
"cumulus-pallet-xcmp-queue/try-runtime",
diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/src/lib.rs b/system-parachains/bridge-hubs/bridge-hub-kusama/src/lib.rs
index 77370cf3c5..b486b8541a 100644
--- a/system-parachains/bridge-hubs/bridge-hub-kusama/src/lib.rs
+++ b/system-parachains/bridge-hubs/bridge-hub-kusama/src/lib.rs
@@ -139,14 +139,9 @@ bridge_runtime_common::generate_bridge_reject_obsolete_headers_and_messages! {
pub type UncheckedExtrinsic =
generic::UncheckedExtrinsic;
-parameter_types! {
- pub DmpQueueName: &'static str = "DmpQueue";
-}
-
/// Migrations to apply on runtime upgrade.
pub type Migrations = (
- frame_support::migrations::RemovePallet,
- pallet_collator_selection::migration::v2::MigrationToV2,
+ // unreleased and/or un-applied
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5,
// permanent
pallet_xcm::migration::MigrateToLatestXcmVersion,
diff --git a/system-parachains/bridge-hubs/bridge-hub-polkadot/src/lib.rs b/system-parachains/bridge-hubs/bridge-hub-polkadot/src/lib.rs
index 8117d564a2..6ebb56f5a5 100644
--- a/system-parachains/bridge-hubs/bridge-hub-polkadot/src/lib.rs
+++ b/system-parachains/bridge-hubs/bridge-hub-polkadot/src/lib.rs
@@ -81,7 +81,6 @@ pub use sp_runtime::BuildStorage;
// Polkadot imports
use polkadot_runtime_common::{BlockHashCount, SlowAdjustingFeeUpdate};
-use polkadot_runtime_constants::system_parachain::{ASSET_HUB_ID, BRIDGE_HUB_ID};
use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight};
@@ -141,21 +140,9 @@ bridge_runtime_common::generate_bridge_reject_obsolete_headers_and_messages! {
pub type UncheckedExtrinsic =
generic::UncheckedExtrinsic;
-parameter_types! {
- pub DmpQueueName: &'static str = "DmpQueue";
-}
-
/// Migrations to apply on runtime upgrade.
pub type Migrations = (
- // unreleased
- frame_support::migrations::RemovePallet,
- cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4,
- snowbridge_pallet_system::migration::v0::InitializeOnUpgrade<
- Runtime,
- ConstU32,
- ConstU32,
- >,
- pallet_collator_selection::migration::v2::MigrationToV2,
+ // unreleased and/or un-applied
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5,
// permanent
pallet_xcm::migration::MigrateToLatestXcmVersion,
diff --git a/system-parachains/collectives/collectives-polkadot/src/lib.rs b/system-parachains/collectives/collectives-polkadot/src/lib.rs
index 66325dea50..8df3f396c0 100644
--- a/system-parachains/collectives/collectives-polkadot/src/lib.rs
+++ b/system-parachains/collectives/collectives-polkadot/src/lib.rs
@@ -749,17 +749,10 @@ pub type SignedExtra = (
pub type UncheckedExtrinsic =
generic::UncheckedExtrinsic;
-parameter_types! {
- pub DmpQueueName: &'static str = "DmpQueue";
-}
-
/// All migrations executed on runtime upgrade as a nested tuple of types implementing
/// `OnRuntimeUpgrade`. Included migrations must be idempotent.
type Migrations = (
- // unreleased
- frame_support::migrations::RemovePallet,
- cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4,
- pallet_collator_selection::migration::v2::MigrationToV2,
+ // unreleased and/or un-applied
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5,
pallet_core_fellowship::migration::MigrateV0ToV1,
pallet_core_fellowship::migration::MigrateV0ToV1,
diff --git a/system-parachains/coretime/coretime-kusama/src/genesis_config_presets.rs b/system-parachains/coretime/coretime-kusama/src/genesis_config_presets.rs
index 9b8c7ec0b2..545d0a87e4 100644
--- a/system-parachains/coretime/coretime-kusama/src/genesis_config_presets.rs
+++ b/system-parachains/coretime/coretime-kusama/src/genesis_config_presets.rs
@@ -17,6 +17,8 @@
//! Genesis configs presets for the CoretimeKusama runtime
use crate::*;
+use hex_literal::hex;
+use sp_core::crypto::UncheckedInto;
use sp_std::vec::Vec;
use system_parachains_constants::genesis_presets::*;
@@ -49,9 +51,9 @@ fn coretime_kusama_genesis(
.into_iter()
.map(|(acc, aura)| {
(
- acc.clone(), // account id
- acc, // validator id
- SessionKeys { aura }, // session keys
+ acc.clone(), // account id
+ acc, // validator id
+ SessionKeys { aura }, // session keys
)
})
.collect(),
@@ -72,9 +74,67 @@ fn coretime_kusama_development_genesis(para_id: ParaId) -> serde_json::Value {
coretime_kusama_local_testnet_genesis(para_id)
}
+fn coretime_kusama_live_genesis(para_id: ParaId) -> serde_json::Value {
+ coretime_kusama_genesis(
+ vec![
+ // HRn3a4qLmv1ejBHvEbnjaiEWjt154iFi2Wde7bXKGUwGvtL
+ (
+ hex!("d6a941f3a15918925170cc4e703c0beacc8915e2a04b3e86985915d2d84d2d52").into(),
+ hex!("4491cfc3ef17b4e02c66a7161f34fcacabf86ad64a783c1dbbe74e4ef82a7966")
+ .unchecked_into(),
+ ),
+ // Cx9Uu2sxp3Xt1QBUbGQo7j3imTvjWJrqPF1PApDoy6UVkWP
+ (
+ hex!("10a59d610a39fc102624c8e8aa1096f0188f3fdd24b226c6a27eeed5b4774e12").into(),
+ hex!("04e3a3ecadbd493eb64ab2c19d215ccbc9eebea686dc3cea4833194674a8285e")
+ .unchecked_into(),
+ ),
+ // CdW8izFcLeicL3zZUQaC3a39AGeNSTgc9Jb5E5sjREPryA2
+ (
+ hex!("026d79399d627961c528d648413b2aa54595245d97158a8b90900287dee28216").into(),
+ hex!("de05506c73f35cf0bd50652b719369c2e20be9bf2c8522bd6cb61059a0cb0033")
+ .unchecked_into(),
+ ),
+ // H1tAQMm3eizGcmpAhL9aA9gR844kZpQfkU7pkmMiLx9jSzE
+ (
+ hex!("c46ff658221e07564fde2764017590264f9dfced3538e283856c43e0ee456e51").into(),
+ hex!("786b7889aecde64fc8942c1d52e2d7220da83636275edfd467624a06ffc3c935")
+ .unchecked_into(),
+ ),
+ // J11Rp4mjz3vRb2DL51HqRGRjhuEQRyXgtuFskebXb8zMZ9s
+ (
+ hex!("f00168a3d082a8ccf93945b1f173fdaecc1ce76fc09bbde18423640194be7212").into(),
+ hex!("0a2cee67864d1d4c9433bfd45324b8f72425f096e01041546be48c5d3bc9a746")
+ .unchecked_into(),
+ ),
+ // DtuntvQBh9vajFTnd42aTTCiuCyY3ep6EVwhhPji2ejyyhW
+ (
+ hex!("3a6a0745688c52b4709f65fa2e4508dfa0940ccc0d282cd16be9bc043b2f4a04").into(),
+ hex!("064842b69c1e8dc6e2263dedd129d96488cae3f6953631da4ebba097c241eb23")
+ .unchecked_into(),
+ ),
+ // HmatizNhXrZtXwQK2LfntvjCy3x1EuKs1WnRQ6CP3KkNfmA
+ (
+ hex!("e5c49f7bc76b9e1b91566945e2eb539d960da57ca8e9ccd0e6030e4b11b60099").into(),
+ hex!("7e126fa970a75ae2cd371d01ee32e9387f0b256832e408ca8ea7b254e6bcde7d")
+ .unchecked_into(),
+ ),
+ // HPUEzi4v3YJmhBfSbcGEFFiNKPAGVnGkfDiUzBNTR7j1CxT
+ (
+ hex!("d4e6d6256f56677bcdbc0543f1a2c40aa82497b33af1748fc10113b1e2a1b460").into(),
+ hex!("cade3f02e0acf9e85d9a4f919abeaeda12b55202c74f78d506ccd1ea2e16a271")
+ .unchecked_into(),
+ ),
+ ],
+ Vec::new(),
+ para_id,
+ )
+}
+
/// Provides the JSON representation of predefined genesis config for given `id`.
pub fn get_preset(id: &sp_genesis_builder::PresetId) -> Option> {
let patch = match id.try_into() {
+ Ok("live") => coretime_kusama_live_genesis(1005.into()),
Ok("development") => coretime_kusama_development_genesis(1005.into()),
Ok("local_testnet") => coretime_kusama_local_testnet_genesis(1005.into()),
_ => return None,
diff --git a/system-parachains/coretime/coretime-kusama/src/lib.rs b/system-parachains/coretime/coretime-kusama/src/lib.rs
index 95324c4ce3..4b6a296024 100644
--- a/system-parachains/coretime/coretime-kusama/src/lib.rs
+++ b/system-parachains/coretime/coretime-kusama/src/lib.rs
@@ -115,12 +115,13 @@ pub type UncheckedExtrinsic =
/// Migrations to apply on runtime upgrade.
pub type Migrations = (
- pallet_xcm::migration::MigrateToLatestXcmVersion,
- pallet_collator_selection::migration::v2::MigrationToV2,
+ // unreleased and/or un-applied
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5,
pallet_broker::migration::MigrateV0ToV1,
pallet_broker::migration::MigrateV1ToV2,
pallet_broker::migration::MigrateV2ToV3,
+ // permanent
+ pallet_xcm::migration::MigrateToLatestXcmVersion,
);
/// Executive: handles dispatch to the various modules.
diff --git a/system-parachains/coretime/coretime-polkadot/src/genesis_config_presets.rs b/system-parachains/coretime/coretime-polkadot/src/genesis_config_presets.rs
index fac3672475..509a23d52e 100644
--- a/system-parachains/coretime/coretime-polkadot/src/genesis_config_presets.rs
+++ b/system-parachains/coretime/coretime-polkadot/src/genesis_config_presets.rs
@@ -17,6 +17,8 @@
//! Genesis configs presets for the Polkadot Coretime runtime
use crate::*;
+use hex_literal::hex;
+use sp_core::crypto::UncheckedInto;
use sp_genesis_builder::PresetId;
use sp_std::vec::Vec;
use system_parachains_constants::genesis_presets::*;
@@ -73,13 +75,72 @@ fn coretime_polkadot_development_genesis(para_id: ParaId) -> serde_json::Value {
coretime_polkadot_local_testnet_genesis(para_id)
}
+fn coretime_polkadot_live_genesis(para_id: ParaId) -> serde_json::Value {
+ coretime_polkadot_genesis(
+ vec![
+ // Parity polkadot-coretime-collator-a-0
+ // 13umUoWwGb765EPzMUrMmYTcEjKfNJiNyCDwdqAvCMzteGzi
+ (
+ hex!("80b6f570f356fef7b891afa2e1c30fca89bc7a2cddd545fd8a173106fce3a11f").into(),
+ hex!("4a69b6ec0eda668471d806db625681a147efc35a4baeacf0bca95d12d13cd942")
+ .unchecked_into(),
+ ),
+ // Parity polkadot-coretime-collator-a-1
+ // 13NAwtroa2efxgtih1oscJqjxcKpWJeQF8waWPTArBewi2CQ
+ (
+ hex!("689e1a66fa33b75f66415021aacc4fa23f49306a3c21407748b8b2d39b4abf63").into(),
+ hex!("f0d0e90c36f95605510f00a9f0821675bc0c7b70e5c8d113b0426c21d627773b")
+ .unchecked_into(),
+ ),
+ // Stakeworld.io
+ // 13Jpq4n3PXXaSAbJTMmFD78mXAzs8PzgUUQd5ve8saw7HQS5
+ (
+ hex!("6610a5024c2a5db3d02056d4344d120ec7be283100d71a6715f09275167e4f38").into(),
+ hex!("dcaa0b4c6840028f6d4fa8c460d5a7d687d1f81c9de453ef2f5ead88767fd22a")
+ .unchecked_into(),
+ ),
+ // STKD
+ // 173Wc3mSdXa9ja9nv7C1z6GQHEBK4HZ9U4NGhHnvmTfJaJb
+ (
+ hex!("049bec59fb5fe6adea4578250578e89dd7e51ad88c7c92493d6f451c6680925c").into(),
+ hex!("7283ea6b8648673305a3e06be6dd83b7bc1840081d50d4deef1ce53eba21e914")
+ .unchecked_into(),
+ ),
+ // Staker Space
+ // 1k4vuCxwbNcHfsNdQ3MgTGixwvrT7wbLc2XiZj68Gru6bLM
+ (
+ hex!("20d8c795eef2620fba2bde74dbc36461c07998ebf600ed265b746c1e05c70606").into(),
+ hex!("248dbf89d86998772b66900d78e98980ea2afc3c8fe5b93f4b38052f3018a230")
+ .unchecked_into(),
+ ),
+ // openbitlab_
+ // 12iho9gjSMvF9smJjnihmn9j9Qqr3S1LFD97e8Lkcw4R6Yeb
+ (
+ hex!("4c0aa0240b2d7485675e52cdb283a87973652f6acb42c830a5a5faa80f7a707e").into(),
+ hex!("1c346cb44aa03f8995eeee230970772d6268cd7606740f269bb4e609a01a3a15")
+ .unchecked_into(),
+ ),
+ // Math Crypto
+ // 112FKz5UNxjXqe3Wowe73a8FHnR5B4R9qi2pbMaXJczGNJsx
+ (
+ hex!("00f379b621bd73c45c7d155d2a1fe6a04649e3ece7c7e03b70b3a6242bc7c127").into(),
+ hex!("e063247ca37058db551a8d99f2f15cfede61fc796acc464a9cdce4c18f6a4659")
+ .unchecked_into(),
+ ),
+ ],
+ Vec::new(),
+ para_id,
+ )
+}
+
pub(super) fn preset_names() -> Vec {
- vec![PresetId::from("development"), PresetId::from("local_testnet")]
+ vec![PresetId::from("live"), PresetId::from("development"), PresetId::from("local_testnet")]
}
/// Provides the JSON representation of predefined genesis config for given `id`.
pub fn get_preset(id: &sp_genesis_builder::PresetId) -> Option> {
let patch = match id.try_into() {
+ Ok("live") => coretime_polkadot_live_genesis(1005.into()),
Ok("development") => coretime_polkadot_development_genesis(1005.into()),
Ok("local_testnet") => coretime_polkadot_local_testnet_genesis(1005.into()),
_ => return None,
diff --git a/system-parachains/encointer/src/lib.rs b/system-parachains/encointer/src/lib.rs
index f660ffe6cc..e4827dddae 100644
--- a/system-parachains/encointer/src/lib.rs
+++ b/system-parachains/encointer/src/lib.rs
@@ -33,7 +33,6 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
// Genesis preset configurations.
pub mod genesis_config_presets;
-mod migrations_fix;
mod weights;
pub mod xcm_config;
@@ -754,14 +753,9 @@ pub type UncheckedExtrinsic =
/// Extrinsic type that has already been checked.
pub type CheckedExtrinsic = generic::CheckedExtrinsic;
-parameter_types! {
- pub DmpQueueName: &'static str = "DmpQueue";
-}
-
/// Migrations to apply on runtime upgrade.
pub type Migrations = (
- frame_support::migrations::RemovePallet,
- migrations_fix::collator_selection_init::v0::InitInvulnerables,
+ // unreleased and/or un-applied
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5,
// permanent
pallet_xcm::migration::MigrateToLatestXcmVersion,
diff --git a/system-parachains/encointer/src/migrations_fix.rs b/system-parachains/encointer/src/migrations_fix.rs
deleted file mode 100644
index 472fbd5852..0000000000
--- a/system-parachains/encointer/src/migrations_fix.rs
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright (c) 2023 Encointer Association
-// This file is part of Encointer
-//
-// Encointer is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Encointer is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Encointer. If not, see .
-
-// the following are temporary local migration fixes to solve inconsistencies caused by not
-// migrating Storage at the time of migrating runtime code
-
-pub mod collator_selection_init {
- use frame_support::traits::OnRuntimeUpgrade;
- #[cfg(feature = "try-runtime")]
- use sp_runtime::TryRuntimeError;
-
- /// The log target.
- const TARGET: &str = "runtime::fix::collator_selection_init";
- pub mod v0 {
- use super::*;
- use crate::SessionKeys;
- use codec::EncodeLike;
- use frame_support::{pallet_prelude::*, traits::Currency};
- use hex_literal::hex;
- use log::info;
- use parachains_common::impls::BalanceOf;
- use sp_core::{crypto::key_types::AURA, sr25519};
- use sp_std::{vec, vec::Vec};
-
- const INVULNERABLE_AURA_A: [u8; 32] =
- hex!("5e962096da68302d5c47fce0178d72fab503c4f00a3f1df64856748f0d9dd51e");
- const INVULNERABLE_AURA_B: [u8; 32] =
- hex!("0cecb8d1c2c744ca4c5cea57f5d6c40238f4dad17afa213672b8b7d43b80a659");
- const INVULNERABLE_AURA_C: [u8; 32] =
- hex!("ca1951a3c4e100fb5a899e7bae3ea124491930a72000c5e4b2775fea27ecf05d");
- const INVULNERABLE_AURA_D: [u8; 32] =
- hex!("484b443bd95068b860c92b0f66487b78f58234eca0f88e2adbe80bae4807b809");
- const INVULNERABLE_AURA_E: [u8; 32] =
- hex!("6c642fb4b571a5685a869cd291fafd575be47a918b231ba28165e5c0cd0cfa15");
-
- const INVULNERABLE_ACCOUNT_A: [u8; 32] =
- hex!("920534bf448645557bae98bc7f681bd3ebed13d39bee28e10b193d4073357572");
- const INVULNERABLE_ACCOUNT_B: [u8; 32] =
- hex!("76bff5abc7a4fce647fab172c9f016af8f5b5f8c3da56a92b619bbc02989fb71");
- const INVULNERABLE_ACCOUNT_C: [u8; 32] =
- hex!("c0e021ab805fa956f29661c4380377e5296c5fa5fc16be26ffd516675a66bf6d");
- const INVULNERABLE_ACCOUNT_D: [u8; 32] =
- hex!("9c17e9b360d9ca3cf8e42ce015ab649281d42484e7240020a12f5b16acc0d718");
- const INVULNERABLE_ACCOUNT_E: [u8; 32] =
- hex!("2c3b7e77d0a8db2e3389669c4bc8112c34d5d1619cf20edc79c12c57a75f8c19");
-
- pub struct InitInvulnerables(sp_std::marker::PhantomData);
- impl OnRuntimeUpgrade for InitInvulnerables
- where
- T: frame_system::Config
- + pallet_collator_selection::Config
- + pallet_session::Config
- + pallet_balances::Config,
- ::AccountId: From<[u8; 32]>,
- ::ValidatorId: From<[u8; 32]>,
- ::Keys: From,
- ::Balance: From,
- ::Balance: EncodeLike<
- <::Currency as Currency<
- ::AccountId,
- >>::Balance,
- >,
- {
- #[cfg(feature = "try-runtime")]
- fn pre_upgrade() -> Result, TryRuntimeError> {
- let invulnerables_len = pallet_collator_selection::Invulnerables::::get().len();
- Ok((invulnerables_len as u32).encode())
- }
-
- fn on_runtime_upgrade() -> Weight {
- let invulnerables_len = pallet_collator_selection::Invulnerables::::get().len();
- if invulnerables_len > 0 {
- info!(target: TARGET, "no need to initialize invulnerables");
- return T::DbWeight::get().reads_writes(1, 0)
- }
- info!(target: TARGET, "initializing the set of invulnerables");
-
- let raw_aura_keys: Vec<[u8; 32]> = vec![
- INVULNERABLE_AURA_A,
- INVULNERABLE_AURA_B,
- INVULNERABLE_AURA_C,
- INVULNERABLE_AURA_D,
- INVULNERABLE_AURA_E,
- ];
- let raw_account_keys: Vec<[u8; 32]> = vec![
- INVULNERABLE_ACCOUNT_A,
- INVULNERABLE_ACCOUNT_B,
- INVULNERABLE_ACCOUNT_C,
- INVULNERABLE_ACCOUNT_D,
- INVULNERABLE_ACCOUNT_E,
- ];
-
- let validatorids: Vec<::ValidatorId> =
- raw_account_keys.iter().map(|&pk| pk.into()).collect();
-
- pallet_session::Validators::::put(validatorids);
-
- let queued_keys: Vec<(
- ::ValidatorId,
- ::Keys,
- )> = raw_account_keys
- .iter()
- .zip(raw_aura_keys.iter())
- .map(|(&account, &aura)| {
- (
- account.into(),
- SessionKeys { aura: sr25519::Public::from_raw(aura).into() }.into(),
- )
- })
- .collect();
-
- pallet_session::QueuedKeys::::put(queued_keys);
-
- for (&account, &aura) in raw_account_keys.iter().zip(raw_aura_keys.iter()) {
- pallet_session::NextKeys::::insert::<
- ::ValidatorId,
- ::Keys,
- >(
- account.into(),
- SessionKeys { aura: sr25519::Public::from_raw(aura).into() }.into(),
- );
- pallet_session::KeyOwner::::insert::<
- _,
- ::ValidatorId,
- >((AURA, aura.encode()), account.into());
- }
-
- let mut invulnerables: Vec<::AccountId> =
- raw_account_keys.iter().map(|&pk| pk.into()).collect();
- invulnerables.sort();
- let invulnerables: BoundedVec<_, T::MaxInvulnerables> =
- invulnerables.try_into().unwrap();
- pallet_collator_selection::Invulnerables::::put(invulnerables);
-
- pallet_collator_selection::CandidacyBond::::put::>(
- 5_000_000_000_000u128.into(),
- );
-
- T::DbWeight::get().reads_writes(0, 4 + 5 * 2)
- }
-
- #[cfg(feature = "try-runtime")]
- fn post_upgrade(state: sp_std::vec::Vec) -> Result<(), TryRuntimeError> {
- let invulnerables_len =
- pallet_collator_selection::Invulnerables::::get().len() as u32;
- let apriori_invulnerables_len: u32 = Decode::decode(&mut state.as_slice()).expect(
- "the state parameter should be something that was generated by pre_upgrade",
- );
- ensure!(
- invulnerables_len > 0,
- "invulnerables are empty after initialization. that should not happen"
- );
- info!(target: TARGET, "apriori invulnerables: {}, aposteriori: {}", apriori_invulnerables_len, invulnerables_len);
- Ok(())
- }
- }
- }
-}
diff --git a/system-parachains/people/people-kusama/src/lib.rs b/system-parachains/people/people-kusama/src/lib.rs
index f0b9bf90f3..7d2503f615 100644
--- a/system-parachains/people/people-kusama/src/lib.rs
+++ b/system-parachains/people/people-kusama/src/lib.rs
@@ -150,17 +150,9 @@ pub type SignedExtra = (
pub type UncheckedExtrinsic =
generic::UncheckedExtrinsic;
-parameter_types! {
- pub const IdentityMigratorPalletName: &'static str = "IdentityMigrator";
-}
/// Migrations to apply on runtime upgrade.
pub type Migrations = (
- pallet_collator_selection::migration::v2::MigrationToV2,
- // remove `identity-migrator`
- frame_support::migrations::RemovePallet<
- IdentityMigratorPalletName,
- ::DbWeight,
- >,
+ // unreleased and/or un-applied
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5,
// permanent
pallet_xcm::migration::MigrateToLatestXcmVersion,
diff --git a/system-parachains/people/people-polkadot/src/lib.rs b/system-parachains/people/people-polkadot/src/lib.rs
index ba4ebecc70..5aaac6a0ed 100644
--- a/system-parachains/people/people-polkadot/src/lib.rs
+++ b/system-parachains/people/people-polkadot/src/lib.rs
@@ -116,6 +116,7 @@ parameter_types! {
/// Migrations to apply on runtime upgrade.
pub type Migrations = (
+ // unreleased and/or un-applied
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5,
frame_support::migrations::RemovePallet<
IdentityMigratorPalletName,