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

difftreelog

fix remove unneeded barrier, add safecallfilter

Daniel Shiposha2023-03-22parent: #4253705.patch.diff
in: master

4 files changed

modifiedruntime/common/config/xcm/mod.rsdiffbeforeafterboth
--- a/runtime/common/config/xcm/mod.rs
+++ b/runtime/common/config/xcm/mod.rs
@@ -125,29 +125,6 @@
 	}
 }
 
-pub struct DenyTransact;
-impl TryPass for DenyTransact {
-	fn try_pass<Call>(
-		_origin: &MultiLocation,
-		message: &mut [Instruction<Call>],
-	) -> Result<(), ()> {
-		let transact_inst = message
-			.iter()
-			.find(|inst| matches![inst, Instruction::Transact { .. }]);
-
-		if transact_inst.is_some() {
-			log::warn!(
-				target: "xcm::barrier",
-				"transact XCM rejected"
-			);
-
-			Err(())
-		} else {
-			Ok(())
-		}
-	}
-}
-
 /// 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>)
@@ -234,7 +211,9 @@
 	type MessageExporter = ();
 	type UniversalAliases = Nothing;
 	type CallDispatcher = RuntimeCall;
-	type SafeCallFilter = Nothing; // ? Only non-recursive calls may go here, but do we need this?
+
+	// Deny all XCM Transacts.
+	type SafeCallFilter = Nothing;
 }
 
 #[cfg(feature = "runtime-benchmarks")]
modifiedruntime/opal/src/xcm_barrier.rsdiffbeforeafterboth
before · runtime/opal/src/xcm_barrier.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/>.1617use frame_support::traits::Everything;18use xcm::latest::{Weight, MultiLocation};19use xcm::v3::Instruction;20use xcm_builder::{AllowTopLevelPaidExecutionFrom, TakeWeightCredit};21use xcm_executor::traits::ShouldExecute;2223use crate::runtime_common::config::xcm::{DenyThenTry, DenyTransact};2425/// Execution barrier that just takes `max_weight` from `weight_credit`.26///27/// Useful to allow XCM execution by local chain users via extrinsics.28/// E.g. `pallet_xcm::reserve_asset_transfer` to transfer a reserve asset29/// out of the local chain to another one.30pub struct AllowAllDebug;31impl ShouldExecute for AllowAllDebug {32	fn should_execute<Call>(33		_origin: &MultiLocation,34		_message: &mut [Instruction<Call>],35		_max_weight: Weight,36		_weight_credit: &mut Weight,37	) -> Result<(), ()> {38		Ok(())39	}40}4142pub type Barrier = DenyThenTry<43	DenyTransact,44	(45		TakeWeightCredit,46		AllowTopLevelPaidExecutionFrom<Everything>,47		AllowAllDebug,48	),49>;
after · runtime/opal/src/xcm_barrier.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/>.1617use frame_support::traits::Everything;18use xcm::latest::{Weight, MultiLocation};19use xcm::v3::Instruction;20use xcm_builder::{AllowTopLevelPaidExecutionFrom, TakeWeightCredit};21use xcm_executor::traits::ShouldExecute;2223/// Execution barrier that just takes `max_weight` from `weight_credit`.24///25/// Useful to allow XCM execution by local chain users via extrinsics.26/// E.g. `pallet_xcm::reserve_asset_transfer` to transfer a reserve asset27/// out of the local chain to another one.28pub struct AllowAllDebug;29impl ShouldExecute for AllowAllDebug {30	fn should_execute<Call>(31		_origin: &MultiLocation,32		_message: &mut [Instruction<Call>],33		_max_weight: Weight,34		_weight_credit: &mut Weight,35	) -> Result<(), ()> {36		Ok(())37	}38}3940pub type Barrier = (41	TakeWeightCredit,42	AllowTopLevelPaidExecutionFrom<Everything>,43	AllowAllDebug,44);
modifiedruntime/quartz/src/xcm_barrier.rsdiffbeforeafterboth
--- a/runtime/quartz/src/xcm_barrier.rs
+++ b/runtime/quartz/src/xcm_barrier.rs
@@ -28,7 +28,7 @@
 use crate::{
 	Runtime, ParachainInfo, PolkadotXcm,
 	runtime_common::{
-		config::xcm::{DenyThenTry, DenyTransact, DenyExchangeWithUnknownLocation},
+		config::xcm::{DenyThenTry, DenyExchangeWithUnknownLocation},
 		xcm::OverridableAllowedLocations,
 	},
 };
@@ -76,12 +76,9 @@
 }
 
 pub type Barrier = DenyThenTry<
-	(
-		DenyTransact,
-		DenyExchangeWithUnknownLocation<
-			OverridableAllowedLocations<Runtime, QuartzDefaultAllowedLocations>,
-		>,
-	),
+	DenyExchangeWithUnknownLocation<
+		OverridableAllowedLocations<Runtime, QuartzDefaultAllowedLocations>,
+	>,
 	(
 		TakeWeightCredit,
 		AllowTopLevelPaidExecutionFrom<Everything>,
modifiedruntime/unique/src/xcm_barrier.rsdiffbeforeafterboth
--- a/runtime/unique/src/xcm_barrier.rs
+++ b/runtime/unique/src/xcm_barrier.rs
@@ -28,7 +28,7 @@
 use crate::{
 	Runtime, ParachainInfo, PolkadotXcm,
 	runtime_common::{
-		config::xcm::{DenyThenTry, DenyTransact, DenyExchangeWithUnknownLocation},
+		config::xcm::{DenyThenTry, DenyExchangeWithUnknownLocation},
 		xcm::OverridableAllowedLocations,
 	},
 };
@@ -76,12 +76,9 @@
 }
 
 pub type Barrier = DenyThenTry<
-	(
-		DenyTransact,
-		DenyExchangeWithUnknownLocation<
-			OverridableAllowedLocations<Runtime, UniqueDefaultAllowedLocations>,
-		>,
-	),
+	DenyExchangeWithUnknownLocation<
+		OverridableAllowedLocations<Runtime, UniqueDefaultAllowedLocations>,
+	>,
 	(
 		TakeWeightCredit,
 		AllowTopLevelPaidExecutionFrom<Everything>,