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,