mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 20:21:06 +00:00
Enable Pallet XCM for Kusama & Westend (#2970)
* Enable Pallet XCM for Kusama & Westend * Fixes Co-authored-by: André Silva <andrerfosilva@gmail.com>
This commit is contained in:
Generated
+2
@@ -3233,6 +3233,7 @@ dependencies = [
|
|||||||
"pallet-treasury",
|
"pallet-treasury",
|
||||||
"pallet-utility",
|
"pallet-utility",
|
||||||
"pallet-vesting",
|
"pallet-vesting",
|
||||||
|
"pallet-xcm",
|
||||||
"parity-scale-codec",
|
"parity-scale-codec",
|
||||||
"polkadot-primitives",
|
"polkadot-primitives",
|
||||||
"polkadot-runtime-common",
|
"polkadot-runtime-common",
|
||||||
@@ -11309,6 +11310,7 @@ dependencies = [
|
|||||||
"pallet-treasury",
|
"pallet-treasury",
|
||||||
"pallet-utility",
|
"pallet-utility",
|
||||||
"pallet-vesting",
|
"pallet-vesting",
|
||||||
|
"pallet-xcm",
|
||||||
"parity-scale-codec",
|
"parity-scale-codec",
|
||||||
"polkadot-parachain",
|
"polkadot-parachain",
|
||||||
"polkadot-primitives",
|
"polkadot-primitives",
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ pallet-tips = { git = "https://github.com/paritytech/substrate", branch = "maste
|
|||||||
pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
|
pallet-xcm = { path = "../../xcm/pallet-xcm", default-features = false }
|
||||||
|
|
||||||
frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
|
frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
|
||||||
frame-try-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
|
frame-try-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
|
||||||
@@ -148,6 +149,7 @@ std = [
|
|||||||
"pallet-vesting/std",
|
"pallet-vesting/std",
|
||||||
"pallet-babe/std",
|
"pallet-babe/std",
|
||||||
"pallet-randomness-collective-flip/std",
|
"pallet-randomness-collective-flip/std",
|
||||||
|
"pallet-xcm/std",
|
||||||
"sp-runtime/std",
|
"sp-runtime/std",
|
||||||
"sp-staking/std",
|
"sp-staking/std",
|
||||||
"frame-system/std",
|
"frame-system/std",
|
||||||
@@ -198,6 +200,7 @@ runtime-benchmarks = [
|
|||||||
"pallet-vesting/runtime-benchmarks",
|
"pallet-vesting/runtime-benchmarks",
|
||||||
"pallet-offences-benchmarking",
|
"pallet-offences-benchmarking",
|
||||||
"pallet-session-benchmarking",
|
"pallet-session-benchmarking",
|
||||||
|
"pallet-xcm/runtime-benchmarks",
|
||||||
"frame-system-benchmarking",
|
"frame-system-benchmarking",
|
||||||
"hex-literal",
|
"hex-literal",
|
||||||
"xcm-builder/runtime-benchmarks",
|
"xcm-builder/runtime-benchmarks",
|
||||||
|
|||||||
@@ -52,12 +52,12 @@ use runtime_parachains::scheduler as parachains_scheduler;
|
|||||||
use runtime_parachains::reward_points as parachains_reward_points;
|
use runtime_parachains::reward_points as parachains_reward_points;
|
||||||
use runtime_parachains::runtime_api_impl::v1 as parachains_runtime_api_impl;
|
use runtime_parachains::runtime_api_impl::v1 as parachains_runtime_api_impl;
|
||||||
|
|
||||||
use xcm::v0::{MultiLocation, NetworkId};
|
use xcm::v0::{MultiLocation, NetworkId, BodyId, Xcm};
|
||||||
use xcm_builder::{
|
use xcm_builder::{
|
||||||
AccountId32Aliases, ChildParachainConvertsVia, SovereignSignedViaLocation, CurrencyAdapter as XcmCurrencyAdapter,
|
AccountId32Aliases, ChildParachainConvertsVia, SovereignSignedViaLocation, CurrencyAdapter as XcmCurrencyAdapter,
|
||||||
ChildParachainAsNative, SignedAccountId32AsNative, ChildSystemParachainAsSuperuser, LocationInverter, IsConcrete,
|
ChildParachainAsNative, SignedAccountId32AsNative, ChildSystemParachainAsSuperuser, LocationInverter,
|
||||||
FixedWeightBounds, TakeWeightCredit, AllowTopLevelPaidExecutionFrom,
|
IsConcrete, FixedWeightBounds, TakeWeightCredit, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom,
|
||||||
AllowUnpaidExecutionFrom, IsChildSystemParachain, UsingComponents,
|
IsChildSystemParachain, UsingComponents, BackingToPlurality, SignedToAccountId32
|
||||||
};
|
};
|
||||||
use xcm_executor::XcmExecutor;
|
use xcm_executor::XcmExecutor;
|
||||||
use sp_runtime::{
|
use sp_runtime::{
|
||||||
@@ -115,7 +115,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
|
|||||||
spec_name: create_runtime_str!("kusama"),
|
spec_name: create_runtime_str!("kusama"),
|
||||||
impl_name: create_runtime_str!("parity-kusama"),
|
impl_name: create_runtime_str!("parity-kusama"),
|
||||||
authoring_version: 2,
|
authoring_version: 2,
|
||||||
spec_version: 900,
|
spec_version: 9000,
|
||||||
impl_version: 0,
|
impl_version: 0,
|
||||||
#[cfg(not(feature = "disable-runtime-api"))]
|
#[cfg(not(feature = "disable-runtime-api"))]
|
||||||
apis: RUNTIME_API_VERSIONS,
|
apis: RUNTIME_API_VERSIONS,
|
||||||
@@ -1146,6 +1146,79 @@ impl xcm_executor::Config for XcmConfig {
|
|||||||
type ResponseHandler = ();
|
type ResponseHandler = ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parameter_types! {
|
||||||
|
pub const CouncilBodyId: BodyId = BodyId::Executive;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 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<Runtime, CouncilCollective>, CouncilBodyId>,
|
||||||
|
// And a usual Signed origin to be used in XCM as a corresponding AccountId32
|
||||||
|
SignedToAccountId32<Origin, AccountId, KusamaNetwork>,
|
||||||
|
);
|
||||||
|
|
||||||
|
pub struct OnlyWithdrawTeleportForAccounts;
|
||||||
|
impl frame_support::traits::Contains<(MultiLocation, Xcm<Call>)> for OnlyWithdrawTeleportForAccounts {
|
||||||
|
fn contains((ref origin, ref msg): &(MultiLocation, Xcm<Call>)) -> bool {
|
||||||
|
use xcm::v0::{
|
||||||
|
Xcm::WithdrawAsset, Order::{BuyExecution, InitiateTeleport, DepositAsset},
|
||||||
|
MultiAsset::{All, ConcreteFungible}, Junction::{AccountId32, Plurality, Parachain},
|
||||||
|
MultiLocation::{Null, X1},
|
||||||
|
};
|
||||||
|
match origin {
|
||||||
|
// Root and council are are allowed to execute anything.
|
||||||
|
Null | X1(Plurality { .. }) => true,
|
||||||
|
X1(AccountId32 { .. }) => {
|
||||||
|
// An account ID trying to send a message. We ensure that it's sensible.
|
||||||
|
// This checks that it's of the form:
|
||||||
|
// WithdrawAsset {
|
||||||
|
// assets: [ ConcreteFungible { id: Null } ],
|
||||||
|
// effects: [ BuyExecution, InitiateTeleport {
|
||||||
|
// assets: All,
|
||||||
|
// dest: Parachain,
|
||||||
|
// effects: [ BuyExecution, DepositAssets {
|
||||||
|
// assets: All,
|
||||||
|
// dest: AccountId32,
|
||||||
|
// } ]
|
||||||
|
// } ]
|
||||||
|
// }
|
||||||
|
matches!(msg, WithdrawAsset { ref assets, ref effects }
|
||||||
|
if assets.len() == 1
|
||||||
|
&& matches!(assets[0], ConcreteFungible { id: Null, .. })
|
||||||
|
&& effects.len() == 2
|
||||||
|
&& matches!(effects[0], BuyExecution { .. })
|
||||||
|
&& matches!(effects[1], InitiateTeleport { ref assets, dest: X1(Parachain(..)), ref effects }
|
||||||
|
if assets.len() == 1
|
||||||
|
&& matches!(assets[0], All)
|
||||||
|
&& effects.len() == 2
|
||||||
|
&& matches!(effects[0], BuyExecution { .. })
|
||||||
|
&& matches!(effects[1], DepositAsset { ref assets, dest: X1(AccountId32{..}) }
|
||||||
|
if assets.len() == 1
|
||||||
|
&& matches!(assets[0], All)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
// Nobody else is allowed to execute anything.
|
||||||
|
_ => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl pallet_xcm::Config for Runtime {
|
||||||
|
type Event = Event;
|
||||||
|
type SendXcmOrigin = xcm_builder::EnsureXcmOrigin<Origin, LocalOriginToLocation>;
|
||||||
|
type XcmRouter = XcmRouter;
|
||||||
|
// Anyone can execute XCM messages locally...
|
||||||
|
type ExecuteXcmOrigin = xcm_builder::EnsureXcmOrigin<Origin, LocalOriginToLocation>;
|
||||||
|
// ...but they must match our filter, which requires them to be a simple withdraw + teleport.
|
||||||
|
type XcmExecuteFilter = OnlyWithdrawTeleportForAccounts;
|
||||||
|
type XcmExecutor = XcmExecutor<XcmConfig>;
|
||||||
|
}
|
||||||
|
|
||||||
construct_runtime! {
|
construct_runtime! {
|
||||||
pub enum Runtime where
|
pub enum Runtime where
|
||||||
Block = Block,
|
Block = Block,
|
||||||
@@ -1235,6 +1308,9 @@ construct_runtime! {
|
|||||||
// Parachain Onboarding Pallets. Start indices at 70 to leave room.
|
// Parachain Onboarding Pallets. Start indices at 70 to leave room.
|
||||||
Registrar: paras_registrar::{Pallet, Call, Storage, Event<T>} = 70,
|
Registrar: paras_registrar::{Pallet, Call, Storage, Event<T>} = 70,
|
||||||
Slots: slots::{Pallet, Call, Storage, Event<T>} = 71,
|
Slots: slots::{Pallet, Call, Storage, Event<T>} = 71,
|
||||||
|
|
||||||
|
// Pallet for sending XCM.
|
||||||
|
XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event<T>} = 99,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
|
|||||||
spec_name: create_runtime_str!("polkadot"),
|
spec_name: create_runtime_str!("polkadot"),
|
||||||
impl_name: create_runtime_str!("parity-polkadot"),
|
impl_name: create_runtime_str!("parity-polkadot"),
|
||||||
authoring_version: 0,
|
authoring_version: 0,
|
||||||
spec_version: 900,
|
spec_version: 9000,
|
||||||
impl_version: 0,
|
impl_version: 0,
|
||||||
#[cfg(not(feature = "disable-runtime-api"))]
|
#[cfg(not(feature = "disable-runtime-api"))]
|
||||||
apis: RUNTIME_API_VERSIONS,
|
apis: RUNTIME_API_VERSIONS,
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
|
|||||||
spec_name: create_runtime_str!("rococo"),
|
spec_name: create_runtime_str!("rococo"),
|
||||||
impl_name: create_runtime_str!("parity-rococo-v1.5"),
|
impl_name: create_runtime_str!("parity-rococo-v1.5"),
|
||||||
authoring_version: 0,
|
authoring_version: 0,
|
||||||
spec_version: 232,
|
spec_version: 9000,
|
||||||
impl_version: 0,
|
impl_version: 0,
|
||||||
#[cfg(not(feature = "disable-runtime-api"))]
|
#[cfg(not(feature = "disable-runtime-api"))]
|
||||||
apis: RUNTIME_API_VERSIONS,
|
apis: RUNTIME_API_VERSIONS,
|
||||||
@@ -664,11 +664,11 @@ impl frame_support::traits::Contains<(MultiLocation, Xcm<Call>)> for OnlyWithdra
|
|||||||
fn contains((ref origin, ref msg): &(MultiLocation, Xcm<Call>)) -> bool {
|
fn contains((ref origin, ref msg): &(MultiLocation, Xcm<Call>)) -> bool {
|
||||||
use xcm::v0::{
|
use xcm::v0::{
|
||||||
Xcm::WithdrawAsset, Order::{BuyExecution, InitiateTeleport, DepositAsset},
|
Xcm::WithdrawAsset, Order::{BuyExecution, InitiateTeleport, DepositAsset},
|
||||||
MultiAsset::{All, ConcreteFungible}, Junction::AccountId32,
|
MultiAsset::{All, ConcreteFungible}, Junction::{AccountId32, Plurality},
|
||||||
};
|
};
|
||||||
match origin {
|
match origin {
|
||||||
// Root is allowed to execute anything.
|
// Root and collective are allowed to execute anything.
|
||||||
Null => true,
|
Null | X1(Plurality { .. }) => true,
|
||||||
X1(AccountId32 { .. }) => {
|
X1(AccountId32 { .. }) => {
|
||||||
// An account ID trying to send a message. We ensure that it's sensible.
|
// An account ID trying to send a message. We ensure that it's sensible.
|
||||||
// This checks that it's of the form:
|
// This checks that it's of the form:
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/parityt
|
|||||||
pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
|
pallet-xcm = { path = "../../xcm/pallet-xcm", default-features = false }
|
||||||
|
|
||||||
frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
|
frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
|
||||||
frame-try-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
|
frame-try-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
|
||||||
@@ -146,6 +147,7 @@ std = [
|
|||||||
"pallet-treasury/std",
|
"pallet-treasury/std",
|
||||||
"pallet-utility/std",
|
"pallet-utility/std",
|
||||||
"pallet-vesting/std",
|
"pallet-vesting/std",
|
||||||
|
"pallet-xcm/std",
|
||||||
"pallet-babe/std",
|
"pallet-babe/std",
|
||||||
"pallet-randomness-collective-flip/std",
|
"pallet-randomness-collective-flip/std",
|
||||||
"frame-executive/std",
|
"frame-executive/std",
|
||||||
@@ -194,6 +196,7 @@ runtime-benchmarks = [
|
|||||||
"pallet-vesting/runtime-benchmarks",
|
"pallet-vesting/runtime-benchmarks",
|
||||||
"pallet-offences-benchmarking",
|
"pallet-offences-benchmarking",
|
||||||
"pallet-session-benchmarking",
|
"pallet-session-benchmarking",
|
||||||
|
"pallet-xcm/runtime-benchmarks",
|
||||||
"frame-system-benchmarking",
|
"frame-system-benchmarking",
|
||||||
"hex-literal",
|
"hex-literal",
|
||||||
"xcm-builder/runtime-benchmarks",
|
"xcm-builder/runtime-benchmarks",
|
||||||
|
|||||||
@@ -53,13 +53,13 @@ use runtime_parachains::scheduler as parachains_scheduler;
|
|||||||
use runtime_parachains::reward_points as parachains_reward_points;
|
use runtime_parachains::reward_points as parachains_reward_points;
|
||||||
use runtime_parachains::runtime_api_impl::v1 as parachains_runtime_api_impl;
|
use runtime_parachains::runtime_api_impl::v1 as parachains_runtime_api_impl;
|
||||||
|
|
||||||
use xcm::v0::{MultiLocation, NetworkId};
|
use xcm::v0::{MultiLocation, NetworkId, Xcm};
|
||||||
use xcm_executor::XcmExecutor;
|
use xcm_executor::XcmExecutor;
|
||||||
use xcm_builder::{
|
use xcm_builder::{
|
||||||
AccountId32Aliases, ChildParachainConvertsVia, SovereignSignedViaLocation, CurrencyAdapter as XcmCurrencyAdapter,
|
AccountId32Aliases, ChildParachainConvertsVia, SovereignSignedViaLocation, CurrencyAdapter as XcmCurrencyAdapter,
|
||||||
ChildParachainAsNative, SignedAccountId32AsNative, ChildSystemParachainAsSuperuser, LocationInverter, IsConcrete,
|
ChildParachainAsNative, SignedAccountId32AsNative, ChildSystemParachainAsSuperuser, LocationInverter, IsConcrete,
|
||||||
FixedWeightBounds, TakeWeightCredit, AllowTopLevelPaidExecutionFrom,
|
FixedWeightBounds, TakeWeightCredit, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom,
|
||||||
AllowUnpaidExecutionFrom, IsChildSystemParachain, UsingComponents,
|
IsChildSystemParachain, UsingComponents, SignedToAccountId32,
|
||||||
};
|
};
|
||||||
|
|
||||||
use sp_runtime::{
|
use sp_runtime::{
|
||||||
@@ -115,7 +115,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
|
|||||||
spec_name: create_runtime_str!("westend"),
|
spec_name: create_runtime_str!("westend"),
|
||||||
impl_name: create_runtime_str!("parity-westend"),
|
impl_name: create_runtime_str!("parity-westend"),
|
||||||
authoring_version: 2,
|
authoring_version: 2,
|
||||||
spec_version: 900,
|
spec_version: 9000,
|
||||||
impl_version: 0,
|
impl_version: 0,
|
||||||
#[cfg(not(feature = "disable-runtime-api"))]
|
#[cfg(not(feature = "disable-runtime-api"))]
|
||||||
apis: RUNTIME_API_VERSIONS,
|
apis: RUNTIME_API_VERSIONS,
|
||||||
@@ -858,6 +858,72 @@ impl xcm_executor::Config for XcmConfig {
|
|||||||
type ResponseHandler = ();
|
type ResponseHandler = ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Type to convert an `Origin` type value into a `MultiLocation` value which represents an interior location
|
||||||
|
/// of this chain.
|
||||||
|
pub type LocalOriginToLocation = (
|
||||||
|
// And a usual Signed origin to be used in XCM as a corresponding AccountId32
|
||||||
|
SignedToAccountId32<Origin, AccountId, WestendNetwork>,
|
||||||
|
);
|
||||||
|
|
||||||
|
pub struct OnlyWithdrawTeleportForAccounts;
|
||||||
|
impl frame_support::traits::Contains<(MultiLocation, Xcm<Call>)> for OnlyWithdrawTeleportForAccounts {
|
||||||
|
fn contains((ref origin, ref msg): &(MultiLocation, Xcm<Call>)) -> bool {
|
||||||
|
use xcm::v0::{
|
||||||
|
Xcm::WithdrawAsset, Order::{BuyExecution, InitiateTeleport, DepositAsset},
|
||||||
|
MultiAsset::{All, ConcreteFungible}, Junction::{AccountId32, Parachain},
|
||||||
|
MultiLocation::{Null, X1},
|
||||||
|
};
|
||||||
|
match origin {
|
||||||
|
// Root is allowed to execute anything.
|
||||||
|
Null => true,
|
||||||
|
X1(AccountId32 { .. }) => {
|
||||||
|
// An account ID trying to send a message. We ensure that it's sensible.
|
||||||
|
// This checks that it's of the form:
|
||||||
|
// WithdrawAsset {
|
||||||
|
// assets: [ ConcreteFungible { id: Null } ],
|
||||||
|
// effects: [ BuyExecution, InitiateTeleport {
|
||||||
|
// assets: All,
|
||||||
|
// dest: Parachain,
|
||||||
|
// effects: [ BuyExecution, DepositAssets {
|
||||||
|
// assets: All,
|
||||||
|
// dest: AccountId32,
|
||||||
|
// } ]
|
||||||
|
// } ]
|
||||||
|
// }
|
||||||
|
matches!(msg, WithdrawAsset { ref assets, ref effects }
|
||||||
|
if assets.len() == 1
|
||||||
|
&& matches!(assets[0], ConcreteFungible { id: Null, .. })
|
||||||
|
&& effects.len() == 2
|
||||||
|
&& matches!(effects[0], BuyExecution { .. })
|
||||||
|
&& matches!(effects[1], InitiateTeleport { ref assets, dest: X1(Parachain(..)), ref effects }
|
||||||
|
if assets.len() == 1
|
||||||
|
&& matches!(assets[0], All)
|
||||||
|
&& effects.len() == 2
|
||||||
|
&& matches!(effects[0], BuyExecution { .. })
|
||||||
|
&& matches!(effects[1], DepositAsset { ref assets, dest: X1(AccountId32{..}) }
|
||||||
|
if assets.len() == 1
|
||||||
|
&& matches!(assets[0], All)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
// Nobody else is allowed to execute anything.
|
||||||
|
_ => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl pallet_xcm::Config for Runtime {
|
||||||
|
type Event = Event;
|
||||||
|
type SendXcmOrigin = xcm_builder::EnsureXcmOrigin<Origin, LocalOriginToLocation>;
|
||||||
|
type XcmRouter = XcmRouter;
|
||||||
|
// Anyone can execute XCM messages locally...
|
||||||
|
type ExecuteXcmOrigin = xcm_builder::EnsureXcmOrigin<Origin, LocalOriginToLocation>;
|
||||||
|
// ...but they must match our filter, which requires them to be a simple withdraw + teleport.
|
||||||
|
type XcmExecuteFilter = OnlyWithdrawTeleportForAccounts;
|
||||||
|
type XcmExecutor = XcmExecutor<XcmConfig>;
|
||||||
|
}
|
||||||
|
|
||||||
construct_runtime! {
|
construct_runtime! {
|
||||||
pub enum Runtime where
|
pub enum Runtime where
|
||||||
Block = Block,
|
Block = Block,
|
||||||
@@ -931,6 +997,9 @@ construct_runtime! {
|
|||||||
Registrar: paras_registrar::{Pallet, Call, Storage, Event<T>} = 60,
|
Registrar: paras_registrar::{Pallet, Call, Storage, Event<T>} = 60,
|
||||||
Slots: slots::{Pallet, Call, Storage, Event<T>} = 61,
|
Slots: slots::{Pallet, Call, Storage, Event<T>} = 61,
|
||||||
ParasSudoWrapper: paras_sudo_wrapper::{Pallet, Call} = 62,
|
ParasSudoWrapper: paras_sudo_wrapper::{Pallet, Call} = 62,
|
||||||
|
|
||||||
|
// Pallet for sending XCM.
|
||||||
|
XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event<T>} = 99,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user