Module staging_xcm::v2
source · Expand description
XCM Version 2
Version 2 of the Cross-Consensus Message format data structures. The comprehensive list of changes can be found in this PR description.
Changes to be aware of
The biggest change here is the restructuring of XCM messages: instead of having Order and
Xcm types, the Xcm type now simply wraps a Vec containing Instructions. However, most
changes should still be automatically convertible via the try_from and from conversion
functions.
Junction
- No special attention necessary
MultiLocation
- No special attention necessary
MultiAsset
- No special attention necessary
XCM and Order
XcmandOrdervariants are now combined under a singleInstructionenum.Orderis now obsolete and replaced entirely byInstruction.Xcmis now a simple wrapper around aVec<Instruction>.- During conversion from
OrdertoInstruction, we do not handleBuyExecutions that have nested XCMs, i.e. if theinstructionsfield in theBuyExecutionenum struct variant is not empty, then the conversion will fail. To address this, rewrite the XCM usingInstructions in chronological order. - During conversion from
XcmtoInstruction, we do not handleRelayedFrommessages at all.
XCM Pallet
- The
Weigherconfiguration item must have sensible weights defined forBuyExecutionandDepositAssetinstructions. Failing that, dispatch calls toteleport_assetsandreserve_transfer_assetswill fail withUnweighableMessage.
Modules
- A prelude for importing all types typically used when interacting with XCM messages.
Structs
- A unit struct which can be converted into a
MultiLocationof the innerparentsvalue. - A unit struct which can be converted into a
MultiLocationof the innerparentsvalue and the inner interior. - A
VecofMultiAssets. There may be no duplicate fungible items in here and when decoding, they must be sorted. - A relative path between state-bearing consensus systems.
- A unit struct which can be converted into a
MultiLocationofparentsvalue 1. - A tuple struct which can be converted into a
MultiLocationofparentsvalue 1 with the inner interior.
Enums
- Classification of an asset being concrete or abstract.
- A general identifier for an instance of a non-fungible asset class.
- An identifier of a pluralistic body.
- A part of a pluralistic body.
- Classification of whether an asset is fungible or not, along with a mandatory amount or instance.
- Cross-Consensus Message: A message from one consensus system to another.
- A single item in a path to describe the relative location of a consensus system.
- Non-parent junctions that can be constructed, up to the length of 8. This specific
Junctionsimplementation uses a Rustenumin order to make pattern matching easier. MultiAssetcollection, eitherMultiAssetsor a single wildcard.- A global identifier of an account-bearing consensus system.
- Basically just the XCM (more general) version of
ParachainDispatchOrigin. - Outcome of an XCM execution.
- Response data to a query.
- Error result value when attempting to send an XCM message.
- An optional weight limit.
- Classification of whether an asset is fungible or not.
- A wildcard representing a set of assets.
Constants
- This module’s XCM version.
Traits
- Type of XCM message executor.
- Utility for sending an XCM message.
Type Definitions
- A relative location which is constrained to be an interior location of the context.
- An identifier for a query.
- Result value when attempting to send an XCM message.
- Local weight type; execution time in picoseconds.