--- 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 . -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); +match_types! { + pub type ParentOnly: impl Contains = { + MultiLocation { parents: 1, interior: Here } + }; +} + +pub type Barrier = ( + TakeWeightCredit, + AllowExplicitUnpaidExecutionFrom, + AllowTopLevelPaidExecutionFrom, +); --- 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 { parents: 1, interior: Here } + }; + pub type ParentOrSiblings: impl Contains = { MultiLocation { parents: 1, interior: Here } | MultiLocation { parents: 1, interior: X1(_) } @@ -32,6 +36,7 @@ pub type Barrier = ( TakeWeightCredit, + AllowExplicitUnpaidExecutionFrom, AllowTopLevelPaidExecutionFrom, // Expected responses are OK. AllowKnownQueryResponses, --- a/runtime/unique/src/xcm_barrier.rs +++ b/runtime/unique/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 { parents: 1, interior: Here } + }; + pub type ParentOrSiblings: impl Contains = { MultiLocation { parents: 1, interior: Here } | MultiLocation { parents: 1, interior: X1(_) } @@ -32,6 +36,7 @@ pub type Barrier = ( TakeWeightCredit, + AllowExplicitUnpaidExecutionFrom, AllowTopLevelPaidExecutionFrom, // Expected responses are OK. AllowKnownQueryResponses,