From 66a54f9e3e0a269ac65ccf9bf74adaf0589ea16e Mon Sep 17 00:00:00 2001 From: muharem Date: Wed, 13 Dec 2023 15:14:26 +0100 Subject: [PATCH 1/8] waived locations --- relay/kusama/src/xcm_config.rs | 9 ++++- relay/polkadot/src/xcm_config.rs | 9 ++++- .../src/fellowship/mod.rs | 18 +++++----- .../collectives-polkadot/src/impls.rs | 33 ++++++++++++------- .../collectives-polkadot/src/lib.rs | 8 ++--- .../collectives-polkadot/src/xcm_config.rs | 10 ++++-- 6 files changed, 56 insertions(+), 31 deletions(-) diff --git a/relay/kusama/src/xcm_config.rs b/relay/kusama/src/xcm_config.rs index 4e9798a122..f68bff82e2 100644 --- a/relay/kusama/src/xcm_config.rs +++ b/relay/kusama/src/xcm_config.rs @@ -147,6 +147,9 @@ match_types! { pub type OnlyParachains: impl Contains = { MultiLocation { parents: 0, interior: X1(Parachain(_)) } }; + pub type LocalPlurality: impl Contains = { + MultiLocation { parents: 0, interior: X1(Plurality { .. }) } + }; } /// The barriers one of which must be passed for an XCM message to be executed. @@ -321,6 +324,10 @@ impl Contains for SafeCallFilter { } } +/// Locations that will not be charged fees in the executor, either execution or delivery. +/// We only waive fees for system functions, which these locations represent. +pub type WaivedLocations = (SystemParachains, LocalPlurality); + pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { type RuntimeCall = RuntimeCall; @@ -347,7 +354,7 @@ impl xcm_executor::Config for XcmConfig { type SubscriptionService = XcmPallet; type PalletInstancesInfo = AllPalletsWithSystem; type MaxAssetsIntoHolding = MaxAssetsIntoHolding; - type FeeManager = XcmFeesToAccount; + type FeeManager = XcmFeesToAccount; // No bridges yet... type MessageExporter = (); type UniversalAliases = Nothing; diff --git a/relay/polkadot/src/xcm_config.rs b/relay/polkadot/src/xcm_config.rs index 65c0348fe1..73a2af6342 100644 --- a/relay/polkadot/src/xcm_config.rs +++ b/relay/polkadot/src/xcm_config.rs @@ -161,6 +161,9 @@ match_types! { MultiLocation { parents: 0, interior: X1(Parachain(COLLECTIVES_ID)) } | MultiLocation { parents: 0, interior: X2(Parachain(COLLECTIVES_ID), Plurality { id: BodyId::Technical, .. }) } }; + pub type LocalPlurality: impl Contains = { + MultiLocation { parents: 0, interior: X1(Plurality { .. }) } + }; } /// The barriers one of which must be passed for an XCM message to be executed. @@ -324,6 +327,10 @@ impl Contains for SafeCallFilter { } } +/// Locations that will not be charged fees in the executor, either execution or delivery. +/// We only waive fees for system functions, which these locations represent. +pub type WaivedLocations = (SystemParachains, LocalPlurality); + pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { type RuntimeCall = RuntimeCall; @@ -351,7 +358,7 @@ impl xcm_executor::Config for XcmConfig { type SubscriptionService = XcmPallet; type PalletInstancesInfo = AllPalletsWithSystem; type MaxAssetsIntoHolding = MaxAssetsIntoHolding; - type FeeManager = XcmFeesToAccount; + type FeeManager = XcmFeesToAccount; // No bridges yet... type MessageExporter = (); type UniversalAliases = Nothing; diff --git a/system-parachains/collectives/collectives-polkadot/src/fellowship/mod.rs b/system-parachains/collectives/collectives-polkadot/src/fellowship/mod.rs index 230d40585b..fe7ade4a12 100644 --- a/system-parachains/collectives/collectives-polkadot/src/fellowship/mod.rs +++ b/system-parachains/collectives/collectives-polkadot/src/fellowship/mod.rs @@ -19,9 +19,12 @@ mod origins; mod tracks; use crate::{ - impls::ToParentTreasury, weights, xcm_config::TreasurerBodyId, AccountId, AssetRate, Balance, - Balances, FellowshipReferenda, GovernanceLocation, PolkadotTreasuryAccount, Preimage, Runtime, - RuntimeCall, RuntimeEvent, RuntimeOrigin, Scheduler, DAYS, + impls::ToParentTreasury, + weights, + xcm_config::{LocationToAccountId, TreasurerBodyId}, + AccountId, AssetRate, Balance, Balances, FellowshipReferenda, GovernanceLocation, + PolkadotTreasuryAccount, Preimage, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, + Scheduler, DAYS, }; use cumulus_primitives_core::Junction::GeneralIndex; use frame_support::{ @@ -38,16 +41,13 @@ pub use origins::{ }; use pallet_ranked_collective::EnsureOfRank; use pallet_xcm::{EnsureXcm, IsVoiceOfBody}; -use parachains_common::polkadot::account; use polkadot_runtime_common::impls::{ LocatableAssetConverter, VersionedLocatableAsset, VersionedMultiLocationConverter, }; use polkadot_runtime_constants::{currency::GRAND, time::HOURS, xcm::body::FELLOWSHIP_ADMIN_INDEX}; use sp_arithmetic::Permill; use sp_core::{ConstU128, ConstU32}; -use sp_runtime::traits::{ - AccountIdConversion, ConstU16, ConvertToValue, IdentityLookup, Replace, TakeFirst, -}; +use sp_runtime::traits::{ConstU16, ConvertToValue, IdentityLookup, Replace, TakeFirst}; use xcm::latest::BodyId; use xcm_builder::{AliasesIntoAccountId32, LocatableAssetId, PayOverXcm}; @@ -70,8 +70,6 @@ pub mod ranks { } parameter_types! { - // Referenda pallet account, used to temporarily deposit slashed imbalance before teleporting. - pub ReferendaPalletAccount: AccountId = account::REFERENDA_PALLET_ID.into_account_truncating(); pub const FellowshipAdminBodyId: BodyId = BodyId::Index(FELLOWSHIP_ADMIN_INDEX); } @@ -101,7 +99,7 @@ impl pallet_referenda::Config for Runtime { >; type CancelOrigin = Architects; type KillOrigin = Masters; - type Slash = ToParentTreasury; + type Slash = ToParentTreasury; type Votes = pallet_ranked_collective::Votes; type Tally = pallet_ranked_collective::TallyOf; type SubmissionDeposit = ConstU128<0>; diff --git a/system-parachains/collectives/collectives-polkadot/src/impls.rs b/system-parachains/collectives/collectives-polkadot/src/impls.rs index fb2feb63ec..a59c181db6 100644 --- a/system-parachains/collectives/collectives-polkadot/src/impls.rs +++ b/system-parachains/collectives/collectives-polkadot/src/impls.rs @@ -24,7 +24,8 @@ use pallet_alliance::{ProposalIndex, ProposalProvider}; use parachains_common::impls::NegativeImbalance; use sp_runtime::DispatchError; use sp_std::{cmp::Ordering, marker::PhantomData, prelude::*}; -use xcm::latest::{Fungibility, Junction, Parent, WeightLimit}; +use xcm::latest::{Fungibility, Junction, Junctions::Here, MultiLocation, Parent, WeightLimit}; +use xcm_executor::traits::ConvertLocation; type AccountIdOf = ::AccountId; @@ -38,19 +39,19 @@ pub type BalanceOf = /// Implements `OnUnbalanced::on_unbalanced` to teleport slashed assets to relay chain treasury /// account. -pub struct ToParentTreasury( - PhantomData<(TreasuryAccount, PalletAccount, T)>, +pub struct ToParentTreasury( + PhantomData<(TreasuryAccount, AccountIdConverter, T)>, ); -impl OnUnbalanced> - for ToParentTreasury +impl OnUnbalanced> + for ToParentTreasury where T: pallet_balances::Config + pallet_xcm::Config + frame_system::Config, <::RuntimeOrigin as OriginTrait>::AccountId: From>, [u8; 32]: From<::AccountId>, TreasuryAccount: Get>, - PalletAccount: Get>, BalanceOf: Into, + AccountIdConverter: ConvertLocation>, { fn on_unbalanced(amount: NegativeImbalance) { let amount = match amount.drop_zero() { @@ -58,16 +59,24 @@ where Err(amount) => amount, }; let imbalance = amount.peek(); - let pallet_acc: AccountIdOf = PalletAccount::get(); - let treasury_acc: AccountIdOf = TreasuryAccount::get(); - - >::resolve_creating(&pallet_acc, amount); + let root_location: MultiLocation = Here.into(); + let root_account: AccountIdOf = + match AccountIdConverter::convert_location(&root_location) { + Some(a) => a, + None => { + log::warn!("Failed to convert root origin into account id"); + return + }, + }; + let treasury_account: AccountIdOf = TreasuryAccount::get(); + + >::resolve_creating(&root_account, amount); let result = >::limited_teleport_assets( - <::RuntimeOrigin>::signed(pallet_acc.into()), + <::RuntimeOrigin>::root(), Box::new(Parent.into()), Box::new( - Junction::AccountId32 { network: None, id: treasury_acc.into() } + Junction::AccountId32 { network: None, id: treasury_account.into() } .into_location() .into(), ), diff --git a/system-parachains/collectives/collectives-polkadot/src/lib.rs b/system-parachains/collectives/collectives-polkadot/src/lib.rs index 89bda923a3..b8511901fb 100644 --- a/system-parachains/collectives/collectives-polkadot/src/lib.rs +++ b/system-parachains/collectives/collectives-polkadot/src/lib.rs @@ -87,7 +87,8 @@ use parachains_common::{ }; use sp_runtime::RuntimeDebug; use xcm_config::{ - GovernanceLocation, TreasurerBodyId, XcmConfig, XcmOriginToTransactDispatchOrigin, + GovernanceLocation, LocationToAccountId, TreasurerBodyId, XcmConfig, + XcmOriginToTransactDispatchOrigin, }; #[cfg(any(feature = "std", test))] @@ -509,9 +510,6 @@ pub const MAX_ALLIES: u32 = 100; parameter_types! { pub const AllyDeposit: Balance = 1_000 * UNITS; // 1,000 DOT bond to join as an Ally - // The Alliance pallet account, used as a temporary place to deposit a slashed imbalance - // before the teleport to the Treasury. - pub AlliancePalletAccount: AccountId = ALLIANCE_PALLET_ID.into_account_truncating(); pub PolkadotTreasuryAccount: AccountId = POLKADOT_TREASURY_PALLET_ID.into_account_truncating(); // The number of blocks a member must wait between giving a retirement notice and retiring. // Supposed to be greater than time required to `kick_member` with alliance motion. @@ -525,7 +523,7 @@ impl pallet_alliance::Config for Runtime { type MembershipManager = RootOrAllianceTwoThirdsMajority; type AnnouncementOrigin = RootOrAllianceTwoThirdsMajority; type Currency = Balances; - type Slashed = ToParentTreasury; + type Slashed = ToParentTreasury; type InitializeMembers = AllianceMotion; type MembershipChanged = AllianceMotion; type RetirementPeriod = AllianceRetirementPeriod; diff --git a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs index ced66b2c5d..790db8e2d2 100644 --- a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs +++ b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs @@ -132,6 +132,9 @@ match_types! { MultiLocation { parents: 1, interior: Here } | MultiLocation { parents: 1, interior: X1(_) } }; + pub type LocalPlurality: impl Contains = { + MultiLocation { parents: 0, interior: X1(Plurality { .. }) } + }; } /// A call filter for the XCM Transact instruction. This is a temporary measure until we properly @@ -261,8 +264,11 @@ match_types! { /// Locations that will not be charged fees in the executor, /// either execution or delivery. /// We only waive fees for system functions, which these locations represent. -pub type WaivedLocations = - (RelayOrOtherSystemParachains, Equals); +pub type WaivedLocations = ( + RelayOrOtherSystemParachains, + Equals, + LocalPlurality, +); /// Cases where a remote origin is accepted as trusted Teleporter for a given asset: /// - DOT with the parent Relay Chain and sibling parachains. From a15377bf591026c83ed35780699902fc380b2a6f Mon Sep 17 00:00:00 2001 From: muharem Date: Thu, 14 Dec 2023 16:16:45 +0100 Subject: [PATCH 2/8] local root location to account id --- .../collectives-polkadot/src/xcm_config.rs | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs index 790db8e2d2..69627e0bbc 100644 --- a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs +++ b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs @@ -18,6 +18,7 @@ use super::{ PolkadotXcm, PriceForParentDelivery, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, WeightToFee, XcmpQueue, }; +use codec::Encode; use frame_support::{ match_types, parameter_types, traits::{ConstU32, Contains, Equals, Everything, Nothing}, @@ -38,15 +39,16 @@ use xcm_builder::{ AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, CurrencyAdapter, DenyReserveTransferToRelayChain, DenyThenTry, DescribeAllTerminal, DescribeFamily, - EnsureXcmOrigin, FixedWeightBounds, HashedDescription, IsConcrete, OriginToPluralityVoice, - ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, - SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, - SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, - WithComputedOrigin, WithUniqueTopic, XcmFeesToAccount, + DescribeLocation, EnsureXcmOrigin, FixedWeightBounds, HashedDescription, IsConcrete, + OriginToPluralityVoice, ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, + SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative, + SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, + UsingComponents, WithComputedOrigin, WithUniqueTopic, XcmFeesToAccount, }; use xcm_executor::{traits::WithOriginFilter, XcmExecutor}; parameter_types! { + pub const RootLocation: MultiLocation = MultiLocation::here(); pub const DotLocation: MultiLocation = MultiLocation::parent(); pub const RelayNetwork: Option = Some(NetworkId::Polkadot); pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into(); @@ -71,8 +73,21 @@ pub type LocationToAccountId = ( AccountId32Aliases, // Foreign locations alias into accounts according to a hash of their standard description. HashedDescription>, + // Here/local root location to `AccountId`. + HashedDescription, ); +pub struct DescribeLocal; +impl DescribeLocation for DescribeLocal { + fn describe_location(l: &MultiLocation) -> Option> { + if matches!(l, MultiLocation { parents: 0, interior: Here }) { + Some(b"Local".encode()) + } else { + None + } + } +} + /// Means for transacting the native currency on this chain. pub type CurrencyTransactor = CurrencyAdapter< // Use this currency: @@ -267,6 +282,7 @@ match_types! { pub type WaivedLocations = ( RelayOrOtherSystemParachains, Equals, + // Equals, TODO LocalPlurality, ); From a65fa0eda0775c79755b3672092aa2a274ef2e8e Mon Sep 17 00:00:00 2001 From: muharem Date: Thu, 14 Dec 2023 16:22:37 +0100 Subject: [PATCH 3/8] local root location is waived --- .../collectives/collectives-polkadot/src/xcm_config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs index 69627e0bbc..1eeb2b4358 100644 --- a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs +++ b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs @@ -282,7 +282,7 @@ match_types! { pub type WaivedLocations = ( RelayOrOtherSystemParachains, Equals, - // Equals, TODO + Equals, LocalPlurality, ); From a5cd4af50dd015fb2d63163b15a01a2c3777837c Mon Sep 17 00:00:00 2001 From: muharem Date: Thu, 14 Dec 2023 18:18:16 +0100 Subject: [PATCH 4/8] local chain --- .../collectives/collectives-polkadot/src/xcm_config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs index 1eeb2b4358..bd515ea716 100644 --- a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs +++ b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs @@ -81,7 +81,7 @@ pub struct DescribeLocal; impl DescribeLocation for DescribeLocal { fn describe_location(l: &MultiLocation) -> Option> { if matches!(l, MultiLocation { parents: 0, interior: Here }) { - Some(b"Local".encode()) + Some(b"LocalChain".encode()) } else { None } From 8cbbf4ee483c7093c9952e03c25874cdd68f02bf Mon Sep 17 00:00:00 2001 From: muharem Date: Thu, 14 Dec 2023 18:25:38 +0100 Subject: [PATCH 5/8] root location get free xcm execution/delivery --- relay/kusama/src/xcm_config.rs | 5 +++-- relay/polkadot/src/xcm_config.rs | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/relay/kusama/src/xcm_config.rs b/relay/kusama/src/xcm_config.rs index f68bff82e2..6781b5a3c6 100644 --- a/relay/kusama/src/xcm_config.rs +++ b/relay/kusama/src/xcm_config.rs @@ -23,7 +23,7 @@ use super::{ }; use frame_support::{ match_types, parameter_types, - traits::{Contains, Everything, Nothing}, + traits::{Contains, Equals, Everything, Nothing}, weights::Weight, }; use frame_system::EnsureRoot; @@ -47,6 +47,7 @@ use xcm_builder::{ use xcm_executor::traits::WithOriginFilter; parameter_types! { + pub const RootLocation: MultiLocation = Here.into_location(); /// The location of the KSM token, from the context of this chain. Since this token is native to this /// chain, we make it synonymous with it and thus it is the `Here` location, which means "equivalent to /// the context". @@ -326,7 +327,7 @@ impl Contains for SafeCallFilter { /// Locations that will not be charged fees in the executor, either execution or delivery. /// We only waive fees for system functions, which these locations represent. -pub type WaivedLocations = (SystemParachains, LocalPlurality); +pub type WaivedLocations = (SystemParachains, Equals, LocalPlurality); pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { diff --git a/relay/polkadot/src/xcm_config.rs b/relay/polkadot/src/xcm_config.rs index 73a2af6342..b05f292e93 100644 --- a/relay/polkadot/src/xcm_config.rs +++ b/relay/polkadot/src/xcm_config.rs @@ -23,7 +23,7 @@ use super::{ }; use frame_support::{ match_types, parameter_types, - traits::{Contains, Everything, Nothing}, + traits::{Contains, Equals, Everything, Nothing}, weights::Weight, }; use frame_system::EnsureRoot; @@ -52,6 +52,7 @@ use xcm_builder::{ use xcm_executor::traits::WithOriginFilter; parameter_types! { + pub const RootLocation: MultiLocation = Here.into_location(); /// The location of the DOT token, from the context of this chain. Since this token is native to this /// chain, we make it synonymous with it and thus it is the `Here` location, which means "equivalent to /// the context". @@ -329,7 +330,7 @@ impl Contains for SafeCallFilter { /// Locations that will not be charged fees in the executor, either execution or delivery. /// We only waive fees for system functions, which these locations represent. -pub type WaivedLocations = (SystemParachains, LocalPlurality); +pub type WaivedLocations = (SystemParachains, Equals, LocalPlurality); pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { From 4b424b529a798d0f9ef247c167e06b161f2562d0 Mon Sep 17 00:00:00 2001 From: muharem Date: Fri, 15 Dec 2023 12:14:10 +0100 Subject: [PATCH 6/8] describe local root location with DescribeTerminus --- .../collectives-polkadot/src/xcm_config.rs | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs index bd515ea716..0b3f9c8173 100644 --- a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs +++ b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs @@ -18,7 +18,6 @@ use super::{ PolkadotXcm, PriceForParentDelivery, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, WeightToFee, XcmpQueue, }; -use codec::Encode; use frame_support::{ match_types, parameter_types, traits::{ConstU32, Contains, Equals, Everything, Nothing}, @@ -39,7 +38,7 @@ use xcm_builder::{ AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, CurrencyAdapter, DenyReserveTransferToRelayChain, DenyThenTry, DescribeAllTerminal, DescribeFamily, - DescribeLocation, EnsureXcmOrigin, FixedWeightBounds, HashedDescription, IsConcrete, + DescribeTerminus, EnsureXcmOrigin, FixedWeightBounds, HashedDescription, IsConcrete, OriginToPluralityVoice, ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, @@ -74,20 +73,9 @@ pub type LocationToAccountId = ( // Foreign locations alias into accounts according to a hash of their standard description. HashedDescription>, // Here/local root location to `AccountId`. - HashedDescription, + HashedDescription, ); -pub struct DescribeLocal; -impl DescribeLocation for DescribeLocal { - fn describe_location(l: &MultiLocation) -> Option> { - if matches!(l, MultiLocation { parents: 0, interior: Here }) { - Some(b"LocalChain".encode()) - } else { - None - } - } -} - /// Means for transacting the native currency on this chain. pub type CurrencyTransactor = CurrencyAdapter< // Use this currency: From 77d6f5522e2c9c8d50ae9a1dbfabeb683a8d67b4 Mon Sep 17 00:00:00 2001 From: Muharem Date: Tue, 19 Dec 2023 16:56:27 +0100 Subject: [PATCH 7/8] Apply suggestions from code review Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> --- relay/kusama/src/xcm_config.rs | 2 +- relay/polkadot/src/xcm_config.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/relay/kusama/src/xcm_config.rs b/relay/kusama/src/xcm_config.rs index 6781b5a3c6..75eb39ab69 100644 --- a/relay/kusama/src/xcm_config.rs +++ b/relay/kusama/src/xcm_config.rs @@ -325,7 +325,7 @@ impl Contains for SafeCallFilter { } } -/// Locations that will not be charged fees in the executor, either execution or delivery. +/// Locations that will not be charged fees in the executor, neither for execution nor delivery. /// We only waive fees for system functions, which these locations represent. pub type WaivedLocations = (SystemParachains, Equals, LocalPlurality); diff --git a/relay/polkadot/src/xcm_config.rs b/relay/polkadot/src/xcm_config.rs index b05f292e93..e019879b36 100644 --- a/relay/polkadot/src/xcm_config.rs +++ b/relay/polkadot/src/xcm_config.rs @@ -328,7 +328,7 @@ impl Contains for SafeCallFilter { } } -/// Locations that will not be charged fees in the executor, either execution or delivery. +/// Locations that will not be charged fees in the executor, neither for execution nor delivery. /// We only waive fees for system functions, which these locations represent. pub type WaivedLocations = (SystemParachains, Equals, LocalPlurality); From 7a8b66d232f8bdc2edf84d7b6a0d4954f42c8984 Mon Sep 17 00:00:00 2001 From: muharem Date: Tue, 2 Jan 2024 07:56:06 +0100 Subject: [PATCH 8/8] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca18f73b56..3771261617 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Election provider: use a geometric deposit base calculation for EPM signed submissions in Polkadot and Kusama ([polkadot-fellows/runtimes#56](https://github.com/polkadot-fellows/runtimes/pull/56)) - Make `IdentityInfo` generic in `pallet-identity` ([polkadot-fellows/runtimes#87](https://github.com/polkadot-fellows/runtimes/pull/87)). Context: https://github.com/paritytech/polkadot-sdk/pull/1661 - Whitelist `force_default_xcm_version` in XCM call filter ([polkadot-fellows/runtimes#45](https://github.com/polkadot-fellows/runtimes/pull/45)) +- Set up an account ID for the local root location on Polkadot Collectives ([polkadot-fellows/runtimes#125](https://github.com/polkadot-fellows/runtimes/pull/125)) ### Added