git.delta.rocks / unique-network / refs/commits / c9cd7476b100

difftreelog

feat(xcm) reenable xtokens on qtz/unq, allow moonbeam on unq

Daniel Shiposha2022-09-02parent: #7b07931.patch.diff
in: master

4 files changed

modifiedruntime/common/construct_runtime/mod.rsdiffbeforeafterboth
before · runtime/common/construct_runtime/mod.rs
1// 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}
modifiedruntime/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;
modifiedruntime/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()
modifiedruntime/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
+}