diff --git a/runtime/kusama/src/xcm_config.rs b/runtime/kusama/src/xcm_config.rs index 5363541e31c1..5bf45cfc89c4 100644 --- a/runtime/kusama/src/xcm_config.rs +++ b/runtime/kusama/src/xcm_config.rs @@ -152,26 +152,29 @@ parameter_types! { pub const CouncilBodyId: BodyId = BodyId::Executive; } +/// Type to convert the council origin to a Plurality `MultiLocation` value. +pub type CouncilToPlurality = BackingToPlurality< + Origin, + pallet_collective::Origin, + CouncilBodyId, +>; + /// Type to convert an `Origin` type value into a `MultiLocation` value which represents an interior location /// of this chain. pub type LocalOriginToLocation = ( // We allow an origin from the Collective pallet to be used in XCM as a corresponding Plurality of the // `Unit` body. - BackingToPlurality< - Origin, - pallet_collective::Origin, - CouncilBodyId, - >, + CouncilToPlurality, // And a usual Signed origin to be used in XCM as a corresponding AccountId32 SignedToAccountId32, ); impl pallet_xcm::Config for Runtime { type Event = Event; - // We don't allow any messages to be sent via the transaction yet. This is basically safe to - // enable, (safe the possibility of someone spamming the parachain if they're willing to pay - // the DOT to send from the Relay-chain). But it's useless until we bring in XCM v3 which will - // make `DescendOrigin` a bit more useful. - type SendXcmOrigin = xcm_builder::EnsureXcmOrigin; + // We only allow the council to send messages. This is basically safe to enable for everyone + // (safe the possibility of someone spamming the parachain if they're willing to pay the KSM to + // send from the Relay-chain), but it's useless until we bring in XCM v3 which will make + // `DescendOrigin` a bit more useful. + type SendXcmOrigin = xcm_builder::EnsureXcmOrigin; type XcmRouter = XcmRouter; // Anyone can execute XCM messages locally. type ExecuteXcmOrigin = xcm_builder::EnsureXcmOrigin; diff --git a/runtime/polkadot/src/xcm_config.rs b/runtime/polkadot/src/xcm_config.rs index f75d30d079f4..a7ea36445bd8 100644 --- a/runtime/polkadot/src/xcm_config.rs +++ b/runtime/polkadot/src/xcm_config.rs @@ -157,24 +157,27 @@ parameter_types! { pub const AdvertisedXcmVersion: u32 = 2; } +/// Type to convert a council origin to a Plurality `MultiLocation` value. +pub type CouncilToPlurality = BackingToPlurality< + Origin, + pallet_collective::Origin, + CouncilBodyId, +>; + /// Type to convert an `Origin` type value into a `MultiLocation` value which represents an interior location /// of this chain. pub type LocalOriginToLocation = ( // We allow an origin from the Collective pallet to be used in XCM as a corresponding Plurality of the // `Unit` body. - BackingToPlurality< - Origin, - pallet_collective::Origin, - CouncilBodyId, - >, + CouncilToPlurality, // And a usual Signed origin to be used in XCM as a corresponding AccountId32 SignedToAccountId32, ); impl pallet_xcm::Config for Runtime { type Event = Event; - // Not much use in sending XCM at this point. - type SendXcmOrigin = xcm_builder::EnsureXcmOrigin; // == Deny All + // Only allow the council to send messages. + type SendXcmOrigin = xcm_builder::EnsureXcmOrigin; type XcmRouter = XcmRouter; // Anyone can execute XCM messages locally... type ExecuteXcmOrigin = xcm_builder::EnsureXcmOrigin;