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 Instruction
s. 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
Xcm
andOrder
variants are now combined under a singleInstruction
enum.Order
is now obsolete and replaced entirely byInstruction
.Xcm
is now a simple wrapper around aVec<Instruction>
.- During conversion from
Order
toInstruction
, we do not handleBuyExecution
s that have nested XCMs, i.e. if theinstructions
field in theBuyExecution
enum struct variant is not empty, then the conversion will fail. To address this, rewrite the XCM usingInstruction
s in chronological order. - During conversion from
Xcm
toInstruction
, we do not handleRelayedFrom
messages at all.
XCM Pallet
- The
Weigher
configuration item must have sensible weights defined forBuyExecution
andDepositAsset
instructions. Failing that, dispatch calls toteleport_assets
andreserve_transfer_assets
will 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
MultiLocation
of the innerparents
value. - A unit struct which can be converted into a
MultiLocation
of the innerparents
value and the inner interior. - A
Vec
ofMultiAsset
s. 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
MultiLocation
ofparents
value 1. - A tuple struct which can be converted into a
MultiLocation
ofparents
value 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
Junctions
implementation uses a Rustenum
in order to make pattern matching easier. MultiAsset
collection, eitherMultiAssets
or 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.