DMP Pallet
A module responsible for Downward Message Processing (DMP). See Messaging Overview for more details.
Storage
Storage layout required for implementation of DMP.
Initialization
No initialization routine runs for this module.
Routines
Candidate Acceptance Function:
check_processed_downward_messages(P: ParaId, relay_parent_number: BlockNumber, processed_downward_messages: u32)
:- Checks that
processed_downward_messages
is at least 1 ifDownwardMessageQueues
forP
is not empty at the givenrelay_parent_number
. - Checks that
DownwardMessageQueues
forP
is at leastprocessed_downward_messages
long.
- Checks that
Candidate Enactment:
prune_dmq(P: ParaId, processed_downward_messages: u32)
:- Remove the first
processed_downward_messages
from theDownwardMessageQueues
ofP
.
- Remove the first
Utility routines.
queue_downward_message(P: ParaId, M: DownwardMessage)
: 1. Check if the size of M
exceeds the
config.max_downward_message_size
. If so, return an error. 1. Wrap M
into InboundDownwardMessage
using the
current block number for sent_at
. 1. Obtain a new MQC link for the resulting InboundDownwardMessage
and replace
DownwardMessageQueueHeads
for P
with the resulting hash. 1. Add the resulting InboundDownwardMessage
into
DownwardMessageQueues
for P
.
Session Change
- For each
P
inoutgoing_paras
(generated byParas::on_new_session
):- Remove all
DownwardMessageQueues
ofP
. - Remove
DownwardMessageQueueHeads
forP
.
- Remove all