difftreelog
feat(xcm) reenable xtokens on qtz/unq, allow moonbeam on unq
in: master
4 files changed
runtime/common/construct_runtime/mod.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/>.1617mod util;1819#[macro_export]20macro_rules! construct_runtime {21 ($select_runtime:ident) => {22 $crate::construct_runtime_impl! {23 select_runtime($select_runtime);2425 pub enum Runtime where26 Block = Block,27 NodeBlock = opaque::Block,28 UncheckedExtrinsic = UncheckedExtrinsic29 {30 System: frame_system = 0,3132 ParachainSystem: cumulus_pallet_parachain_system::{Pallet, Call, Config, Storage, Inherent, Event<T>, ValidateUnsigned} = 20,33 ParachainInfo: parachain_info::{Pallet, Storage, Config} = 21,3435 Aura: pallet_aura::{Pallet, Config<T>} = 22,36 AuraExt: cumulus_pallet_aura_ext::{Pallet, Config} = 23,3738 Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>} = 30,39 RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage} = 31,40 Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 32,41 TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event<T>} = 33,42 Treasury: pallet_treasury::{Pallet, Call, Storage, Config, Event<T>} = 34,43 Sudo: pallet_sudo::{Pallet, Call, Storage, Config<T>, Event<T>} = 35,44 Vesting: orml_vesting::{Pallet, Storage, Call, Event<T>, Config<T>} = 37,45 #[runtimes(opal)]46 XTokens: orml_xtokens = 38,47 Tokens: orml_tokens = 39,48 // Vesting: pallet_vesting::{Pallet, Call, Config<T>, Storage, Event<T>} = 37,49 // Contracts: pallet_contracts::{Pallet, Call, Storage, Event<T>} = 38,5051 // XCM helpers.52 XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event<T>} = 50,53 PolkadotXcm: pallet_xcm::{Pallet, Call, Event<T>, Origin} = 51,54 CumulusXcm: cumulus_pallet_xcm::{Pallet, Call, Event<T>, Origin} = 52,55 DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event<T>} = 53,5657 // Unique Pallets58 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,59 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,6061 #[runtimes(opal)]62 Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event<T>} = 62,6364 Configuration: pallet_configuration::{Pallet, Call, Storage} = 63,6566 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,67 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,68 Common: pallet_common::{Pallet, Storage, Event<T>} = 66,69 Fungible: pallet_fungible::{Pallet, Storage} = 67,7071 #[runtimes(opal)]72 Refungible: pallet_refungible::{Pallet, Storage} = 68,7374 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,75 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,7677 #[runtimes(opal)]78 RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,7980 #[runtimes(opal)]81 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,8283 #[runtimes(opal)]84 ForeingAssets: pallet_foreing_assets::{Pallet, Call, Storage, Event<T>} = 80,8586 // Frontier87 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,88 Ethereum: pallet_ethereum::{Pallet, Config, Call, Storage, Event, Origin} = 101,8990 EvmCoderSubstrate: pallet_evm_coder_substrate::{Pallet, Storage} = 150,91 EvmContractHelpers: pallet_evm_contract_helpers::{Pallet, Storage} = 151,92 EvmTransactionPayment: pallet_evm_transaction_payment::{Pallet} = 152,93 EvmMigration: pallet_evm_migration::{Pallet, Call, Storage} = 153,94 }95 }96 }97}runtime/opal/src/xcm_config.rsdiffbeforeafterboth--- a/runtime/opal/src/xcm_config.rs
+++ b/runtime/opal/src/xcm_config.rs
@@ -498,7 +498,7 @@
impl orml_xtokens::Config for Runtime {
type Event = Event;
type Balance = Balance;
- type CurrencyId = AssetIds;
+ type CurrencyId = CurrencyId;
type CurrencyIdConvert = CurrencyIdConvert;
type AccountIdToMultiLocation = AccountIdToMultiLocation;
type SelfLocation = SelfLocation;
runtime/quartz/src/xcm_config.rsdiffbeforeafterboth--- a/runtime/quartz/src/xcm_config.rs
+++ b/runtime/quartz/src/xcm_config.rs
@@ -180,11 +180,10 @@
type OnKilledTokenAccount = ();
}
-/*
impl orml_xtokens::Config for Runtime {
type Event = Event;
type Balance = Balance;
- type CurrencyId = AssetIds;
+ type CurrencyId = CurrencyId;
type CurrencyIdConvert = CurrencyIdConvert;
type AccountIdToMultiLocation = AccountIdToMultiLocation;
type SelfLocation = SelfLocation;
@@ -197,8 +196,8 @@
type MultiLocationsFilter = Everything;
type ReserveProvider = AbsoluteReserveProvider;
}
- */
+
parameter_type_with_key! {
pub ExistentialDeposits: |currency_id: CurrencyId| -> Balance {
match currency_id {
@@ -218,7 +217,7 @@
}
}
-/*
+
pub struct CurrencyIdConvert;
impl Convert<AssetIds, Option<MultiLocation>> for CurrencyIdConvert {
fn convert(id: AssetIds) -> Option<MultiLocation> {
@@ -228,12 +227,11 @@
X1(Parachain(ParachainInfo::get().into())),
)),
AssetIds::NativeAssetId(NativeCurrency::Parent) => Some(MultiLocation::parent()),
- AssetIds::ForeignAssetId(foreign_asset_id) => {
- XcmForeignAssetIdMapping::<Runtime>::get_multi_location(foreign_asset_id)
- }
+ AssetIds::ForeignAssetId(_) => None,
}
}
}
+/*
impl Convert<MultiLocation, Option<CurrencyId>> for CurrencyIdConvert {
fn convert(location: MultiLocation) -> Option<CurrencyId> {
if location == MultiLocation::here()
runtime/unique/src/xcm_config.rsdiffbeforeafterboth--- a/runtime/unique/src/xcm_config.rs
+++ b/runtime/unique/src/xcm_config.rs
@@ -88,6 +88,8 @@
MultiLocation { parents: 1, interior: Here },
// Karura/Acala location
MultiLocation { parents: 1, interior: X1(Parachain(2000)) },
+ // Moonbeam location
+ MultiLocation { parents: 1, interior: X1(Parachain(2004)) },
// Self parachain address
MultiLocation { parents: 1, interior: X1(Parachain(ParachainInfo::get().into())) },
]
@@ -201,10 +203,42 @@
type OnKilledTokenAccount = ();
}
+impl orml_xtokens::Config for Runtime {
+ type Event = Event;
+ type Balance = Balance;
+ type CurrencyId = CurrencyId;
+ type CurrencyIdConvert = CurrencyIdConvert;
+ type AccountIdToMultiLocation = AccountIdToMultiLocation;
+ type SelfLocation = SelfLocation;
+ type XcmExecutor = XcmExecutor<XcmConfig<Self>>;
+ type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;
+ type BaseXcmWeight = BaseXcmWeight;
+ type LocationInverter = LocationInverter<Ancestry>;
+ type MaxAssetsForTransfer = MaxAssetsForTransfer;
+ type MinXcmFee = ParachainMinFee;
+ type MultiLocationsFilter = Everything;
+ type ReserveProvider = AbsoluteReserveProvider;
+}
+
+pub struct CurrencyIdConvert;
+impl Convert<AssetIds, Option<MultiLocation>> for CurrencyIdConvert {
+ fn convert(id: AssetIds) -> Option<MultiLocation> {
+ match id {
+ AssetIds::NativeAssetId(NativeCurrency::Here) => Some(MultiLocation::new(
+ 1,
+ X1(Parachain(ParachainInfo::get().into())),
+ )),
+ _ => None,
+ }
+ }
+}
parameter_types! {
pub const BaseXcmWeight: Weight = 100_000_000; // TODO: recheck this
pub const MaxAssetsForTransfer: usize = 2;
+
+ pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();
+ pub SelfLocation: MultiLocation = MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())));
}
parameter_type_with_key! {
@@ -223,4 +257,4 @@
})
.into()
}
-}
\ No newline at end of file
+}