difftreelog
fix get rid of unneeded comments in xcm configs
in: master
2 files changed
runtime/opal/src/xcm_config.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617use cumulus_pallet_xcm;18use frame_support::{19 {match_types, parameter_types, weights::Weight},20 pallet_prelude::Get,21 traits::{Contains, Everything, fungibles},22};23use frame_system::EnsureRoot;24use orml_traits::{location::AbsoluteReserveProvider, parameter_type_with_key};25use pallet_xcm::XcmPassthrough;26use polkadot_parachain::primitives::Sibling;27use sp_runtime::traits::{AccountIdConversion, CheckedConversion, Convert, Zero};28use sp_std::{borrow::Borrow, marker::PhantomData, vec, vec::Vec};29use xcm::{30 latest::{MultiAsset, Xcm},31 prelude::{Concrete, Fungible as XcmFungible},32 v1::{BodyId, Junction::*, Junctions::*, MultiLocation, NetworkId},33};34use xcm_builder::{35 AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, EnsureXcmOrigin,36 FixedWeightBounds, FungiblesAdapter, LocationInverter, ParentAsSuperuser, ParentIsPreset,37 RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia,38 SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit,39 ConvertedConcreteAssetId,40};41use xcm_executor::{42 {Config, XcmExecutor},43 traits::{Convert as ConvertXcm, FilterAssetLocation, JustTry, MatchesFungible, ShouldExecute},44};4546use up_common::{47 constants::{MAXIMUM_BLOCK_WEIGHT, UNIQUE},48 types::{AccountId, Balance},49};5051use crate::{52 Balances, Call, DmpQueue, Event, ForeingAssets, Origin, ParachainInfo, ParachainSystem,53 PolkadotXcm, Runtime, XcmpQueue,54};55use crate::runtime_common::config::substrate::{TreasuryModuleId, MaxLocks, MaxReserves};56use crate::runtime_common::config::pallets::TreasuryAccountId;57use crate::runtime_common::config::xcm::*;58use crate::*;5960use pallet_foreing_assets::{61 AssetIds, AssetIdMapping, XcmForeignAssetIdMapping, CurrencyId, NativeCurrency, FreeForAll,62 TryAsForeing, ForeignAssetId,63};6465// Signed version of balance66pub type Amount = i128;6768parameter_types! {69 pub const RelayLocation: MultiLocation = MultiLocation::parent();70 pub const RelayNetwork: NetworkId = NetworkId::Polkadot;71 pub RelayOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into();72 pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();73 pub SelfLocation: MultiLocation = MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())));74}7576/// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance,77/// ready for dispatching a transaction with Xcm's `Transact`. There is an `OriginKind` which can78/// biases the kind of local `Origin` it will become.79pub type XcmOriginToTransactDispatchOrigin = (80 // Sovereign account converter; this attempts to derive an `AccountId` from the origin location81 // using `LocationToAccountId` and then turn that into the usual `Signed` origin. Useful for82 // foreign chains who want to have a local sovereign account on this chain which they control.83 SovereignSignedViaLocation<LocationToAccountId, Origin>,84 // Native converter for Relay-chain (Parent) location; will converts to a `Relay` origin when85 // recognised.86 RelayChainAsNative<RelayOrigin, Origin>,87 // Native converter for sibling Parachains; will convert to a `SiblingPara` origin when88 // recognised.89 SiblingParachainAsNative<cumulus_pallet_xcm::Origin, Origin>,90 // Superuser converter for the Relay-chain (Parent) location. This will allow it to issue a91 // transaction from the Root origin.92 ParentAsSuperuser<Origin>,93 // Native signed account converter; this just converts an `AccountId32` origin into a normal94 // `Origin::Signed` origin of the same 32-byte value.95 SignedAccountId32AsNative<RelayNetwork, Origin>,96 // Xcm origins can be represented natively under the Xcm pallet's Xcm origin.97 XcmPassthrough<Origin>,98);99100parameter_types! {101 // One XCM operation is 1_000_000 weight - almost certainly a conservative estimate.102 pub UnitWeightCost: Weight = 1_000_000;103 // 1200 UNIQUEs buy 1 second of weight.104 pub const WeightPrice: (MultiLocation, u128) = (MultiLocation::parent(), 1_200 * UNIQUE);105 pub const MaxInstructions: u32 = 100;106 pub const MaxAuthorities: u32 = 100_000;107}108109match_types! {110 pub type ParentOrParentsUnitPlurality: impl Contains<MultiLocation> = {111 MultiLocation { parents: 1, interior: Here } |112 MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Unit, .. }) }113 };114}115116/// Execution barrier that just takes `max_weight` from `weight_credit`.117///118/// Useful to allow XCM execution by local chain users via extrinsics.119/// E.g. `pallet_xcm::reserve_asset_transfer` to transfer a reserve asset120/// out of the local chain to another one.121pub struct AllowAllDebug;122impl ShouldExecute for AllowAllDebug {123 fn should_execute<Call>(124 _origin: &MultiLocation,125 _message: &mut Xcm<Call>,126 max_weight: Weight,127 weight_credit: &mut Weight,128 ) -> Result<(), ()> {129 Ok(())130 }131}132133pub type Barrier = DenyThenTry<134 DenyTransact,135 (136 TakeWeightCredit,137 AllowTopLevelPaidExecutionFrom<Everything>,138 AllowUnpaidExecutionFrom<ParentOrParentsUnitPlurality>,139 // ^^^ Parent & its unit plurality gets free execution140 AllowAllDebug,141 )142>;143144pub struct AllAsset;145impl FilterAssetLocation for AllAsset {146 fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool {147 true148 }149}150151pub struct CurrencyIdConvert;152impl Convert<AssetIds, Option<MultiLocation>> for CurrencyIdConvert {153 fn convert(id: AssetIds) -> Option<MultiLocation> {154 match id {155 AssetIds::NativeAssetId(NativeCurrency::Here) => Some(MultiLocation::new(156 1,157 X1(Parachain(ParachainInfo::get().into())),158 )),159 AssetIds::NativeAssetId(NativeCurrency::Parent) => Some(MultiLocation::parent()),160 AssetIds::ForeignAssetId(foreign_asset_id) => {161 XcmForeignAssetIdMapping::<Runtime>::get_multi_location(foreign_asset_id)162 }163 }164 }165}166impl Convert<MultiLocation, Option<CurrencyId>> for CurrencyIdConvert {167 fn convert(location: MultiLocation) -> Option<CurrencyId> {168 if location == MultiLocation::here()169 || location == MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())))170 {171 return Some(AssetIds::NativeAssetId(NativeCurrency::Here));172 }173174 if location == MultiLocation::parent() {175 return Some(AssetIds::NativeAssetId(NativeCurrency::Parent));176 }177178 if let Some(currency_id) =179 XcmForeignAssetIdMapping::<Runtime>::get_currency_id(location.clone())180 {181 return Some(currency_id);182 }183184 None185 }186}187188pub fn get_all_module_accounts() -> Vec<AccountId> {189 vec![TreasuryModuleId::get().into_account_truncating()]190}191192pub struct DustRemovalWhitelist;193impl Contains<AccountId> for DustRemovalWhitelist {194 fn contains(a: &AccountId) -> bool {195 get_all_module_accounts().contains(a)196 }197}198199parameter_type_with_key! {200 pub ExistentialDeposits: |currency_id: CurrencyId| -> Balance {201 match currency_id {202 CurrencyId::NativeAssetId(symbol) => match symbol {203 NativeCurrency::Here => 0,204 NativeCurrency::Parent=> 0,205 },206 _ => 100_000207 }208 };209}210211impl orml_tokens::Config for Runtime {212 type Event = Event;213 type Balance = Balance;214 type Amount = Amount;215 type CurrencyId = CurrencyId;216 type WeightInfo = ();217 type ExistentialDeposits = ExistentialDeposits;218 type OnDust = orml_tokens::TransferDust<Runtime, TreasuryAccountId>;219 type MaxLocks = MaxLocks;220 type MaxReserves = MaxReserves;221 // TODO: Add all module accounts222 type DustRemovalWhitelist = DustRemovalWhitelist;223 /// The id type for named reserves.224 type ReserveIdentifier = ();225 type OnNewTokenAccount = ();226 type OnKilledTokenAccount = ();227}228229parameter_types! {230 pub const BaseXcmWeight: Weight = 100_000_000; // TODO: recheck this231 pub const MaxAssetsForTransfer: usize = 2;232}233234parameter_type_with_key! {235 pub ParachainMinFee: |_location: MultiLocation| -> Option<u128> {236 Some(100_000_000_000)237 };238}239240pub struct AccountIdToMultiLocation;241impl Convert<AccountId, MultiLocation> for AccountIdToMultiLocation {242 fn convert(account: AccountId) -> MultiLocation {243 X1(AccountId32 {244 network: NetworkId::Any,245 id: account.into(),246 })247 .into()248 }249}250251impl orml_xtokens::Config for Runtime {252 type Event = Event;253 type Balance = Balance;254 type CurrencyId = CurrencyId;255 type CurrencyIdConvert = CurrencyIdConvert;256 type AccountIdToMultiLocation = AccountIdToMultiLocation;257 type SelfLocation = SelfLocation;258 type XcmExecutor = XcmExecutor<XcmConfig<Self>>;259 type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;260 type BaseXcmWeight = BaseXcmWeight;261 type LocationInverter = LocationInverter<Ancestry>;262 type MaxAssetsForTransfer = MaxAssetsForTransfer;263 type MinXcmFee = ParachainMinFee;264 type MultiLocationsFilter = Everything;265 type ReserveProvider = AbsoluteReserveProvider;266}runtime/quartz/src/xcm_config.rsdiffbeforeafterboth--- a/runtime/quartz/src/xcm_config.rs
+++ b/runtime/quartz/src/xcm_config.rs
@@ -175,7 +175,6 @@
type ReserveProvider = AbsoluteReserveProvider;
}
-
parameter_type_with_key! {
pub ExistentialDeposits: |currency_id: CurrencyId| -> Balance {
match currency_id {
@@ -194,7 +193,6 @@
get_all_module_accounts().contains(a)
}
}
-
pub struct CurrencyIdConvert;
impl Convert<AssetIds, Option<MultiLocation>> for CurrencyIdConvert {
@@ -209,31 +207,6 @@
}
}
}
-/*
-impl Convert<MultiLocation, Option<CurrencyId>> for CurrencyIdConvert {
- fn convert(location: MultiLocation) -> Option<CurrencyId> {
- if location == MultiLocation::here()
- || location == MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())))
- {
- return Some(AssetIds::NativeAssetId(NativeCurrency::Here));
- }
-
- if location == MultiLocation::parent() {
- return Some(AssetIds::NativeAssetId(NativeCurrency::Parent));
- }
-
- if let Some(currency_id) =
- XcmForeignAssetIdMapping::<Runtime>::get_currency_id(location.clone())
- {
- return Some(currency_id);
- }
-
- None
- }
-}
-
- */
-
parameter_types! {
pub const BaseXcmWeight: Weight = 100_000_000; // TODO: recheck this