Skip to content

XcmpQueue


Events


BadFormat

Bad XCM format used.

Attributes

Name Type Composition
message_hash XcmHash [u8; 32]

BadVersion

Bad XCM version used.

Attributes

Name Type Composition
message_hash XcmHash [u8; 32]

DeferredBucketDiscarded

The deferred bucket was discarded.

Attributes

Name Type Composition
sender ParaId u32
index DeferredIndex ('u32', 'u16')

DeferredXcmDiscarded

The deferred message was successfully discarded.

Attributes

Name Type Composition
sender ParaId u32
sent_at RelayBlockNumber u32
deferred_to RelayBlockNumber u32
index DeferredIndex ('u32', 'u16')
position u32 u32
message_hash Option<XcmHash> (None, '[u8; 32]')

Fail

Some XCM failed.

Attributes

Name Type Composition
message_hash XcmHash [u8; 32]
message_id XcmHash [u8; 32]
error XcmError {'Overflow': None, 'Unimplemented': None, 'UntrustedReserveLocation': None, 'UntrustedTeleportLocation': None, 'LocationFull': None, 'LocationNotInvertible': None, 'BadOrigin': None, 'InvalidLocation': None, 'AssetNotFound': None, 'FailedToTransactAsset': None, 'NotWithdrawable': None, 'LocationCannotHold': None, 'ExceedsMaxMessageSize': None, 'DestinationUnsupported': None, 'Transport': None, 'Unroutable': None, 'UnknownClaim': None, 'FailedToDecode': None, 'MaxWeightInvalid': None, 'NotHoldingFees': None, 'TooExpensive': None, 'Trap': 'u64', 'ExpectationFalse': None, 'PalletNotFound': None, 'NameMismatch': None, 'VersionIncompatible': None, 'HoldingWouldOverflow': None, 'ExportError': None, 'ReanchorFailed': None, 'NoDeal': None, 'FeesNotMet': None, 'LockError': None, 'NoPermission': None, 'Unanchored': None, 'NotDepositable': None, 'UnhandledXcmVersion': None, 'WeightLimitReached': {'ref_time': 'u64', 'proof_size': 'u64'}, 'Barrier': None, 'WeightNotComputable': None, 'ExceedsStackLimit': None}
weight Weight {'ref_time': 'u64', 'proof_size': 'u64'}

OverweightEnqueued

An XCM exceeded the individual message weight budget.

Attributes

Name Type Composition
sender ParaId u32
sent_at RelayBlockNumber u32
index OverweightIndex u64
required Weight {'ref_time': 'u64', 'proof_size': 'u64'}

OverweightServiced

An XCM from the overweight queue was executed with the given actual weight used.

Attributes

Name Type Composition
index OverweightIndex u64
used Weight {'ref_time': 'u64', 'proof_size': 'u64'}

Success

Some XCM was executed ok.

Attributes

Name Type Composition
message_hash XcmHash [u8; 32]
message_id XcmHash [u8; 32]
weight Weight {'ref_time': 'u64', 'proof_size': 'u64'}

XcmDeferred

Some XCM was deferred for later execution

Attributes

Name Type Composition
sender ParaId u32
sent_at RelayBlockNumber u32
deferred_to RelayBlockNumber u32
index DeferredIndex ('u32', 'u16')
position u32 u32
message_hash Option<XcmHash> (None, '[u8; 32]')

XcmDeferredQueueFull

The deferred queue is full with xcm messages

Attributes

Name Type Composition
sender ParaId u32
sent_at RelayBlockNumber u32
message_hash Option<XcmHash> (None, '[u8; 32]')

XcmpMessageSent

An HRMP message was sent to a sibling parachain.

Attributes

Name Type Composition
message_hash XcmHash [u8; 32]

Storage functions


CounterForOverweight

Counter for the related counted storage map

Python

result = substrate.query(
    'XcmpQueue', 'CounterForOverweight', []
)

Return value

'u32'

DeferAllBy

Whether or not and if so by how much to defer all incoming XCMs.

Python

result = substrate.query(
    'XcmpQueue', 'DeferAllBy', []
)

Return value

'u32'

DeferredIndices

Index of deferred message buckets to process.

Python

result = substrate.query(
    'XcmpQueue', 'DeferredIndices', ['u32']
)

