difftreelog
feat allow explicit unpaid execution from parent
in: master
3 files changed
runtime/opal/src/xcm_barrier.rsdiffbeforeafterboth--- a/runtime/opal/src/xcm_barrier.rs
+++ b/runtime/opal/src/xcm_barrier.rs
@@ -14,7 +14,18 @@
// 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 frame_support::traits::Everything;
-use xcm_builder::{AllowTopLevelPaidExecutionFrom, TakeWeightCredit};
+use frame_support::{match_types, traits::Everything};
+use xcm::latest::{Junctions::*, MultiLocation};
+use xcm_builder::{AllowTopLevelPaidExecutionFrom, TakeWeightCredit, AllowExplicitUnpaidExecutionFrom};
-pub type Barrier = (TakeWeightCredit, AllowTopLevelPaidExecutionFrom<Everything>);
+match_types! {
+ pub type ParentOnly: impl Contains<MultiLocation> = {
+ MultiLocation { parents: 1, interior: Here }
+ };
+}
+
+pub type Barrier = (
+ TakeWeightCredit,
+ AllowExplicitUnpaidExecutionFrom<ParentOnly>,
+ AllowTopLevelPaidExecutionFrom<Everything>,
+);
runtime/quartz/src/xcm_barrier.rsdiffbeforeafterboth--- a/runtime/quartz/src/xcm_barrier.rs
+++ b/runtime/quartz/src/xcm_barrier.rs
@@ -18,12 +18,16 @@
use xcm::latest::{Junctions::*, MultiLocation};
use xcm_builder::{
AllowKnownQueryResponses, AllowSubscriptionsFrom, TakeWeightCredit,
- AllowTopLevelPaidExecutionFrom,
+ AllowTopLevelPaidExecutionFrom, AllowExplicitUnpaidExecutionFrom,
};
use crate::PolkadotXcm;
match_types! {
+ pub type ParentOnly: impl Contains<MultiLocation> = {
+ MultiLocation { parents: 1, interior: Here }
+ };
+
pub type ParentOrSiblings: impl Contains<MultiLocation> = {
MultiLocation { parents: 1, interior: Here } |
MultiLocation { parents: 1, interior: X1(_) }
@@ -32,6 +36,7 @@
pub type Barrier = (
TakeWeightCredit,
+ AllowExplicitUnpaidExecutionFrom<ParentOnly>,
AllowTopLevelPaidExecutionFrom<Everything>,
// Expected responses are OK.
AllowKnownQueryResponses<PolkadotXcm>,
runtime/unique/src/xcm_barrier.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/>.1617use frame_support::{match_types, traits::Everything};18use xcm::latest::{Junctions::*, MultiLocation};19use xcm_builder::{20 AllowKnownQueryResponses, AllowSubscriptionsFrom, TakeWeightCredit,21 AllowTopLevelPaidExecutionFrom,22};2324use crate::PolkadotXcm;2526match_types! {27 pub type ParentOrSiblings: impl Contains<MultiLocation> = {28 MultiLocation { parents: 1, interior: Here } |29 MultiLocation { parents: 1, interior: X1(_) }30 };31}3233pub type Barrier = (34 TakeWeightCredit,35 AllowTopLevelPaidExecutionFrom<Everything>,36 // Expected responses are OK.37 AllowKnownQueryResponses<PolkadotXcm>,38 // Subscriptions for version tracking are OK.39 AllowSubscriptionsFrom<ParentOrSiblings>,40);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::{match_types, traits::Everything};18use xcm::latest::{Junctions::*, MultiLocation};19use xcm_builder::{20 AllowKnownQueryResponses, AllowSubscriptionsFrom, TakeWeightCredit,21 AllowTopLevelPaidExecutionFrom, AllowExplicitUnpaidExecutionFrom,22};2324use crate::PolkadotXcm;2526match_types! {27 pub type ParentOnly: impl Contains<MultiLocation> = {28 MultiLocation { parents: 1, interior: Here }29 };3031 pub type ParentOrSiblings: impl Contains<MultiLocation> = {32 MultiLocation { parents: 1, interior: Here } |33 MultiLocation { parents: 1, interior: X1(_) }34 };35}3637pub type Barrier = (38 TakeWeightCredit,39 AllowExplicitUnpaidExecutionFrom<ParentOnly>,40 AllowTopLevelPaidExecutionFrom<Everything>,41 // Expected responses are OK.42 AllowKnownQueryResponses<PolkadotXcm>,43 // Subscriptions for version tracking are OK.44 AllowSubscriptionsFrom<ParentOrSiblings>,45);