git.delta.rocks / unique-network / refs/commits / 9f4fc065e116

difftreelog

source

runtime/unique/src/xcm_barrier.rs2.4 KiBsourcehistory
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::{18	match_types, parameter_types,19	traits::{Get, Everything},20};21use sp_std::{vec, vec::Vec};22use xcm::latest::{Junction::*, Junctions::*, MultiLocation};23use xcm_builder::{24	AllowKnownQueryResponses, AllowSubscriptionsFrom, TakeWeightCredit,25	AllowTopLevelPaidExecutionFrom,26};2728use crate::{29	Runtime, ParachainInfo, PolkadotXcm,30	runtime_common::{31		config::xcm::{DenyThenTry, DenyTransact, DenyExchangeWithUnknownLocation},32		xcm::OverridableAllowedLocations,33	},34};3536match_types! {37	pub type ParentOrSiblings: impl Contains<MultiLocation> = {38		MultiLocation { parents: 1, interior: Here } |39		MultiLocation { parents: 1, interior: X1(_) }40	};41}4243parameter_types! {44	pub UniqueDefaultAllowedLocations: Vec<MultiLocation> = vec![45		// Self location46		MultiLocation {47			parents: 0,48			interior: Here,49		},50		// Parent location51		MultiLocation {52			parents: 1,53			interior: Here,54		},55		// Statemint/Statemint location56		MultiLocation {57			parents: 1,58			interior: X1(Parachain(1000)),59		},60		// Karura/Acala location61		MultiLocation {62			parents: 1,63			interior: X1(Parachain(2000)),64		},65		// Moonbeam location66		MultiLocation {67			parents: 1,68			interior: X1(Parachain(2004)),69		},70		// Self parachain address71		MultiLocation {72			parents: 1,73			interior: X1(Parachain(ParachainInfo::get().into())),74		},75	];76}7778pub type Barrier = DenyThenTry<79	(80		DenyTransact,81		DenyExchangeWithUnknownLocation<82			OverridableAllowedLocations<Runtime, UniqueDefaultAllowedLocations>,83		>,84	),85	(86		TakeWeightCredit,87		AllowTopLevelPaidExecutionFrom<Everything>,88		// Expected responses are OK.89		AllowKnownQueryResponses<PolkadotXcm>,90		// Subscriptions for version tracking are OK.91		AllowSubscriptionsFrom<ParentOrSiblings>,92	),93>;