diff --git a/cumulus/polkadot-parachains/statemine/src/lib.rs b/cumulus/polkadot-parachains/statemine/src/lib.rs index 2936f877a4ed37ebfd9446743f5fb6d86ce9fccf..a50c0b7752af8454f65e13826fd6937300071aba 100644 --- a/cumulus/polkadot-parachains/statemine/src/lib.rs +++ b/cumulus/polkadot-parachains/statemine/src/lib.rs @@ -75,7 +75,8 @@ use xcm_builder::{ ConvertedConcreteAssetId, CurrencyAdapter, EnsureXcmOrigin, FixedWeightBounds, FungiblesAdapter, IsConcrete, LocationInverter, NativeAsset, ParentAsSuperuser, ParentIsDefault, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, - SignedAccountId32AsNative, SovereignSignedViaLocation, TakeWeightCredit, UsingComponents, + SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, + UsingComponents, }; use xcm_executor::{traits::JustTry, Config, XcmExecutor}; @@ -90,7 +91,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("statemine"), impl_name: create_runtime_str!("statemine"), authoring_version: 1, - spec_version: 600, + spec_version: 601, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 4, @@ -564,8 +565,9 @@ parameter_types! { pub const MaxDownwardMessageWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 10; } -/// No local origins on this chain are allowed to dispatch XCM sends/executions. -pub type LocalOriginToLocation = (); +/// Converts a local signed origin into an XCM multilocation. +/// Forms the basis for local origins sending/executing XCMs. +pub type LocalOriginToLocation = SignedToAccountId32<Origin, AccountId, RelayNetwork>; /// The means for routing XCM messages which are not for local execution into the right message /// queues. @@ -578,9 +580,12 @@ pub type XcmRouter = ( impl pallet_xcm::Config for Runtime { type Event = Event; - type SendXcmOrigin = EnsureXcmOrigin<Origin, LocalOriginToLocation>; + // We want to disallow users sending (arbitrary) XCMs from this chain. + type SendXcmOrigin = EnsureXcmOrigin<Origin, ()>; type XcmRouter = XcmRouter; + // We support local origins dispatching XCM executions in principle... type ExecuteXcmOrigin = EnsureXcmOrigin<Origin, LocalOriginToLocation>; + // ... but disallow generic XCM execution. As a result only teleports and reserve transfers are allowed. type XcmExecuteFilter = Nothing; type XcmExecutor = XcmExecutor<XcmConfig>; type XcmTeleportFilter = Everything; diff --git a/cumulus/polkadot-parachains/statemint/src/lib.rs b/cumulus/polkadot-parachains/statemint/src/lib.rs index 996e90efc90090d49b4ebf6a019d1fcba2e42b46..c7c7200181447692bbe4eeee24edb860c30472a2 100644 --- a/cumulus/polkadot-parachains/statemint/src/lib.rs +++ b/cumulus/polkadot-parachains/statemint/src/lib.rs @@ -75,7 +75,8 @@ use xcm_builder::{ ConvertedConcreteAssetId, CurrencyAdapter, EnsureXcmOrigin, FixedWeightBounds, FungiblesAdapter, IsConcrete, LocationInverter, NativeAsset, ParentAsSuperuser, ParentIsDefault, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, - SignedAccountId32AsNative, SovereignSignedViaLocation, TakeWeightCredit, UsingComponents, + SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, + UsingComponents, }; use xcm_executor::{traits::JustTry, Config, XcmExecutor}; @@ -90,7 +91,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("statemint"), impl_name: create_runtime_str!("statemint"), authoring_version: 1, - spec_version: 600, + spec_version: 601, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 4, @@ -576,8 +577,9 @@ parameter_types! { pub const MaxDownwardMessageWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 10; } -/// No local origins on this chain are allowed to dispatch XCM sends/executions. -pub type LocalOriginToLocation = (); +/// Converts a local signed origin into an XCM multilocation. +/// Forms the basis for local origins sending/executing XCMs. +pub type LocalOriginToLocation = SignedToAccountId32<Origin, AccountId, RelayNetwork>; /// The means for routing XCM messages which are not for local execution into the right message /// queues. @@ -590,9 +592,12 @@ pub type XcmRouter = ( impl pallet_xcm::Config for Runtime { type Event = Event; - type SendXcmOrigin = EnsureXcmOrigin<Origin, LocalOriginToLocation>; + // We want to disallow users sending (arbitrary) XCMs from this chain. + type SendXcmOrigin = EnsureXcmOrigin<Origin, ()>; type XcmRouter = XcmRouter; + // We support local origins dispatching XCM executions in principle... type ExecuteXcmOrigin = EnsureXcmOrigin<Origin, LocalOriginToLocation>; + // ... but disallow generic XCM execution. As a result only teleports and reserve transfers are allowed. type XcmExecuteFilter = Nothing; type XcmExecutor = XcmExecutor<XcmConfig>; type XcmTeleportFilter = Nothing; diff --git a/cumulus/polkadot-parachains/westmint/src/lib.rs b/cumulus/polkadot-parachains/westmint/src/lib.rs index 5193a98c0d651b97665c3670792d7366fdcdaf2f..89963675dc942d83b45b3a9b87deccf9656b3232 100644 --- a/cumulus/polkadot-parachains/westmint/src/lib.rs +++ b/cumulus/polkadot-parachains/westmint/src/lib.rs @@ -91,7 +91,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("westmint"), impl_name: create_runtime_str!("westmint"), authoring_version: 1, - spec_version: 600, + spec_version: 601, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 4,