Polkadot parachains get topic-based message IDs (#2642)

* Polkadot parachains get topics

* Formatting

---------

Co-authored-by: joepetrowski <joe@parity.io>
Co-authored-by: parity-processbot <>
This commit is contained in:
Gavin Wood
2023-08-10 02:08:56 -07:00
committed by GitHub
parent 195a2c38eb
commit 0765e2d152
4 changed files with 89 additions and 81 deletions
@@ -38,8 +38,8 @@ use xcm_builder::{
EnsureXcmOrigin, FungiblesAdapter, HashedDescription, IsConcrete, LocalMint, NativeAsset, EnsureXcmOrigin, FungiblesAdapter, HashedDescription, IsConcrete, LocalMint, NativeAsset,
NoChecking, ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, NoChecking, ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative,
SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32,
SovereignSignedViaLocation, TakeWeightCredit, UsingComponents, WeightInfoBounds, SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, UsingComponents,
WithComputedOrigin, WeightInfoBounds, WithComputedOrigin, WithUniqueTopic,
}; };
use xcm_executor::{traits::WithOriginFilter, XcmExecutor}; use xcm_executor::{traits::WithOriginFilter, XcmExecutor};
@@ -350,7 +350,8 @@ impl Contains<RuntimeCall> for SafeCallFilter {
} }
} }
pub type Barrier = DenyThenTry< pub type Barrier = TrailingSetTopicAsId<
DenyThenTry<
DenyReserveTransferToRelayChain, DenyReserveTransferToRelayChain,
( (
TakeWeightCredit, TakeWeightCredit,
@@ -359,9 +360,11 @@ pub type Barrier = DenyThenTry<
// Allow XCMs with some computed origins to pass through. // Allow XCMs with some computed origins to pass through.
WithComputedOrigin< WithComputedOrigin<
( (
// If the message is one that immediately attemps to pay for execution, then allow it. // If the message is one that immediately attemps to pay for execution, then
// allow it.
AllowTopLevelPaidExecutionFrom<Everything>, AllowTopLevelPaidExecutionFrom<Everything>,
// Parent, its pluralities (i.e. governance bodies), and the Fellows plurality get free execution. // Parent, its pluralities (i.e. governance bodies), and the Fellows plurality
// get free execution.
AllowExplicitUnpaidExecutionFrom<( AllowExplicitUnpaidExecutionFrom<(
ParentOrParentsPlurality, ParentOrParentsPlurality,
FellowsPlurality, FellowsPlurality,
@@ -374,6 +377,7 @@ pub type Barrier = DenyThenTry<
ConstU32<8>, ConstU32<8>,
>, >,
), ),
>,
>; >;
pub type AssetFeeAsExistentialDepositMultiplierFeeCharger = AssetFeeAsExistentialDepositMultiplier< pub type AssetFeeAsExistentialDepositMultiplierFeeCharger = AssetFeeAsExistentialDepositMultiplier<
@@ -443,12 +447,12 @@ pub type LocalOriginToLocation = SignedToAccountId32<RuntimeOrigin, AccountId, R
/// The means for routing XCM messages which are not for local execution into the right message /// The means for routing XCM messages which are not for local execution into the right message
/// queues. /// queues.
pub type XcmRouter = ( pub type XcmRouter = WithUniqueTopic<(
// Two routers - use UMP to communicate with the relay chain: // Two routers - use UMP to communicate with the relay chain:
cumulus_primitives_utility::ParentAsUmp<ParachainSystem, PolkadotXcm, ()>, cumulus_primitives_utility::ParentAsUmp<ParachainSystem, PolkadotXcm, ()>,
// ..and XCMP to communicate with the sibling chains. // ..and XCMP to communicate with the sibling chains.
XcmpQueue, XcmpQueue,
); )>;
#[cfg(feature = "runtime-benchmarks")] #[cfg(feature = "runtime-benchmarks")]
parameter_types! { parameter_types! {
@@ -33,7 +33,7 @@ use xcm_builder::{
DenyReserveTransferToRelayChain, DenyThenTry, EnsureXcmOrigin, IsConcrete, ParentAsSuperuser, DenyReserveTransferToRelayChain, DenyThenTry, EnsureXcmOrigin, IsConcrete, ParentAsSuperuser,
ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia,
SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit,
UsingComponents, WeightInfoBounds, WithComputedOrigin, TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WithComputedOrigin, WithUniqueTopic,
}; };
use xcm_executor::{traits::WithOriginFilter, XcmExecutor}; use xcm_executor::{traits::WithOriginFilter, XcmExecutor};
@@ -156,7 +156,8 @@ impl Contains<RuntimeCall> for SafeCallFilter {
} }
} }
pub type Barrier = DenyThenTry< pub type Barrier = TrailingSetTopicAsId<
DenyThenTry<
DenyReserveTransferToRelayChain, DenyReserveTransferToRelayChain,
( (
// Allow local users to buy weight credit. // Allow local users to buy weight credit.
@@ -176,6 +177,7 @@ pub type Barrier = DenyThenTry<
ConstU32<8>, ConstU32<8>,
>, >,
), ),
>,
>; >;
pub struct XcmConfig; pub struct XcmConfig;
@@ -220,12 +222,12 @@ pub type LocalOriginToLocation = SignedToAccountId32<RuntimeOrigin, AccountId, R
/// The means for routing XCM messages which are not for local execution into the right message /// The means for routing XCM messages which are not for local execution into the right message
/// queues. /// queues.
pub type XcmRouter = ( pub type XcmRouter = WithUniqueTopic<(
// Two routers - use UMP to communicate with the relay chain: // Two routers - use UMP to communicate with the relay chain:
cumulus_primitives_utility::ParentAsUmp<ParachainSystem, PolkadotXcm, ()>, cumulus_primitives_utility::ParentAsUmp<ParachainSystem, PolkadotXcm, ()>,
// ..and XCMP to communicate with the sibling chains. // ..and XCMP to communicate with the sibling chains.
XcmpQueue, XcmpQueue,
); )>;
#[cfg(feature = "runtime-benchmarks")] #[cfg(feature = "runtime-benchmarks")]
parameter_types! { parameter_types! {
@@ -33,8 +33,8 @@ use xcm_builder::{
DenyReserveTransferToRelayChain, DenyThenTry, EnsureXcmOrigin, FixedWeightBounds, IsConcrete, DenyReserveTransferToRelayChain, DenyThenTry, EnsureXcmOrigin, FixedWeightBounds, IsConcrete,
OriginToPluralityVoice, ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, OriginToPluralityVoice, ParentAsSuperuser, ParentIsPreset, RelayChainAsNative,
SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative,
SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, UsingComponents, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId,
WithComputedOrigin, UsingComponents, WithComputedOrigin, WithUniqueTopic,
}; };
use xcm_executor::{traits::WithOriginFilter, XcmExecutor}; use xcm_executor::{traits::WithOriginFilter, XcmExecutor};
@@ -202,7 +202,8 @@ impl Contains<RuntimeCall> for SafeCallFilter {
} }
} }
pub type Barrier = DenyThenTry< pub type Barrier = TrailingSetTopicAsId<
DenyThenTry<
DenyReserveTransferToRelayChain, DenyReserveTransferToRelayChain,
( (
// Allow local users to buy weight credit. // Allow local users to buy weight credit.
@@ -223,6 +224,7 @@ pub type Barrier = DenyThenTry<
ConstU32<8>, ConstU32<8>,
>, >,
), ),
>,
>; >;
pub struct XcmConfig; pub struct XcmConfig;
@@ -263,12 +265,12 @@ pub type LocalOriginToLocation = SignedToAccountId32<RuntimeOrigin, AccountId, R
/// The means for routing XCM messages which are not for local execution into the right message /// The means for routing XCM messages which are not for local execution into the right message
/// queues. /// queues.
pub type XcmRouter = ( pub type XcmRouter = WithUniqueTopic<(
// Two routers - use UMP to communicate with the relay chain: // Two routers - use UMP to communicate with the relay chain:
cumulus_primitives_utility::ParentAsUmp<ParachainSystem, PolkadotXcm, ()>, cumulus_primitives_utility::ParentAsUmp<ParachainSystem, PolkadotXcm, ()>,
// ..and XCMP to communicate with the sibling chains. // ..and XCMP to communicate with the sibling chains.
XcmpQueue, XcmpQueue,
); )>;
#[cfg(feature = "runtime-benchmarks")] #[cfg(feature = "runtime-benchmarks")]
parameter_types! { parameter_types! {
@@ -70,7 +70,7 @@ use parachains_common::{
}; };
use xcm_builder::{ use xcm_builder::{
AllowKnownQueryResponses, AllowSubscriptionsFrom, AsPrefixedGeneralIndex, ConvertedConcreteId, AllowKnownQueryResponses, AllowSubscriptionsFrom, AsPrefixedGeneralIndex, ConvertedConcreteId,
FungiblesAdapter, LocalMint, FungiblesAdapter, LocalMint, TrailingSetTopicAsId, WithUniqueTopic,
}; };
use xcm_executor::traits::JustTry; use xcm_executor::traits::JustTry;
@@ -383,7 +383,7 @@ match_types! {
}; };
} }
pub type Barrier = ( pub type Barrier = TrailingSetTopicAsId<(
TakeWeightCredit, TakeWeightCredit,
AllowTopLevelPaidExecutionFrom<Everything>, AllowTopLevelPaidExecutionFrom<Everything>,
// Parent & its unit plurality gets free execution. // Parent & its unit plurality gets free execution.
@@ -394,7 +394,7 @@ pub type Barrier = (
AllowKnownQueryResponses<PolkadotXcm>, AllowKnownQueryResponses<PolkadotXcm>,
// Subscriptions for version tracking are OK. // Subscriptions for version tracking are OK.
AllowSubscriptionsFrom<Everything>, AllowSubscriptionsFrom<Everything>,
); )>;
parameter_types! { parameter_types! {
pub MaxAssetsIntoHolding: u32 = 64; pub MaxAssetsIntoHolding: u32 = 64;
@@ -441,12 +441,12 @@ pub type LocalOriginToLocation = SignedToAccountId32<RuntimeOrigin, AccountId, R
/// The means for routing XCM messages which are not for local execution into the right message /// The means for routing XCM messages which are not for local execution into the right message
/// queues. /// queues.
pub type XcmRouter = ( pub type XcmRouter = WithUniqueTopic<(
// Two routers - use UMP to communicate with the relay chain: // Two routers - use UMP to communicate with the relay chain:
cumulus_primitives_utility::ParentAsUmp<ParachainSystem, (), ()>, cumulus_primitives_utility::ParentAsUmp<ParachainSystem, (), ()>,
// ..and XCMP to communicate with the sibling chains. // ..and XCMP to communicate with the sibling chains.
XcmpQueue, XcmpQueue,
); )>;
#[cfg(feature = "runtime-benchmarks")] #[cfg(feature = "runtime-benchmarks")]
parameter_types! { parameter_types! {