git.delta.rocks / unique-network / refs/commits / 5ae285ceffc0

difftreelog

wip upd quartz

Ilja Khabarov2022-08-23parent: #bad3c4a.patch.diff
in: master

4 files changed

modifiedruntime/common/config/xcm.rsdiffbeforeafterboth
--- a/runtime/common/config/xcm.rs
+++ b/runtime/common/config/xcm.rs
@@ -358,8 +358,8 @@
 #[cfg(feature = "foreign-assets")]
 pub type AssetTransactors = FungiblesTransactor;
 
-//#[cfg(not(feature = "foreign-assets"))]
-//pub type AssetTransactors = LocalAssetTransactor;
+#[cfg(not(feature = "foreign-assets"))]
+pub type AssetTransactors = LocalAssetTransactor;
 
 #[cfg(feature = "foreign-assets")]
 pub struct AllAsset;
@@ -372,15 +372,14 @@
 
 #[cfg(feature = "foreign-assets")]
 pub type IsReserve = AllAsset;
-//#[cfg(not(feature = "foreign-assets"))]
-//pub type IsReserve = NativeAsset;
+#[cfg(not(feature = "foreign-assets"))]
+pub type IsReserve = NativeAsset;
 
 #[cfg(feature = "foreign-assets")]
 type Trader<T> =
 	UsingAnyCurrencyComponents<
 		pallet_configuration::WeightToFee<T, Balance>,
 		RelayLocation, AccountId, Balances, ()>;
-/*
 #[cfg(not(feature = "foreign-assets"))]
 type Trader<T> = UsingOnlySelfCurrencyComponents<
 	pallet_configuration::WeightToFee<T, Balance>,
@@ -389,7 +388,6 @@
 	Balances,
 	(),
 >;
-*/
 
 pub struct XcmConfig<T>(PhantomData<T>);
 impl<T> Config for XcmConfig<T>
modifiedruntime/quartz/src/lib.rsdiffbeforeafterboth
35#[path = "../../common/mod.rs"]35#[path = "../../common/mod.rs"]
36mod runtime_common;36mod runtime_common;
37
38pub mod xcm_config;
3739
38pub use runtime_common::*;40pub use runtime_common::*;
3941
addedruntime/quartz/src/xcm_config.rsdiffbeforeafterboth
--- /dev/null
+++ b/runtime/quartz/src/xcm_config.rs
@@ -0,0 +1,109 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+use cumulus_pallet_xcm;
+use frame_support::{
+    {match_types, parameter_types, weights::Weight},
+    pallet_prelude::Get,
+    traits::{Contains, Everything, fungibles},
+};
+use frame_system::EnsureRoot;
+use orml_traits::{location::AbsoluteReserveProvider, parameter_type_with_key};
+use pallet_xcm::XcmPassthrough;
+use polkadot_parachain::primitives::Sibling;
+use sp_runtime::traits::{AccountIdConversion, CheckedConversion, Convert, Zero};
+use sp_std::{borrow::Borrow, marker::PhantomData, vec, vec::Vec};
+use xcm::{
+    latest::{MultiAsset, Xcm},
+    prelude::{Concrete, Fungible as XcmFungible},
+    v1::{BodyId, Junction::*, Junctions::*, MultiLocation, NetworkId},
+};
+use xcm_builder::{
+    AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom,
+    EnsureXcmOrigin, FixedWeightBounds, FungiblesAdapter, LocationInverter, ParentAsSuperuser,
+    ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia,
+    SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit,
+    ConvertedConcreteAssetId,
+};
+use xcm_executor::{
+    {Config, XcmExecutor},
+    traits::{Convert as ConvertXcm, FilterAssetLocation, JustTry, MatchesFungible, ShouldExecute},
+};
+
+use up_common::{
+    constants::{MAXIMUM_BLOCK_WEIGHT, UNIQUE},
+    types::{AccountId, Balance},
+};
+
+use crate::{
+    Balances, Call, DmpQueue, Event, Origin, ParachainInfo,
+    ParachainSystem, PolkadotXcm, Runtime, XcmpQueue,
+};
+use crate::runtime_common::config::substrate::{TreasuryModuleId, MaxLocks, MaxReserves};
+use crate::runtime_common::config::pallets::TreasuryAccountId;
+use crate::runtime_common::config::xcm::*;
+use crate::*;
+
+// Signed version of balance
+pub type Amount = i128;
+
+match_types! {
+	pub type ParentOrParentsExecutivePlurality: impl Contains<MultiLocation> = {
+		MultiLocation { parents: 1, interior: Here } |
+		MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Executive, .. }) }
+	};
+	pub type ParentOrSiblings: impl Contains<MultiLocation> = {
+		MultiLocation { parents: 1, interior: Here } |
+		MultiLocation { parents: 1, interior: X1(_) }
+	};
+}
+
+/// Deny executing the XCM if it matches any of the Deny filter regardless of anything else.
+/// If it passes the Deny, and matches one of the Allow cases then it is let through.
+pub struct DenyThenTry<Deny, Allow>(PhantomData<Deny>, PhantomData<Allow>)
+    where
+        Deny: ShouldExecute,
+        Allow: ShouldExecute;
+
+impl<Deny, Allow> ShouldExecute for DenyThenTry<Deny, Allow>
+    where
+        Deny: ShouldExecute,
+        Allow: ShouldExecute,
+{
+    fn should_execute<Call>(
+        origin: &MultiLocation,
+        message: &mut Xcm<Call>,
+        max_weight: Weight,
+        weight_credit: &mut Weight,
+    ) -> Result<(), ()> {
+        Deny::should_execute(origin, message, max_weight, weight_credit)?;
+        Allow::should_execute(origin, message, max_weight, weight_credit)
+    }
+}
+
+pub type Barrier = DenyThenTry<
+    DenyExchangeWithUnknownLocation,
+    (
+        TakeWeightCredit,
+        AllowTopLevelPaidExecutionFrom<Everything>,
+        // Parent and its exec plurality get free execution
+        AllowUnpaidExecutionFrom<ParentOrParentsExecutivePlurality>,
+        // Expected responses are OK.
+        AllowKnownQueryResponses<PolkadotXcm>,
+        // Subscriptions for version tracking are OK.
+        AllowSubscriptionsFrom<ParentOrSiblings>,
+    ),
+>;
\ No newline at end of file
addedruntime/unique/src/xcm_config.rsdiffbeforeafterboth

no changes