diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs index 43b7bf0ba1184..97eaa72ec5318 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs @@ -40,7 +40,7 @@ use assets_common::{ use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases; use cumulus_primitives_core::{AggregateMessageOrigin, ClaimQueueOffset, CoreSelector}; use sp_api::impl_runtime_apis; -use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; +use sp_core::{crypto::KeyTypeId, OpaqueMetadata, Get}; use sp_runtime::{ generic, impl_opaque_keys, traits::{AccountIdConversion, BlakeTwo256, Block as BlockT, Saturating, Verify}, @@ -2010,6 +2010,12 @@ impl_runtime_apis! { PolkadotXcm::is_trusted_teleporter(asset, location) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/xcm_config.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/xcm_config.rs index 0c6ff5e4bfddc..b84150bee54bd 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/xcm_config.rs @@ -71,7 +71,7 @@ parameter_types! { pub const RelayNetwork: NetworkId = NetworkId::ByGenesis(ROCOCO_GENESIS_HASH); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); pub UniversalLocation: InteriorLocation = - [GlobalConsensus(RelayNetwork::get()), Parachain(ParachainInfo::parachain_id().into())].into(); + [GlobalConsensus(RelayNetwork::get()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub UniversalLocationNetworkId: NetworkId = UniversalLocation::get().global_consensus().unwrap(); pub TrustBackedAssetsPalletLocation: Location = PalletInstance(TrustBackedAssetsPalletIndex::get()).into(); diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs index f73db17194bcf..491403f14994a 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs @@ -2308,6 +2308,12 @@ impl_runtime_apis! { ) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/xcm_config.rs index 1ea2ce5136abd..673a1826169f9 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/xcm_config.rs @@ -69,7 +69,7 @@ parameter_types! { pub const RelayNetwork: Option = Some(NetworkId::ByGenesis(WESTEND_GENESIS_HASH)); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); pub UniversalLocation: InteriorLocation = - [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(ParachainInfo::parachain_id().into())].into(); + [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub UniversalLocationNetworkId: NetworkId = UniversalLocation::get().global_consensus().unwrap(); pub TrustBackedAssetsPalletLocation: Location = PalletInstance(TrustBackedAssetsPalletIndex::get()).into(); diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs index fdba23a2915f4..45258e5d5fd73 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs @@ -1540,6 +1540,12 @@ impl_runtime_apis! { PolkadotXcm::is_trusted_teleporter(asset, location) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } #[cfg(test)] diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs index 12dc7e5dd7332..684ef82cf6afb 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs @@ -62,7 +62,7 @@ parameter_types! { pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); pub RelayNetwork: NetworkId = NetworkId::ByGenesis(ROCOCO_GENESIS_HASH); pub UniversalLocation: InteriorLocation = - [GlobalConsensus(RelayNetwork::get()), Parachain(ParachainInfo::parachain_id().into())].into(); + [GlobalConsensus(RelayNetwork::get()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub const MaxInstructions: u32 = 100; pub const MaxAssetsIntoHolding: u32 = 64; pub TreasuryAccount: AccountId = TREASURY_PALLET_ID.into_account_truncating(); diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs index 45d08ba8546cd..f3f694b89dfd9 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs @@ -1361,6 +1361,12 @@ impl_runtime_apis! { PolkadotXcm::is_trusted_teleporter(asset, location) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs index 1585ef692fd52..7cb2a8b8bb1a1 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs @@ -61,7 +61,7 @@ parameter_types! { pub const RelayNetwork: NetworkId = NetworkId::ByGenesis(WESTEND_GENESIS_HASH); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); pub UniversalLocation: InteriorLocation = - [GlobalConsensus(RelayNetwork::get()), Parachain(ParachainInfo::parachain_id().into())].into(); + [GlobalConsensus(RelayNetwork::get()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub const MaxInstructions: u32 = 100; pub const MaxAssetsIntoHolding: u32 = 64; pub TreasuryAccount: AccountId = TREASURY_PALLET_ID.into_account_truncating(); diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs index 3fcaeb1dfc4fc..661066be5bf5f 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs @@ -268,7 +268,7 @@ parameter_types! { // The asset's interior location for the paying account. This is the Fellowship Treasury // pallet instance (which sits at index 65). pub FellowshipTreasuryInteriorLocation: InteriorLocation = PalletInstance(65).into(); - pub SelfParaId: ParaId = ParachainInfo::parachain_id(); + pub SelfParaId: ParaId = parachain_info::Pallet::::parachain_id(); } /// [`PayOverXcm`] setup to pay the Fellowship Treasury. diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/lib.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/lib.rs index 5e087832f0e82..4a6622471e068 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/lib.rs @@ -1299,6 +1299,12 @@ impl_runtime_apis! { PolkadotXcm::is_trusted_teleporter(asset, location) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/xcm_config.rs index c5ab21fe8f904..f07f31d7d8835 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/xcm_config.rs @@ -53,7 +53,7 @@ parameter_types! { pub const RelayNetwork: Option = Some(NetworkId::ByGenesis(WESTEND_GENESIS_HASH)); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); pub UniversalLocation: InteriorLocation = - [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(ParachainInfo::parachain_id().into())].into(); + [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub RelayTreasuryLocation: Location = (Parent, PalletInstance(westend_runtime_constants::TREASURY_PALLET_ID)).into(); pub CheckingAccount: AccountId = PolkadotXcm::check_account(); pub const GovernanceLocation: Location = Location::parent(); diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs index 5ad4026e0b2b4..62c8cf782184f 100644 --- a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs @@ -33,7 +33,7 @@ extern crate alloc; use alloc::{vec, vec::Vec}; use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases; -use cumulus_primitives_core::{AggregateMessageOrigin, ClaimQueueOffset, CoreSelector}; +use cumulus_primitives_core::{AggregateMessageOrigin, ClaimQueueOffset, CoreSelector, ParaId}; use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; use sp_runtime::{ @@ -892,6 +892,12 @@ impl_runtime_apis! { PolkadotXcm::is_trusted_teleporter(asset, location) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs index 532ad4ff4ce00..ff9fb3ed93a70 100644 --- a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs @@ -55,7 +55,7 @@ parameter_types! { pub const RelayLocation: Location = Location::parent(); pub const RelayNetwork: NetworkId = NetworkId::ByGenesis(ROCOCO_GENESIS_HASH); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); - pub UniversalLocation: InteriorLocation = [GlobalConsensus(RelayNetwork::get()), Parachain(ParachainInfo::parachain_id().into())].into(); + pub UniversalLocation: InteriorLocation = [GlobalConsensus(RelayNetwork::get()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub const ExecutiveBody: BodyId = BodyId::Executive; pub TreasuryAccount: AccountId = TREASURY_PALLET_ID.into_account_truncating(); pub RelayTreasuryLocation: Location = (Parent, PalletInstance(rococo_runtime_constants::TREASURY_PALLET_ID)).into(); diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/lib.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/lib.rs index 622a40e1d8dc0..ddd80d21fee66 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/lib.rs @@ -1182,6 +1182,12 @@ impl_runtime_apis! { PolkadotXcm::is_trusted_teleporter(asset, location) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs index 7c3f8a365856c..2a7cd81f918e6 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs @@ -57,7 +57,7 @@ parameter_types! { pub const RelayNetwork: Option = Some(NetworkId::ByGenesis(ROCOCO_GENESIS_HASH)); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); pub UniversalLocation: InteriorLocation = - [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(ParachainInfo::parachain_id().into())].into(); + [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub BrokerPalletLocation: Location = PalletInstance(::index() as u8).into(); pub const MaxInstructions: u32 = 100; diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/lib.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/lib.rs index 7312c9c1639d2..c5ca6b7de5cdd 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/lib.rs @@ -1177,6 +1177,12 @@ impl_runtime_apis! { PolkadotXcm::is_trusted_teleporter(asset, location) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs index a124c1978309e..26732ae42ace0 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs @@ -59,7 +59,7 @@ parameter_types! { pub const RelayNetwork: Option = Some(NetworkId::ByGenesis(WESTEND_GENESIS_HASH)); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); pub UniversalLocation: InteriorLocation = - [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(ParachainInfo::parachain_id().into())].into(); + [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub BrokerPalletLocation: Location = PalletInstance(::index() as u8).into(); pub const MaxInstructions: u32 = 100; diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/lib.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/lib.rs index 75f45297fe2cd..243a4f57ecd27 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/lib.rs @@ -64,7 +64,7 @@ use sp_runtime::{ use sp_version::NativeVersion; use sp_version::RuntimeVersion; -use cumulus_primitives_core::{AggregateMessageOrigin, ClaimQueueOffset, CoreSelector}; +use cumulus_primitives_core::{AggregateMessageOrigin, ClaimQueueOffset, CoreSelector, ParaId}; pub use frame_support::{ construct_runtime, derive_impl, dispatch::DispatchClass, @@ -501,6 +501,12 @@ impl_runtime_apis! { vec![] } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/xcm_config.rs index b67c32495d67c..33accd37c42c9 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/xcm_config.rs @@ -31,7 +31,7 @@ use xcm_builder::{ parameter_types! { pub const WestendLocation: Location = Location::parent(); pub const WestendNetwork: NetworkId = NetworkId::ByGenesis(WESTEND_GENESIS_HASH); - pub UniversalLocation: InteriorLocation = [GlobalConsensus(WestendNetwork::get()), Parachain(ParachainInfo::parachain_id().into())].into(); + pub UniversalLocation: InteriorLocation = [GlobalConsensus(WestendNetwork::get()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); } /// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance, diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/lib.rs b/cumulus/parachains/runtimes/people/people-rococo/src/lib.rs index cb0282b17a6ce..6cff2dad19206 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/lib.rs @@ -1097,6 +1097,12 @@ impl_runtime_apis! { PolkadotXcm::is_trusted_teleporter(asset, location) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/xcm_config.rs b/cumulus/parachains/runtimes/people/people-rococo/src/xcm_config.rs index 724d87587c6c5..f5184cb4d4992 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/xcm_config.rs @@ -54,7 +54,7 @@ parameter_types! { pub const RelayNetwork: Option = Some(NetworkId::ByGenesis(ROCOCO_GENESIS_HASH)); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); pub UniversalLocation: InteriorLocation = - [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(ParachainInfo::parachain_id().into())].into(); + [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub const MaxInstructions: u32 = 100; pub const MaxAssetsIntoHolding: u32 = 64; pub const GovernanceLocation: Location = Location::parent(); diff --git a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs index 050256dd4f6a3..2cf7d2391a5de 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs @@ -1097,6 +1097,12 @@ impl_runtime_apis! { PolkadotXcm::is_trusted_teleporter(asset, location) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/people/people-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/people/people-westend/src/xcm_config.rs index 7eaa43c05b208..51c98a771198f 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/xcm_config.rs @@ -56,7 +56,7 @@ parameter_types! { pub const RelayNetwork: Option = Some(NetworkId::ByGenesis(WESTEND_GENESIS_HASH)); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); pub UniversalLocation: InteriorLocation = - [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(ParachainInfo::parachain_id().into())].into(); + [GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub const MaxInstructions: u32 = 100; pub const MaxAssetsIntoHolding: u32 = 64; pub FellowshipLocation: Location = Location::new(1, Parachain(1001)); diff --git a/cumulus/parachains/runtimes/testing/penpal/src/lib.rs b/cumulus/parachains/runtimes/testing/penpal/src/lib.rs index 095ae2ed9e962..97bfc2df5a92d 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/lib.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/lib.rs @@ -1179,6 +1179,12 @@ impl_runtime_apis! { PolkadotXcm::is_trusted_teleporter(asset, location) } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs b/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs index 82db8829e516a..c01ae2a12bf06 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs @@ -85,7 +85,7 @@ parameter_types! { pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); pub UniversalLocation: InteriorLocation = [ GlobalConsensus(RelayNetworkId::get()), - Parachain(ParachainInfo::parachain_id().into()) + Parachain(parachain_info::Pallet::::parachain_id().into()) ].into(); pub TreasuryAccount: AccountId = TREASURY_PALLET_ID.into_account_truncating(); pub StakingPot: AccountId = CollatorSelection::account_id(); diff --git a/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs index f6b96b28a8dd6..0824e6b831c07 100644 --- a/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -338,7 +338,7 @@ parameter_types! { pub const RocLocation: Location = Location::parent(); pub const RococoNetwork: NetworkId = NetworkId::ByGenesis(ROCOCO_GENESIS_HASH); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); - pub UniversalLocation: InteriorLocation = [GlobalConsensus(RococoNetwork::get()), Parachain(ParachainInfo::parachain_id().into())].into(); + pub UniversalLocation: InteriorLocation = [GlobalConsensus(RococoNetwork::get()), Parachain(parachain_info::Pallet::::parachain_id().into())].into(); pub CheckingAccount: AccountId = PolkadotXcm::check_account(); } @@ -871,6 +871,12 @@ impl_runtime_apis! { ParachainSystem::core_selector() } } + + impl cumulus_primitives_core::GetParachainIdentity for Runtime { + fn parachain_id() -> ParaId { + parachain_info::Pallet::::parachain_id() + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/polkadot-omni-node/lib/src/command.rs b/cumulus/polkadot-omni-node/lib/src/command.rs index bf0d264e8c9ca..57baace953f93 100644 --- a/cumulus/polkadot-omni-node/lib/src/command.rs +++ b/cumulus/polkadot-omni-node/lib/src/command.rs @@ -226,24 +226,19 @@ pub fn run(cmd_config: RunConfig) -> Result<() runner.run_node_until_exit(|config| async move { let node_spec = new_node_spec(&config, &cmd_config.runtime_resolver, &cli.node_extra_args())?; - let para_id = ParaId::from( - Extensions::try_get(&*config.chain_spec) - .map(|e| e.para_id) - .ok_or("Could not find parachain extension in chain-spec.")?, - ); if cli.run.base.is_dev()? { // Set default dev block time to 3000ms if not set. // TODO: take block time from AURA config if set. let dev_block_time = cli.dev_block_time.unwrap_or(DEFAULT_DEV_BLOCK_TIME_MS); return node_spec - .start_manual_seal_node(config, para_id, dev_block_time) + .start_manual_seal_node(config, dev_block_time) .map_err(Into::into); } if let Some(dev_block_time) = cli.dev_block_time { return node_spec - .start_manual_seal_node(config, para_id, dev_block_time) + .start_manual_seal_node(config, dev_block_time) .map_err(Into::into); } @@ -297,19 +292,11 @@ pub fn run(cmd_config: RunConfig) -> Result<() }) }) .flatten(); - - let parachain_account = - AccountIdConversion::::into_account_truncating( - ¶_id, - ); - let tokio_handle = config.tokio_handle.clone(); let polkadot_config = SubstrateCli::create_configuration(&polkadot_cli, &polkadot_cli, tokio_handle) .map_err(|err| format!("Relay chain argument error: {}", err))?; - info!("🪪 Parachain id: {:?}", para_id); - info!("🧾 Parachain Account: {}", parachain_account); info!("✍️ Is collating: {}", if config.role.is_authority() { "yes" } else { "no" }); node_spec @@ -317,7 +304,6 @@ pub fn run(cmd_config: RunConfig) -> Result<() config, polkadot_config, collator_options, - para_id, hwbench, cli.node_extra_args(), ) diff --git a/cumulus/polkadot-omni-node/lib/src/common/mod.rs b/cumulus/polkadot-omni-node/lib/src/common/mod.rs index af003b87e3d24..4a84f6f2f5a60 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/mod.rs @@ -26,7 +26,7 @@ pub mod runtime; pub mod spec; pub mod types; -use cumulus_primitives_core::{CollectCollationInfo, GetCoreSelectorApi}; +use cumulus_primitives_core::{CollectCollationInfo, GetCoreSelectorApi, GetParachainIdentity}; use sc_client_db::DbHash; use sc_offchain::OffchainWorkerApi; use serde::de::DeserializeOwned; @@ -69,6 +69,7 @@ pub trait NodeRuntimeApi: + OffchainWorkerApi + CollectCollationInfo + GetCoreSelectorApi + + GetParachainIdentity + Sized { } @@ -82,6 +83,7 @@ impl NodeRuntimeApi for T where + OffchainWorkerApi + GetCoreSelectorApi + CollectCollationInfo + + GetParachainIdentity { } diff --git a/cumulus/polkadot-omni-node/lib/src/common/spec.rs b/cumulus/polkadot-omni-node/lib/src/common/spec.rs index b00823eb00c19..e5c27a508c285 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/spec.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/spec.rs @@ -46,6 +46,10 @@ use sc_transaction_pool::TransactionPoolHandle; use sc_transaction_pool_api::OffchainTransactionPoolFactory; use sp_keystore::KeystorePtr; use std::{future::Future, pin::Pin, sync::Arc, time::Duration}; +use sp_api::ProvideRuntimeApi; +use cumulus_primitives_core::GetParachainIdentity; +use log::info; +use sp_runtime::traits::AccountIdConversion; pub(crate) trait BuildImportQueue< Block: BlockT, @@ -256,7 +260,6 @@ pub(crate) trait NodeSpec: BaseNodeSpec { parachain_config: Configuration, polkadot_config: Configuration, collator_options: CollatorOptions, - para_id: ParaId, hwbench: Option, node_extra_args: NodeExtraArgs, ) -> Pin>>> @@ -272,6 +275,15 @@ pub(crate) trait NodeSpec: BaseNodeSpec { let client = params.client.clone(); let backend = params.backend.clone(); let mut task_manager = params.task_manager; + let best_hash = client.chain_info().best_hash; + let para_id = client.runtime_api().parachain_id(best_hash).expect("Failed to retrieve parachain id from runtime"); + + let parachain_account = + AccountIdConversion::::into_account_truncating( + ¶_id, + ); + info!("🪪 Parachain id: {:?}", para_id); + info!("🧾 Parachain Account: {}", parachain_account); let (relay_chain_interface, collator_key) = build_relay_chain_interface( polkadot_config, ¶chain_config, @@ -440,7 +452,6 @@ pub(crate) trait DynNodeSpec: NodeCommandRunner { parachain_config: Configuration, polkadot_config: Configuration, collator_options: CollatorOptions, - para_id: ParaId, hwbench: Option, node_extra_args: NodeExtraArgs, ) -> Pin>>>; @@ -455,7 +466,6 @@ where parachain_config: Configuration, polkadot_config: Configuration, collator_options: CollatorOptions, - para_id: ParaId, hwbench: Option, node_extra_args: NodeExtraArgs, ) -> Pin>>> { @@ -465,7 +475,6 @@ where parachain_config, polkadot_config, collator_options, - para_id, hwbench, node_extra_args, ), @@ -474,7 +483,6 @@ where parachain_config, polkadot_config, collator_options, - para_id, hwbench, node_extra_args, ), diff --git a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs index 636c845271d54..ef77540fa4b03 100644 --- a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs +++ b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs @@ -15,7 +15,7 @@ // limitations under the License. pub(crate) mod imports { - pub use cumulus_primitives_core::{ClaimQueueOffset, CoreSelector}; + pub use cumulus_primitives_core::{ClaimQueueOffset, CoreSelector, ParaId}; pub use parachains_common::{AccountId, Balance, Nonce}; pub use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; pub use sp_runtime::{ @@ -168,7 +168,11 @@ macro_rules! impl_node_runtime_apis { unimplemented!() } } - + impl cumulus_primitives_core::GetParachainIdentity<$block> for $runtime { + fn parachain_id() -> ParaId { + unimplemented!() + } + } #[cfg(feature = "try-runtime")] impl frame_try_runtime::TryRuntime<$block> for $runtime { fn on_runtime_upgrade( diff --git a/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs b/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs index 0d526b09834e9..4579afb8722f0 100644 --- a/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs +++ b/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs @@ -48,7 +48,7 @@ use cumulus_client_consensus_proposer::{Proposer, ProposerInterface}; use cumulus_client_consensus_relay_chain::Verifier as RelayChainVerifier; #[allow(deprecated)] use cumulus_client_service::CollatorSybilResistance; -use cumulus_primitives_core::{relay_chain::ValidationCode, ParaId}; +use cumulus_primitives_core::{relay_chain::ValidationCode, ParaId, GetParachainIdentity}; use cumulus_relay_chain_interface::{OverseerHandle, RelayChainInterface}; use futures::prelude::*; use polkadot_primitives::CollatorPair; @@ -214,7 +214,8 @@ where RuntimeApi: ConstructNodeRuntimeApi>, RuntimeApi::RuntimeApi: AuraRuntimeApi + pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi - + substrate_frame_rpc_system::AccountNonceApi, + + substrate_frame_rpc_system::AccountNonceApi + + GetParachainIdentity, AuraId: AuraIdT + Sync, { if extra_args.use_slot_based_consensus { diff --git a/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs b/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs index 7c5221632d898..d6728c19d5dde 100644 --- a/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs +++ b/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs @@ -35,6 +35,9 @@ use sc_transaction_pool_api::OffchainTransactionPoolFactory; use sp_api::{ApiExt, ProvideRuntimeApi}; use sp_runtime::traits::Header; use std::{marker::PhantomData, sync::Arc}; +use log::info; +use sp_runtime::traits::AccountIdConversion; +use cumulus_primitives_core::GetParachainIdentity; pub struct ManualSealNode(PhantomData); @@ -78,7 +81,6 @@ impl ManualSealNode { pub fn start_node( &self, mut config: Configuration, - para_id: ParaId, block_time: u64, ) -> sc_service::error::Result where @@ -96,6 +98,16 @@ impl ManualSealNode { } = Self::new_partial(&config)?; let select_chain = LongestChain::new(backend.clone()); + let best_hash = client.chain_info().best_hash; + let para_id = client.runtime_api().parachain_id(best_hash).expect("Failed to retrieve parachain id from runtime"); + + let parachain_account = + AccountIdConversion::::into_account_truncating( + ¶_id, + ); + info!("🪪 Parachain id: {:?}", para_id); + info!("🧾 Parachain Account: {}", parachain_account); + // Since this is a dev node, prevent it from connecting to peers. config.network.default_peers_set.in_peers = 0; config.network.default_peers_set.out_peers = 0; diff --git a/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs b/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs index de27ce3704fc3..94a9d165bbc17 100644 --- a/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs @@ -35,7 +35,6 @@ pub trait DynNodeSpecExt: DynNodeSpec { fn start_manual_seal_node( &self, config: Configuration, - para_id: ParaId, block_time: u64, ) -> sc_service::error::Result; } @@ -48,15 +47,14 @@ where fn start_manual_seal_node( &self, config: Configuration, - para_id: ParaId, block_time: u64, ) -> sc_service::error::Result { let node = ManualSealNode::::new(); match config.network.network_backend { sc_network::config::NetworkBackendType::Libp2p => - node.start_node::>(config, para_id, block_time), + node.start_node::>(config, block_time), sc_network::config::NetworkBackendType::Litep2p => - node.start_node::(config, para_id, block_time), + node.start_node::(config, block_time), } } } diff --git a/cumulus/primitives/core/src/lib.rs b/cumulus/primitives/core/src/lib.rs index 9169c12d8eb13..8b34230f29f22 100644 --- a/cumulus/primitives/core/src/lib.rs +++ b/cumulus/primitives/core/src/lib.rs @@ -402,4 +402,11 @@ sp_api::decl_runtime_apis! { /// Retrieve core selector and claim queue offset for the next block. fn core_selector() -> (CoreSelector, ClaimQueueOffset); } + + /// Runtime api used to access general info about a parachain runtime. + pub trait GetParachainIdentity { + + /// Retrieve the parachain id used for runtime. + fn parachain_id() -> ParaId; + } } diff --git a/cumulus/test/service/src/chain_spec.rs b/cumulus/test/service/src/chain_spec.rs index b59bd7ab46bdb..fe4bec90792e7 100644 --- a/cumulus/test/service/src/chain_spec.rs +++ b/cumulus/test/service/src/chain_spec.rs @@ -73,7 +73,7 @@ pub fn get_chain_spec_with_extra_endowed( } }); - if let Some(id) = id { + if let Some(id) = id { // Here remove parachain Id from chain specification. // Merge parachain ID if given, otherwise use the one from the preset. sc_chain_spec::json_merge( &mut patch_json, diff --git a/templates/parachain/runtime/src/configs/xcm_config.rs b/templates/parachain/runtime/src/configs/xcm_config.rs index 3da3b711f4ff3..dd648b43de7ff 100644 --- a/templates/parachain/runtime/src/configs/xcm_config.rs +++ b/templates/parachain/runtime/src/configs/xcm_config.rs @@ -33,7 +33,7 @@ parameter_types! { pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); // For the real deployment, it is recommended to set `RelayNetwork` according to the relay chain // and prepend `UniversalLocation` with `GlobalConsensus(RelayNetwork::get())`. - pub UniversalLocation: InteriorLocation = Parachain(ParachainInfo::parachain_id().into()).into(); + pub UniversalLocation: InteriorLocation = Parachain(parachain_info::Pallet::::parachain_id().into()).into(); } /// Type for specifying how a `Location` can be converted into an `AccountId`. This is used