mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 11:41:02 +00:00
Upward Message Passing implementation (#1885)
* UMP: Update the impl guide * UMP: Incorporate XCM related changes into the guide * UMP: Data structures and configuration * UMP: Initial plumbing * UMP: Data layout * UMP: Acceptance criteria & enactment * UMP: Fix dispatcher bug and add the test for it * UMP: Constrain the maximum size of an UMP message This commit addresses the UMP part of https://github.com/paritytech/polkadot/issues/1869 * Fix failing test due to misconfiguration * Make the type of RelayDispatchQueueSize be more apparent in the guide * Revert renaming `max_upward_queue_capacity` to `max_upward_queue_count` * convert spaces to tabs Co-authored-by: Bernhard Schuster <bernhard@ahoi.io> * Update runtime/parachains/src/router/ump.rs Co-authored-by: Bernhard Schuster <bernhard@ahoi.io> Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
This commit is contained in:
@@ -155,6 +155,8 @@ decl_error! {
|
||||
InternalError,
|
||||
/// The downward message queue is not processed correctly.
|
||||
IncorrectDownwardMessageHandling,
|
||||
/// At least one upward message sent does not pass the acceptance criteria.
|
||||
InvalidUpwardMessages,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -412,6 +414,7 @@ impl<T: Trait> Module<T> {
|
||||
&candidate.candidate.commitments.head_data,
|
||||
&candidate.candidate.commitments.new_validation_code,
|
||||
candidate.candidate.commitments.processed_downward_messages,
|
||||
&candidate.candidate.commitments.upward_messages,
|
||||
)?;
|
||||
|
||||
for (i, assignment) in scheduled[skip..].iter().enumerate() {
|
||||
@@ -544,6 +547,7 @@ impl<T: Trait> Module<T> {
|
||||
&validation_outputs.head_data,
|
||||
&validation_outputs.new_validation_code,
|
||||
validation_outputs.processed_downward_messages,
|
||||
&validation_outputs.upward_messages,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -570,6 +574,10 @@ impl<T: Trait> Module<T> {
|
||||
receipt.descriptor.para_id,
|
||||
commitments.processed_downward_messages,
|
||||
);
|
||||
weight += <router::Module<T>>::enact_upward_messages(
|
||||
receipt.descriptor.para_id,
|
||||
commitments.upward_messages,
|
||||
);
|
||||
|
||||
Self::deposit_event(
|
||||
Event::<T>::CandidateIncluded(plain, commitments.head_data.clone())
|
||||
@@ -693,6 +701,7 @@ impl<T: Trait> CandidateCheckContext<T> {
|
||||
head_data: &HeadData,
|
||||
new_validation_code: &Option<primitives::v1::ValidationCode>,
|
||||
processed_downward_messages: u32,
|
||||
upward_messages: &[primitives::v1::UpwardMessage],
|
||||
) -> Result<(), DispatchError> {
|
||||
ensure!(
|
||||
head_data.0.len() <= self.config.max_head_data_size as _,
|
||||
@@ -722,6 +731,14 @@ impl<T: Trait> CandidateCheckContext<T> {
|
||||
),
|
||||
Error::<T>::IncorrectDownwardMessageHandling,
|
||||
);
|
||||
ensure!(
|
||||
<router::Module<T>>::check_upward_messages(
|
||||
&self.config,
|
||||
para_id,
|
||||
upward_messages,
|
||||
),
|
||||
Error::<T>::InvalidUpwardMessages,
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user