difftreelog
wip upd quartz
in: master
4 files changed
runtime/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>
runtime/quartz/src/lib.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/>.1617//! The Substrate Node Template runtime. This can be compiled with `#[no_std]`, ready for Wasm.1819#![cfg_attr(not(feature = "std"), no_std)]20// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256.21#![recursion_limit = "1024"]22#![allow(clippy::from_over_into, clippy::identity_op)]23#![allow(clippy::fn_to_numeric_cast_with_truncation)]24// Make the WASM binary available.25#[cfg(feature = "std")]26include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));2728use frame_support::parameter_types;2930use sp_version::RuntimeVersion;31use sp_runtime::create_runtime_str;3233use up_common::types::*;3435#[path = "../../common/mod.rs"]36mod runtime_common;3738pub use runtime_common::*;3940pub const RUNTIME_NAME: &str = "quartz";41pub const TOKEN_SYMBOL: &str = "QTZ";4243/// This runtime version.44pub const VERSION: RuntimeVersion = RuntimeVersion {45 spec_name: create_runtime_str!(RUNTIME_NAME),46 impl_name: create_runtime_str!(RUNTIME_NAME),47 authoring_version: 1,48 spec_version: 927020,49 impl_version: 0,50 apis: RUNTIME_API_VERSIONS,51 transaction_version: 2,52 state_version: 0,53};5455parameter_types! {56 pub const Version: RuntimeVersion = VERSION;57 pub const SS58Prefix: u8 = 255;58 pub const ChainId: u64 = 8881;59}6061construct_runtime!(quartz);6263impl_common_runtime_apis!();6465cumulus_pallet_parachain_system::register_validate_block!(66 Runtime = Runtime,67 BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::<Runtime, Executive>,68 CheckInherents = CheckInherents,69);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/>.1617//! The Substrate Node Template runtime. This can be compiled with `#[no_std]`, ready for Wasm.1819#![cfg_attr(not(feature = "std"), no_std)]20// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256.21#![recursion_limit = "1024"]22#![allow(clippy::from_over_into, clippy::identity_op)]23#![allow(clippy::fn_to_numeric_cast_with_truncation)]24// Make the WASM binary available.25#[cfg(feature = "std")]26include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));2728use frame_support::parameter_types;2930use sp_version::RuntimeVersion;31use sp_runtime::create_runtime_str;3233use up_common::types::*;3435#[path = "../../common/mod.rs"]36mod runtime_common;3738pub mod xcm_config;3940pub use runtime_common::*;4142pub const RUNTIME_NAME: &str = "quartz";43pub const TOKEN_SYMBOL: &str = "QTZ";4445/// This runtime version.46pub const VERSION: RuntimeVersion = RuntimeVersion {47 spec_name: create_runtime_str!(RUNTIME_NAME),48 impl_name: create_runtime_str!(RUNTIME_NAME),49 authoring_version: 1,50 spec_version: 927020,51 impl_version: 0,52 apis: RUNTIME_API_VERSIONS,53 transaction_version: 2,54 state_version: 0,55};5657parameter_types! {58 pub const Version: RuntimeVersion = VERSION;59 pub const SS58Prefix: u8 = 255;60 pub const ChainId: u64 = 8881;61}6263construct_runtime!(quartz);6465impl_common_runtime_apis!();6667cumulus_pallet_parachain_system::register_validate_block!(68 Runtime = Runtime,69 BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::<Runtime, Executive>,70 CheckInherents = CheckInherents,71);runtime/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
runtime/unique/src/xcm_config.rsdiffbeforeafterbothno changes