diff --git a/polkadot/runtime/westend/src/lib.rs b/polkadot/runtime/westend/src/lib.rs index 9b96a684c7..aa198eae01 100644 --- a/polkadot/runtime/westend/src/lib.rs +++ b/polkadot/runtime/westend/src/lib.rs @@ -53,7 +53,8 @@ use runtime_parachains::scheduler as parachains_scheduler; use runtime_parachains::reward_points as parachains_reward_points; use runtime_parachains::runtime_api_impl::v1 as parachains_runtime_api_impl; -use xcm::v0::{MultiLocation, NetworkId, Xcm, MultiAsset}; +use xcm::v0::{MultiLocation::{self, Null, X1}, NetworkId, Xcm, Junction::Parachain}; +use xcm::v0::MultiAsset::{self, AllConcreteFungible}; use xcm_executor::XcmExecutor; use xcm_builder::{ AccountId32Aliases, ChildParachainConvertsVia, SovereignSignedViaLocation, CurrencyAdapter as XcmCurrencyAdapter, @@ -885,6 +886,14 @@ pub type XcmRouter = ( xcm_sender::ChildParachainRouter, ); +parameter_types! { + pub const WestendForWestmint: (MultiAsset, MultiLocation) = + (AllConcreteFungible { id: Null }, X1(Parachain(1000))); +} +pub type TrustedTeleporters = ( + xcm_builder::Case, +); + /// The barriers one of which must be passed for an XCM message to be executed. pub type Barrier = ( // Weight that is paid for may be consumed. @@ -902,7 +911,7 @@ impl xcm_executor::Config for XcmConfig { type AssetTransactor = LocalAssetTransactor; type OriginConverter = LocalOriginConverter; type IsReserve = (); - type IsTeleporter = (); + type IsTeleporter = TrustedTeleporters; type LocationInverter = LocationInverter; type Barrier = (); type Weigher = FixedWeightBounds; @@ -922,8 +931,7 @@ impl frame_support::traits::Contains<(MultiLocation, Xcm)> for OnlyWithdra fn contains((ref origin, ref msg): &(MultiLocation, Xcm)) -> bool { use xcm::v0::{ Xcm::WithdrawAsset, Order::{BuyExecution, InitiateTeleport, DepositAsset}, - MultiAsset::{All, ConcreteFungible}, Junction::{AccountId32, Parachain}, - MultiLocation::{Null, X1}, + MultiAsset::{All, ConcreteFungible}, Junction::AccountId32, }; match origin { // Root is allowed to execute anything.