mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 18:41:03 +00:00
[Runtime] Bound XCMP queue (#2302)
Remove `without_storage_info` from the XCMP queue pallet. Part of https://github.com/paritytech/polkadot-sdk/issues/323 Changes: - Limit the number of channels that can be suspended at the same time. - Limit the number of channels that can have messages or signals pending at the same time. A No-OP migration is put in place to ensure that all `BoundedVec`s still decode and not truncate after upgrade. The storage version is thereby bumped to 4 to have our tooling remind us to deploy that migration. --------- Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
This commit is contained in:
committed by
GitHub
parent
a664908304
commit
b8f55d1b76
@@ -716,12 +716,19 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type ChannelInfo = ParachainSystem;
|
||||
type VersionWrapper = PolkadotXcm;
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = EnsureRoot<AccountId>;
|
||||
type ControllerOriginConverter = xcm_config::XcmOriginToTransactDispatchOrigin;
|
||||
type PriceForSiblingDelivery = PriceForSiblingParachainDelivery;
|
||||
}
|
||||
|
||||
impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime {
|
||||
// This must be the same as the `ChannelInfo` from the `Config`:
|
||||
type ChannelList = ParachainSystem;
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
pub const RelayOrigin: AggregateMessageOrigin = AggregateMessageOrigin::Parent;
|
||||
}
|
||||
@@ -993,8 +1000,8 @@ pub type UncheckedExtrinsic =
|
||||
pub type Migrations = (
|
||||
pallet_collator_selection::migration::v1::MigrateToV1<Runtime>,
|
||||
InitStorageVersions,
|
||||
// unreleased
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrateV3ToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5<Runtime>,
|
||||
);
|
||||
|
||||
/// Migration to initialize storage versions for pallets added after genesis.
|
||||
|
||||
@@ -668,13 +668,20 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type VersionWrapper = PolkadotXcm;
|
||||
// Enqueue XCMP messages from siblings for later processing.
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = EnsureRoot<AccountId>;
|
||||
type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo<Runtime>;
|
||||
type PriceForSiblingDelivery = PriceForSiblingParachainDelivery;
|
||||
}
|
||||
|
||||
impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime {
|
||||
// This must be the same as the `ChannelInfo` from the `Config`:
|
||||
type ChannelList = ParachainSystem;
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
pub const RelayOrigin: AggregateMessageOrigin = AggregateMessageOrigin::Parent;
|
||||
}
|
||||
@@ -947,8 +954,8 @@ pub type Migrations = (
|
||||
InitStorageVersions,
|
||||
// unreleased
|
||||
DeleteUndecodableStorage,
|
||||
// unreleased
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrateV3ToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5<Runtime>,
|
||||
);
|
||||
|
||||
/// Asset Hub Westend has some undecodable storage, delete it.
|
||||
|
||||
@@ -144,8 +144,9 @@ pub type Migrations = (
|
||||
pallet_collator_selection::migration::v1::MigrateToV1<Runtime>,
|
||||
pallet_multisig::migrations::v1::MigrateToV1<Runtime>,
|
||||
InitStorageVersions,
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4<Runtime>,
|
||||
// unreleased
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrateV3ToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5<Runtime>,
|
||||
snowbridge_pallet_system::migration::v0::InitializeOnUpgrade<
|
||||
Runtime,
|
||||
ConstU32<BRIDGE_HUB_ID>,
|
||||
@@ -405,13 +406,20 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type VersionWrapper = PolkadotXcm;
|
||||
// Enqueue XCMP messages from siblings for later processing.
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = EnsureRoot<AccountId>;
|
||||
type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo<Runtime>;
|
||||
type PriceForSiblingDelivery = PriceForSiblingParachainDelivery;
|
||||
}
|
||||
|
||||
impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime {
|
||||
// This must be the same as the `ChannelInfo` from the `Config`:
|
||||
type ChannelList = ParachainSystem;
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
pub const RelayOrigin: AggregateMessageOrigin = AggregateMessageOrigin::Parent;
|
||||
}
|
||||
|
||||
@@ -123,8 +123,8 @@ pub type Migrations = (
|
||||
pallet_collator_selection::migration::v1::MigrateToV1<Runtime>,
|
||||
pallet_multisig::migrations::v1::MigrateToV1<Runtime>,
|
||||
InitStorageVersions,
|
||||
// unreleased
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrateV3ToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5<Runtime>,
|
||||
);
|
||||
|
||||
/// Migration to initialize storage versions for pallets added after genesis.
|
||||
@@ -371,13 +371,20 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type ChannelInfo = ParachainSystem;
|
||||
type VersionWrapper = PolkadotXcm;
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = EnsureRoot<AccountId>;
|
||||
type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo<Runtime>;
|
||||
type PriceForSiblingDelivery = PriceForSiblingParachainDelivery;
|
||||
}
|
||||
|
||||
impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime {
|
||||
// This must be the same as the `ChannelInfo` from the `Config`:
|
||||
type ChannelList = ParachainSystem;
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
pub const RelayOrigin: AggregateMessageOrigin = AggregateMessageOrigin::Parent;
|
||||
}
|
||||
|
||||
@@ -445,13 +445,20 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type VersionWrapper = PolkadotXcm;
|
||||
// Enqueue XCMP messages from siblings for later processing.
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = EitherOfDiverse<EnsureRoot<AccountId>, Fellows>;
|
||||
type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo<Runtime>;
|
||||
type PriceForSiblingDelivery = PriceForSiblingParachainDelivery;
|
||||
}
|
||||
|
||||
impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime {
|
||||
// This must be the same as the `ChannelInfo` from the `Config`:
|
||||
type ChannelList = ParachainSystem;
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
pub const RelayOrigin: AggregateMessageOrigin = AggregateMessageOrigin::Parent;
|
||||
}
|
||||
@@ -720,8 +727,8 @@ pub type UncheckedExtrinsic =
|
||||
type Migrations = (
|
||||
// unreleased
|
||||
pallet_collator_selection::migration::v1::MigrateToV1<Runtime>,
|
||||
// unreleased
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrateV3ToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5<Runtime>,
|
||||
);
|
||||
|
||||
/// Executive: handles dispatch to the various modules.
|
||||
|
||||
@@ -104,7 +104,8 @@ pub type Migrations = (
|
||||
cumulus_pallet_xcmp_queue::migration::v3::MigrationToV3<Runtime>,
|
||||
pallet_contracts::Migration<Runtime>,
|
||||
// unreleased
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrateV3ToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5<Runtime>,
|
||||
);
|
||||
|
||||
type EventRecord = frame_system::EventRecord<
|
||||
|
||||
@@ -281,7 +281,9 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
cumulus_primitives_core::ParaId,
|
||||
parachains_common::message_queue::ParaIdToSibling,
|
||||
>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = EitherOfDiverse<
|
||||
EnsureRoot<AccountId>,
|
||||
EnsureXcm<IsMajorityOfBody<RelayLocation, ExecutiveBody>>,
|
||||
@@ -291,6 +293,11 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type PriceForSiblingDelivery = PriceForSiblingParachainDelivery;
|
||||
}
|
||||
|
||||
impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime {
|
||||
// This must be the same as the `ChannelInfo` from the `Config`:
|
||||
type ChannelList = ParachainSystem;
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
pub const RelayOrigin: AggregateMessageOrigin = AggregateMessageOrigin::Parent;
|
||||
}
|
||||
|
||||
@@ -106,7 +106,10 @@ pub type UncheckedExtrinsic =
|
||||
generic::UncheckedExtrinsic<Address, RuntimeCall, Signature, SignedExtra>;
|
||||
|
||||
/// Migrations to apply on runtime upgrade.
|
||||
pub type Migrations = (cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4<Runtime>,);
|
||||
pub type Migrations = (
|
||||
cumulus_pallet_xcmp_queue::migration::v4::MigrateV3ToV4<Runtime>,
|
||||
cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5<Runtime>,
|
||||
);
|
||||
|
||||
/// Executive: handles dispatch to the various modules.
|
||||
pub type Executive = frame_executive::Executive<
|
||||
@@ -332,13 +335,20 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type ChannelInfo = ParachainSystem;
|
||||
type VersionWrapper = PolkadotXcm;
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = RootOrFellows;
|
||||
type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo<Runtime>;
|
||||
type PriceForSiblingDelivery = PriceForSiblingParachainDelivery;
|
||||
}
|
||||
|
||||
impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime {
|
||||
// This must be the same as the `ChannelInfo` from the `Config`:
|
||||
type ChannelList = ParachainSystem;
|
||||
}
|
||||
|
||||
pub const PERIOD: u32 = 6 * HOURS;
|
||||
pub const OFFSET: u32 = 0;
|
||||
|
||||
|
||||
@@ -323,13 +323,20 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type ChannelInfo = ParachainSystem;
|
||||
type VersionWrapper = PolkadotXcm;
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = RootOrFellows;
|
||||
type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo<Runtime>;
|
||||
type PriceForSiblingDelivery = PriceForSiblingParachainDelivery;
|
||||
}
|
||||
|
||||
impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime {
|
||||
// This must be the same as the `ChannelInfo` from the `Config`:
|
||||
type ChannelList = ParachainSystem;
|
||||
}
|
||||
|
||||
pub const PERIOD: u32 = 6 * HOURS;
|
||||
pub const OFFSET: u32 = 0;
|
||||
|
||||
|
||||
@@ -301,13 +301,20 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type ChannelInfo = ParachainSystem;
|
||||
type VersionWrapper = PolkadotXcm;
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = RootOrFellows;
|
||||
type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type PriceForSiblingDelivery = PriceForSiblingParachainDelivery;
|
||||
type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo<Runtime>;
|
||||
}
|
||||
|
||||
impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime {
|
||||
// This must be the same as the `ChannelInfo` from the `Config`:
|
||||
type ChannelList = ParachainSystem;
|
||||
}
|
||||
|
||||
pub const PERIOD: u32 = 6 * HOURS;
|
||||
pub const OFFSET: u32 = 0;
|
||||
|
||||
|
||||
@@ -301,13 +301,20 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type ChannelInfo = ParachainSystem;
|
||||
type VersionWrapper = PolkadotXcm;
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = RootOrFellows;
|
||||
type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo<Runtime>;
|
||||
type PriceForSiblingDelivery = PriceForSiblingParachainDelivery;
|
||||
}
|
||||
|
||||
impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime {
|
||||
// This must be the same as the `ChannelInfo` from the `Config`:
|
||||
type ChannelList = ParachainSystem;
|
||||
}
|
||||
|
||||
pub const PERIOD: u32 = 6 * HOURS;
|
||||
pub const OFFSET: u32 = 0;
|
||||
|
||||
|
||||
@@ -549,7 +549,9 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type VersionWrapper = PolkadotXcm;
|
||||
// Enqueue XCMP messages from siblings for later processing.
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = EnsureRoot<AccountId>;
|
||||
type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type WeightInfo = ();
|
||||
|
||||
@@ -542,7 +542,9 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime {
|
||||
type VersionWrapper = ();
|
||||
// Enqueue XCMP messages from siblings for later processing.
|
||||
type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
|
||||
type MaxInboundSuspended = sp_core::ConstU32<1_000>;
|
||||
type MaxInboundSuspended = ConstU32<1_000>;
|
||||
type MaxActiveOutboundChannels = ConstU32<128>;
|
||||
type MaxPageSize = ConstU32<{ 1 << 16 }>;
|
||||
type ControllerOrigin = EnsureRoot<AccountId>;
|
||||
type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type WeightInfo = cumulus_pallet_xcmp_queue::weights::SubstrateWeight<Runtime>;
|
||||
|
||||
Reference in New Issue
Block a user