Module 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

  • Xcm and Order variants are now combined under a single Instruction enum.
  • Order is now obsolete and replaced entirely by Instruction.
  • Xcm is now a simple wrapper around a Vec<Instruction>.
  • During conversion from Order to Instruction, we do not handle BuyExecutions that have nested XCMs, i.e. if the instructions field in the BuyExecution enum struct variant is not empty, then the conversion will fail. To address this, rewrite the XCM using Instructions in chronological order.
  • During conversion from Xcm to Instruction, we do not handle RelayedFrom messages at all.

XCM Pallet

  • The Weigher configuration item must have sensible weights defined for BuyExecution and DepositAsset instructions. Failing that, dispatch calls to teleport_assets and reserve_transfer_assets will fail with UnweighableMessage.

Re-exports

Modules

  • A prelude for importing all types typically used when interacting with XCM messages.

Structs

Enums

  • Cross-Consensus Message: A message from one consensus system to another.
  • Outcome of an XCM execution.
  • Response data to a query.
  • Error result value when attempting to send an XCM message.
  • An optional weight limit.

Constants

  • This module’s XCM version.

Traits

Type Definitions

  • An identifier for a query.
  • Result value when attempting to send an XCM message.
  • Local weight type; execution time in picoseconds.