Return value

'scale_info::647'

DeferredMessageBuckets

Storage for deferred messages, indexed by para id, block and counter.

Python

result = substrate.query(
    'XcmpQueue', 'DeferredMessageBuckets', ['u32', ('u32', 'u16')]
)

Return value

[
    (
        None,
        {
            'deferred_to': 'u32',
            'sender': 'u32',
            'sent_at': 'u32',
            'xcm': {
                None: None,
                'V2': ['scale_info::387'],
                'V3': ['scale_info::391'],
            },
        },
    ),
]

DeferredQueueSuspended

Whether or not the Deferred queue is suspended from executing XCMs or not.

Python

result = substrate.query(
    'XcmpQueue', 'DeferredQueueSuspended', []
)

Return value

'bool'

InboundXcmpMessages

Inbound aggregate XCMP messages. It can only be one per ParaId/block.

Python

result = substrate.query(
    'XcmpQueue', 'InboundXcmpMessages', ['u32', 'u32']
)

Return value

'Bytes'

InboundXcmpStatus

Status of the inbound XCMP channels.

Python

result = substrate.query(
    'XcmpQueue', 'InboundXcmpStatus', []
)

Return value

[
    {
        'message_metadata': [
            (
                'u32',
                (
                    'ConcatenatedVersionedXcm',
                    'ConcatenatedEncodedBlob',
                    'Signals',
                ),
            ),
        ],
        'sender': 'u32',
        'state': ('Ok', 'Suspended'),
    },
]

OutboundXcmpMessages

The messages outbound in a given XCMP channel.

Python

result = substrate.query(
    'XcmpQueue', 'OutboundXcmpMessages', ['u32', 'u16']
)

Return value

'Bytes'

OutboundXcmpStatus

The non-empty XCMP channels in order of becoming non-empty, and the index of the first and last outbound message. If the two indices are equal, then it indicates an empty queue and there must be a non-Ok OutboundStatus. We assume queues grow no greater than 65535 items. Queue indices for normal messages begin at one; zero is reserved in case of the need to send a high-priority signal message this block. The bool is true if there is a signal message waiting to be sent.

Python

result = substrate.query(
    'XcmpQueue', 'OutboundXcmpStatus', []
)

Return value

[
    {
        'first_index': 'u16',
        'last_index': 'u16',
        'recipient': 'u32',
        'signals_exist': 'bool',
        'state': ('Ok', 'Suspended'),
    },
]

Overweight

The messages that exceeded max individual message weight budget.

These message stay in this storage map until they are manually dispatched via service_overweight.

Python

result = substrate.query(
    'XcmpQueue', 'Overweight', ['u64']
)

Return value

('u32', 'u32', 'Bytes')

OverweightCount

The number of overweight messages ever recorded in Overweight. Also doubles as the next available free overweight index.

Python

result = substrate.query(
    'XcmpQueue', 'OverweightCount', []
)

Return value

'u64'

QueueConfig

The configuration which controls the dynamics of the outbound queue.

Python

result = substrate.query(
    'XcmpQueue', 'QueueConfig', []
)

Return value

{
    'drop_threshold': 'u32',
    'resume_threshold': 'u32',
    'suspend_threshold': 'u32',
    'threshold_weight': {'proof_size': 'u64', 'ref_time': 'u64'},
    'weight_restrict_decay': {'proof_size': 'u64', 'ref_time': 'u64'},
    'xcmp_max_individual_weight': {'proof_size': 'u64', 'ref_time': 'u64'},
}

QueueSuspended

Whether or not the XCMP queue is suspended from executing incoming XCMs or not.

Python

result = substrate.query(
    'XcmpQueue', 'QueueSuspended', []
)

Return value

'bool'

SignalMessages

Any signal messages waiting to be sent.

Python

result = substrate.query(
    'XcmpQueue', 'SignalMessages', ['u32']
)

Return value

'Bytes'

Errors


BadOverweightIndex

Bad overweight index.


BadXcm

Bad XCM data.


BadXcmOrigin

Bad XCM origin.


FailedToSend

Failed to send XCM message.


MessageNotFound

Indicated message is not present.


WeightOverLimit

Provided weight is possibly not enough to execute the message.