#messages #threshold #channel #queue #pallet #factor #fee

no-std cumulus-pallet-xcmp-queue

Pallet to queue outbound and inbound XCMP messages

17 breaking releases

new 0.18.0 Jan 14, 2025
0.17.0 Sep 26, 2024
0.16.0 Jul 18, 2024
0.10.0 Mar 18, 2024
0.0.0 Nov 21, 2022

#648 in Magic Beans

Download history 1521/week @ 2024-09-26 1121/week @ 2024-10-03 1315/week @ 2024-10-10 2026/week @ 2024-10-17 1536/week @ 2024-10-24 1808/week @ 2024-10-31 11088/week @ 2024-11-07 26877/week @ 2024-11-14 26074/week @ 2024-11-21 25485/week @ 2024-11-28 27528/week @ 2024-12-05 26440/week @ 2024-12-12 12017/week @ 2024-12-19 7317/week @ 2024-12-26 22288/week @ 2025-01-02 20328/week @ 2025-01-09

69,608 downloads per month
Used in 38 crates (25 directly)

Apache-2.0 and GPL-3.0-only

125KB
2.5K SLoC

Release

Polkadot SDK Stable 2412


lib.rs:

A pallet which uses the XCMP transport layer to handle both incoming and outgoing XCM message sending and dispatch, queuing, signalling and backpressure. To do so, it implements:

  • XcmpMessageHandler
  • XcmpMessageSource

Also provides an implementation of SendXcm which can be placed in a router tuple for relaying XCM over XCMP if the destination is Parent/Parachain. It requires an implementation of XcmExecutor for dispatching incoming XCM messages.

To prevent out of memory errors on the OutboundXcmpMessages queue, an exponential fee factor (DeliveryFeeFactor) is set, much like the one used in DMP. The fee factor increases whenever the total size of messages in a particular channel passes a threshold. This threshold is defined as a percentage of the maximum total size the channel can have. More concretely, the threshold is max_total_size / THRESHOLD_FACTOR, where:

  • max_total_size is the maximum size, in bytes, of the channel, not number of messages. It is defined in the channel configuration.
  • THRESHOLD_FACTOR just declares which percentage of the max size is the actual threshold. If it's 2, then the threshold is half of the max size, if it's 4, it's a quarter, and so on.

Dependencies

~29–43MB
~745K SLoC