Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
polkadot-sdk
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
parity
Mirrored projects
polkadot-sdk
Commits
6766b810
Commit
6766b810
authored
3 years ago
by
Alexander Theißen
Committed by
GitHub
3 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Move Canvas xcm config to own module (#994)
parent
5bc7eba4
Branches
Branches containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
cumulus/polkadot-parachains/canvas-kusama/src/lib.rs
+8
-190
8 additions, 190 deletions
cumulus/polkadot-parachains/canvas-kusama/src/lib.rs
cumulus/polkadot-parachains/canvas-kusama/src/xcm_config.rs
+206
-0
206 additions, 0 deletions
cumulus/polkadot-parachains/canvas-kusama/src/xcm_config.rs
with
214 additions
and
190 deletions
cumulus/polkadot-parachains/canvas-kusama/src/lib.rs
+
8
−
190
View file @
6766b810
...
...
@@ -22,6 +22,7 @@
include!
(
concat!
(
env!
(
"OUT_DIR"
),
"/wasm_binary.rs"
));
pub
mod
constants
;
mod
xcm_config
;
use
sp_api
::
impl_runtime_apis
;
use
sp_core
::{
crypto
::
KeyTypeId
,
OpaqueMetadata
};
...
...
@@ -39,43 +40,29 @@ use sp_version::RuntimeVersion;
use
constants
::{
currency
::
*
,
fee
::
WeightToFee
};
use
frame_support
::{
construct_runtime
,
match_type
,
parameter_types
,
traits
::{
EnsureOneOf
,
Everything
,
Nothing
},
construct_runtime
,
parameter_types
,
traits
::{
Everything
,
Nothing
},
weights
::{
constants
::{
BlockExecutionWeight
,
ExtrinsicBaseWeight
},
DispatchClass
,
IdentityFee
,
Weight
,
DispatchClass
,
Weight
,
},
PalletId
,
};
use
frame_system
::{
limits
::{
BlockLength
,
BlockWeights
},
EnsureRoot
,
};
use
frame_system
::
limits
::{
BlockLength
,
BlockWeights
};
pub
use
parachains_common
as
common
;
use
parachains_common
::{
impls
::
DealWithFees
,
opaque
,
AccountId
,
BlockNumber
,
Hash
,
Header
,
Index
,
Signature
,
AVERAGE_ON_INITIALIZE_RATIO
,
HOURS
,
MAXIMUM_BLOCK_WEIGHT
,
NORMAL_DISPATCH_RATIO
,
SLOT_DURATION
,
};
pub
use
parachains_common
::{
AuraId
,
Balance
};
use
xcm_config
::
CollatorSelectionUpdateOrigin
;
#[cfg(any(feature
=
"std"
,
test))]
pub
use
sp_runtime
::
BuildStorage
;
// Polkadot imports
use
pallet_contracts
::
weights
::
WeightInfo
;
use
pallet_xcm
::{
EnsureXcm
,
IsMajorityOfBody
,
XcmPassthrough
};
use
polkadot_parachain
::
primitives
::
Sibling
;
use
polkadot_runtime_common
::{
BlockHashCount
,
RocksDbWeight
,
SlowAdjustingFeeUpdate
};
use
xcm
::
latest
::
prelude
::
*
;
use
xcm_builder
::{
AccountId32Aliases
,
AllowKnownQueryResponses
,
AllowSubscriptionsFrom
,
AllowTopLevelPaidExecutionFrom
,
AllowUnpaidExecutionFrom
,
CurrencyAdapter
,
EnsureXcmOrigin
,
FixedWeightBounds
,
IsConcrete
,
LocationInverter
,
NativeAsset
,
ParentIsPreset
,
RelayChainAsNative
,
SiblingParachainAsNative
,
SiblingParachainConvertsVia
,
SignedAccountId32AsNative
,
SignedToAccountId32
,
SovereignSignedViaLocation
,
TakeWeightCredit
,
UsingComponents
,
};
use
xcm_executor
::{
Config
as
XcmExecutorConfig
,
XcmExecutor
};
/// The address format for describing accounts.
pub
type
Address
=
sp_runtime
::
MultiAddress
<
AccountId
,
()
>
;
...
...
@@ -170,7 +157,7 @@ parameter_types! {
// Configure FRAME pallets to include in runtime.
impl
frame_system
::
Config
for
Runtime
{
type
BaseCallFilter
=
frame_support
::
traits
::
Everything
;
type
BaseCallFilter
=
Everything
;
type
BlockWeights
=
RuntimeBlockWeights
;
type
BlockLength
=
RuntimeBlockLength
;
type
AccountId
=
AccountId
;
...
...
@@ -322,7 +309,7 @@ impl pallet_contracts::Config for Runtime {
/// and make sure they are stable. Dispatchables exposed to contracts are not allowed to
/// change because that would break already deployed contracts. The `Call` structure itself
/// is not allowed to change the indices of existing pallets, too.
type
CallFilter
=
frame_support
::
traits
::
Nothing
;
type
CallFilter
=
Nothing
;
type
DepositPerItem
=
DepositPerItem
;
type
DepositPerByte
=
DepositPerByte
;
type
WeightPrice
=
pallet_transaction_payment
::
Pallet
<
Self
>
;
...
...
@@ -341,170 +328,6 @@ impl parachain_info::Config for Runtime {}
impl
cumulus_pallet_aura_ext
::
Config
for
Runtime
{}
parameter_types!
{
pub
const
RelayLocation
:
MultiLocation
=
MultiLocation
::
parent
();
pub
const
RelayNetwork
:
NetworkId
=
NetworkId
::
Any
;
pub
RelayChainOrigin
:
Origin
=
cumulus_pallet_xcm
::
Origin
::
Relay
.into
();
pub
Ancestry
:
MultiLocation
=
Parachain
(
ParachainInfo
::
parachain_id
()
.into
())
.into
();
}
/// Type for specifying how a `MultiLocation` can be converted into an `AccountId`. This is used
/// when determining ownership of accounts for asset transacting and when attempting to use XCM
/// `Transact` in order to determine the dispatch Origin.
pub
type
LocationToAccountId
=
(
// The parent (Relay-chain) origin converts to the parent `AccountId`.
ParentIsPreset
<
AccountId
>
,
// Sibling parachain origins convert to AccountId via the `ParaId::into`.
SiblingParachainConvertsVia
<
Sibling
,
AccountId
>
,
// Straight up local `AccountId32` origins just alias directly to `AccountId`.
AccountId32Aliases
<
RelayNetwork
,
AccountId
>
,
);
/// Means for transacting assets on this chain.
pub
type
LocalAssetTransactor
=
CurrencyAdapter
<
// Use this currency:
Balances
,
// Use this currency when it is a fungible asset matching the given location or name:
IsConcrete
<
RelayLocation
>
,
// Do a simple punn to convert an AccountId32 MultiLocation into a native chain account ID:
LocationToAccountId
,
// Our chain's account ID type (we can't get away without mentioning it explicitly):
AccountId
,
// We don't track any teleports.
(),
>
;
/// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance,
/// ready for dispatching a transaction with Xcm's `Transact`. There is an `OriginKind` which can
/// biases the kind of local `Origin` it will become.
pub
type
XcmOriginToTransactDispatchOrigin
=
(
// Sovereign account converter; this attempts to derive an `AccountId` from the origin location
// using `LocationToAccountId` and then turn that into the usual `Signed` origin. Useful for
// foreign chains who want to have a local sovereign account on this chain which they control.
SovereignSignedViaLocation
<
LocationToAccountId
,
Origin
>
,
// Native converter for Relay-chain (Parent) location; will converts to a `Relay` origin when
// recognized.
RelayChainAsNative
<
RelayChainOrigin
,
Origin
>
,
// Native converter for sibling Parachains; will convert to a `SiblingPara` origin when
// recognized.
SiblingParachainAsNative
<
cumulus_pallet_xcm
::
Origin
,
Origin
>
,
// Native signed account converter; this just converts an `AccountId32` origin into a normal
// `Origin::Signed` origin of the same 32-byte value.
SignedAccountId32AsNative
<
RelayNetwork
,
Origin
>
,
// Xcm origins can be represented natively under the Xcm pallet's Xcm origin.
XcmPassthrough
<
Origin
>
,
);
parameter_types!
{
// One XCM operation is 1_000_000_000 weight - almost certainly a conservative estimate.
pub
UnitWeightCost
:
Weight
=
1_000_000_000
;
pub
const
MaxInstructions
:
u32
=
100
;
}
match_type!
{
pub
type
ParentOrParentsExecutivePlurality
:
impl
Contains
<
MultiLocation
>
=
{
MultiLocation
{
parents
:
1
,
interior
:
Here
}
|
MultiLocation
{
parents
:
1
,
interior
:
X1
(
Plurality
{
id
:
BodyId
::
Executive
,
..
})
}
};
}
match_type!
{
pub
type
ParentOrSiblings
:
impl
Contains
<
MultiLocation
>
=
{
MultiLocation
{
parents
:
1
,
interior
:
Here
}
|
MultiLocation
{
parents
:
1
,
interior
:
X1
(
_
)
}
};
}
pub
type
Barrier
=
(
TakeWeightCredit
,
AllowTopLevelPaidExecutionFrom
<
Everything
>
,
// Parent and its exec plurality get free execution
AllowUnpaidExecutionFrom
<
ParentOrParentsExecutivePlurality
>
,
// Expected responses are OK.
AllowKnownQueryResponses
<
PolkadotXcm
>
,
// Subscriptions for version tracking are OK.
AllowSubscriptionsFrom
<
ParentOrSiblings
>
,
);
pub
struct
XcmConfig
;
impl
XcmExecutorConfig
for
XcmConfig
{
type
Call
=
Call
;
type
XcmSender
=
XcmRouter
;
// How to withdraw and deposit an asset.
type
AssetTransactor
=
LocalAssetTransactor
;
type
OriginConverter
=
XcmOriginToTransactDispatchOrigin
;
type
IsReserve
=
NativeAsset
;
type
IsTeleporter
=
NativeAsset
;
// Should be enough to allow teleportation of ROC
type
LocationInverter
=
LocationInverter
<
Ancestry
>
;
type
Barrier
=
Barrier
;
type
Weigher
=
FixedWeightBounds
<
UnitWeightCost
,
Call
,
MaxInstructions
>
;
type
Trader
=
UsingComponents
<
IdentityFee
<
Balance
>
,
RelayLocation
,
AccountId
,
Balances
,
()
>
;
type
ResponseHandler
=
PolkadotXcm
;
type
AssetTrap
=
PolkadotXcm
;
type
AssetClaims
=
PolkadotXcm
;
type
SubscriptionService
=
PolkadotXcm
;
}
parameter_types!
{
pub
const
MaxDownwardMessageWeight
:
Weight
=
MAXIMUM_BLOCK_WEIGHT
/
10
;
}
/// Converts a local signed origin into an XCM multilocation.
/// Forms the basis for local origins sending/executing XCMs.
pub
type
LocalOriginToLocation
=
SignedToAccountId32
<
Origin
,
AccountId
,
RelayNetwork
>
;
/// The means for routing XCM messages which are not for local execution into the right message
/// queues.
pub
type
XcmRouter
=
(
// Two routers - use UMP to communicate with the relay chain:
cumulus_primitives_utility
::
ParentAsUmp
<
ParachainSystem
,
PolkadotXcm
>
,
// ..and XCMP to communicate with the sibling chains.
XcmpQueue
,
);
impl
pallet_xcm
::
Config
for
Runtime
{
type
Event
=
Event
;
// We want to disallow users sending (arbitrary) XCMs from this chain.
type
SendXcmOrigin
=
EnsureXcmOrigin
<
Origin
,
()
>
;
type
XcmRouter
=
XcmRouter
;
// We support local origins dispatching XCM executions in principle...
type
ExecuteXcmOrigin
=
EnsureXcmOrigin
<
Origin
,
LocalOriginToLocation
>
;
// ... but disallow generic XCM execution. As a result only teleports and reserve transfers are allowed.
type
XcmExecuteFilter
=
Nothing
;
type
XcmExecutor
=
XcmExecutor
<
XcmConfig
>
;
type
XcmTeleportFilter
=
Everything
;
type
XcmReserveTransferFilter
=
Everything
;
type
Weigher
=
FixedWeightBounds
<
UnitWeightCost
,
Call
,
MaxInstructions
>
;
type
LocationInverter
=
LocationInverter
<
Ancestry
>
;
type
Origin
=
Origin
;
type
Call
=
Call
;
const
VERSION_DISCOVERY_QUEUE_SIZE
:
u32
=
100
;
type
AdvertisedXcmVersion
=
pallet_xcm
::
CurrentXcmVersion
;
}
impl
cumulus_pallet_xcm
::
Config
for
Runtime
{
type
Event
=
Event
;
type
XcmExecutor
=
XcmExecutor
<
XcmConfig
>
;
}
impl
cumulus_pallet_xcmp_queue
::
Config
for
Runtime
{
type
Event
=
Event
;
type
XcmExecutor
=
XcmExecutor
<
XcmConfig
>
;
type
ChannelInfo
=
ParachainSystem
;
type
VersionWrapper
=
PolkadotXcm
;
type
ExecuteOverweightOrigin
=
EnsureRoot
<
AccountId
>
;
type
ControllerOrigin
=
EnsureOneOf
<
EnsureRoot
<
AccountId
>
,
EnsureXcm
<
IsMajorityOfBody
<
RelayLocation
,
ExecutiveBody
>>
,
>
;
type
ControllerOriginConverter
=
XcmOriginToTransactDispatchOrigin
;
}
impl
cumulus_pallet_dmp_queue
::
Config
for
Runtime
{
type
Event
=
Event
;
type
XcmExecutor
=
XcmExecutor
<
XcmConfig
>
;
type
ExecuteOverweightOrigin
=
EnsureRoot
<
AccountId
>
;
}
parameter_types!
{
pub
const
Period
:
u32
=
6
*
HOURS
;
pub
const
Offset
:
u32
=
0
;
...
...
@@ -537,13 +360,8 @@ parameter_types! {
pub
const
MinCandidates
:
u32
=
5
;
pub
const
SessionLength
:
BlockNumber
=
6
*
HOURS
;
pub
const
MaxInvulnerables
:
u32
=
100
;
pub
const
ExecutiveBody
:
BodyId
=
BodyId
::
Executive
;
}
/// We allow root and the Relay Chain council to execute privileged collator selection operations.
pub
type
CollatorSelectionUpdateOrigin
=
EnsureOneOf
<
EnsureRoot
<
AccountId
>
,
EnsureXcm
<
IsMajorityOfBody
<
RelayLocation
,
ExecutiveBody
>>>
;
impl
pallet_collator_selection
::
Config
for
Runtime
{
type
Event
=
Event
;
type
Currency
=
Balances
;
...
...
This diff is collapsed.
Click to expand it.
cumulus/polkadot-parachains/canvas-kusama/src/xcm_config.rs
0 → 100644
+
206
−
0
View file @
6766b810
// Copyright (C) 2022 Parity Technologies (UK) Ltd.
// SPDX-License-Identifier: Apache-2.0
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
use
super
::{
AccountId
,
Balance
,
Balances
,
Call
,
Event
,
Origin
,
ParachainInfo
,
ParachainSystem
,
PolkadotXcm
,
Runtime
,
XcmpQueue
,
};
use
frame_support
::{
match_type
,
parameter_types
,
traits
::{
EnsureOneOf
,
Everything
,
Nothing
},
weights
::{
IdentityFee
,
Weight
},
};
use
frame_system
::
EnsureRoot
;
use
pallet_xcm
::{
EnsureXcm
,
IsMajorityOfBody
,
XcmPassthrough
};
use
polkadot_parachain
::
primitives
::
Sibling
;
use
xcm
::
latest
::
prelude
::
*
;
use
xcm_builder
::{
AccountId32Aliases
,
AllowKnownQueryResponses
,
AllowSubscriptionsFrom
,
AllowTopLevelPaidExecutionFrom
,
AllowUnpaidExecutionFrom
,
CurrencyAdapter
,
EnsureXcmOrigin
,
FixedWeightBounds
,
IsConcrete
,
LocationInverter
,
NativeAsset
,
ParentAsSuperuser
,
ParentIsPreset
,
RelayChainAsNative
,
SiblingParachainAsNative
,
SiblingParachainConvertsVia
,
SignedAccountId32AsNative
,
SignedToAccountId32
,
SovereignSignedViaLocation
,
TakeWeightCredit
,
UsingComponents
,
};
use
xcm_executor
::
XcmExecutor
;
parameter_types!
{
pub
const
RelayLocation
:
MultiLocation
=
MultiLocation
::
parent
();
pub
const
RelayNetwork
:
NetworkId
=
NetworkId
::
Any
;
pub
RelayChainOrigin
:
Origin
=
cumulus_pallet_xcm
::
Origin
::
Relay
.into
();
pub
Ancestry
:
MultiLocation
=
Parachain
(
ParachainInfo
::
parachain_id
()
.into
())
.into
();
pub
const
Local
:
MultiLocation
=
Here
.into
();
pub
CheckingAccount
:
AccountId
=
PolkadotXcm
::
check_account
();
pub
const
ExecutiveBody
:
BodyId
=
BodyId
::
Executive
;
}
/// We allow root and the Relay Chain council to execute privileged collator selection operations.
pub
type
CollatorSelectionUpdateOrigin
=
EnsureOneOf
<
EnsureRoot
<
AccountId
>
,
EnsureXcm
<
IsMajorityOfBody
<
RelayLocation
,
ExecutiveBody
>>>
;
/// Type for specifying how a `MultiLocation` can be converted into an `AccountId`. This is used
/// when determining ownership of accounts for asset transacting and when attempting to use XCM
/// `Transact` in order to determine the dispatch Origin.
pub
type
LocationToAccountId
=
(
// The parent (Relay-chain) origin converts to the parent `AccountId`.
ParentIsPreset
<
AccountId
>
,
// Sibling parachain origins convert to AccountId via the `ParaId::into`.
SiblingParachainConvertsVia
<
Sibling
,
AccountId
>
,
// Straight up local `AccountId32` origins just alias directly to `AccountId`.
AccountId32Aliases
<
RelayNetwork
,
AccountId
>
,
);
/// Means for transacting the native currency on this chain.
pub
type
CurrencyTransactor
=
CurrencyAdapter
<
// Use this currency:
Balances
,
// Use this currency when it is a fungible asset matching the given location or name:
IsConcrete
<
RelayLocation
>
,
// Convert an XCM MultiLocation into a local account id:
LocationToAccountId
,
// Our chain's account ID type (we can't get away without mentioning it explicitly):
AccountId
,
// We don't track any teleports of `Balances`.
(),
>
;
/// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance,
/// ready for dispatching a transaction with Xcm's `Transact`. There is an `OriginKind` which can
/// biases the kind of local `Origin` it will become.
pub
type
XcmOriginToTransactDispatchOrigin
=
(
// Sovereign account converter; this attempts to derive an `AccountId` from the origin location
// using `LocationToAccountId` and then turn that into the usual `Signed` origin. Useful for
// foreign chains who want to have a local sovereign account on this chain which they control.
SovereignSignedViaLocation
<
LocationToAccountId
,
Origin
>
,
// Native converter for Relay-chain (Parent) location; will convert to a `Relay` origin when
// recognised.
RelayChainAsNative
<
RelayChainOrigin
,
Origin
>
,
// Native converter for sibling Parachains; will convert to a `SiblingPara` origin when
// recognised.
SiblingParachainAsNative
<
cumulus_pallet_xcm
::
Origin
,
Origin
>
,
// Superuser converter for the Relay-chain (Parent) location. This will allow it to issue a
// transaction from the Root origin.
ParentAsSuperuser
<
Origin
>
,
// Native signed account converter; this just converts an `AccountId32` origin into a normal
// `Origin::Signed` origin of the same 32-byte value.
SignedAccountId32AsNative
<
RelayNetwork
,
Origin
>
,
// Xcm origins can be represented natively under the Xcm pallet's Xcm origin.
XcmPassthrough
<
Origin
>
,
);
parameter_types!
{
// One XCM operation is 1_000_000_000 weight - almost certainly a conservative estimate.
pub
UnitWeightCost
:
Weight
=
1_000_000_000
;
pub
const
MaxInstructions
:
u32
=
100
;
}
match_type!
{
pub
type
ParentOrParentsExecutivePlurality
:
impl
Contains
<
MultiLocation
>
=
{
MultiLocation
{
parents
:
1
,
interior
:
Here
}
|
MultiLocation
{
parents
:
1
,
interior
:
X1
(
Plurality
{
id
:
BodyId
::
Executive
,
..
})
}
};
}
match_type!
{
pub
type
ParentOrSiblings
:
impl
Contains
<
MultiLocation
>
=
{
MultiLocation
{
parents
:
1
,
interior
:
Here
}
|
MultiLocation
{
parents
:
1
,
interior
:
X1
(
_
)
}
};
}
pub
type
Barrier
=
(
TakeWeightCredit
,
AllowTopLevelPaidExecutionFrom
<
Everything
>
,
// Parent and its exec plurality get free execution
AllowUnpaidExecutionFrom
<
ParentOrParentsExecutivePlurality
>
,
// Expected responses are OK.
AllowKnownQueryResponses
<
PolkadotXcm
>
,
// Subscriptions for version tracking are OK.
AllowSubscriptionsFrom
<
ParentOrSiblings
>
,
);
pub
struct
XcmConfig
;
impl
xcm_executor
::
Config
for
XcmConfig
{
type
Call
=
Call
;
type
XcmSender
=
XcmRouter
;
type
AssetTransactor
=
CurrencyTransactor
;
type
OriginConverter
=
XcmOriginToTransactDispatchOrigin
;
type
IsReserve
=
NativeAsset
;
type
IsTeleporter
=
NativeAsset
;
type
LocationInverter
=
LocationInverter
<
Ancestry
>
;
type
Barrier
=
Barrier
;
type
Weigher
=
FixedWeightBounds
<
UnitWeightCost
,
Call
,
MaxInstructions
>
;
type
Trader
=
UsingComponents
<
IdentityFee
<
Balance
>
,
RelayLocation
,
AccountId
,
Balances
,
()
>
;
type
ResponseHandler
=
PolkadotXcm
;
type
AssetTrap
=
PolkadotXcm
;
type
AssetClaims
=
PolkadotXcm
;
type
SubscriptionService
=
PolkadotXcm
;
}
/// Converts a local signed origin into an XCM multilocation.
/// Forms the basis for local origins sending/executing XCMs.
pub
type
LocalOriginToLocation
=
SignedToAccountId32
<
Origin
,
AccountId
,
RelayNetwork
>
;
/// The means for routing XCM messages which are not for local execution into the right message
/// queues.
pub
type
XcmRouter
=
(
// Two routers - use UMP to communicate with the relay chain:
cumulus_primitives_utility
::
ParentAsUmp
<
ParachainSystem
,
PolkadotXcm
>
,
// ..and XCMP to communicate with the sibling chains.
XcmpQueue
,
);
impl
pallet_xcm
::
Config
for
Runtime
{
type
Event
=
Event
;
// We want to disallow users sending (arbitrary) XCMs from this chain.
type
SendXcmOrigin
=
EnsureXcmOrigin
<
Origin
,
()
>
;
type
XcmRouter
=
XcmRouter
;
// We support local origins dispatching XCM executions in principle...
type
ExecuteXcmOrigin
=
EnsureXcmOrigin
<
Origin
,
LocalOriginToLocation
>
;
// ... but disallow generic XCM execution. As a result only teleports and reserve transfers are allowed.
type
XcmExecuteFilter
=
Nothing
;
type
XcmExecutor
=
XcmExecutor
<
XcmConfig
>
;
type
XcmTeleportFilter
=
Everything
;
type
XcmReserveTransferFilter
=
Everything
;
type
Weigher
=
FixedWeightBounds
<
UnitWeightCost
,
Call
,
MaxInstructions
>
;
type
LocationInverter
=
LocationInverter
<
Ancestry
>
;
type
Origin
=
Origin
;
type
Call
=
Call
;
const
VERSION_DISCOVERY_QUEUE_SIZE
:
u32
=
100
;
type
AdvertisedXcmVersion
=
pallet_xcm
::
CurrentXcmVersion
;
}
impl
cumulus_pallet_xcm
::
Config
for
Runtime
{
type
Event
=
Event
;
type
XcmExecutor
=
XcmExecutor
<
XcmConfig
>
;
}
impl
cumulus_pallet_xcmp_queue
::
Config
for
Runtime
{
type
Event
=
Event
;
type
XcmExecutor
=
XcmExecutor
<
XcmConfig
>
;
type
ChannelInfo
=
ParachainSystem
;
type
VersionWrapper
=
PolkadotXcm
;
type
ExecuteOverweightOrigin
=
EnsureRoot
<
AccountId
>
;
type
ControllerOrigin
=
EnsureOneOf
<
EnsureRoot
<
AccountId
>
,
EnsureXcm
<
IsMajorityOfBody
<
RelayLocation
,
ExecutiveBody
>>
,
>
;
type
ControllerOriginConverter
=
XcmOriginToTransactDispatchOrigin
;
}
impl
cumulus_pallet_dmp_queue
::
Config
for
Runtime
{
type
Event
=
Event
;
type
XcmExecutor
=
XcmExecutor
<
XcmConfig
>
;
type
ExecuteOverweightOrigin
=
EnsureRoot
<
AccountId
>
;
}
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment