diff --git a/runtime/common/src/xcm_sender.rs b/runtime/common/src/xcm_sender.rs index bf1572c45432..0f88bc39de15 100644 --- a/runtime/common/src/xcm_sender.rs +++ b/runtime/common/src/xcm_sender.rs @@ -30,7 +30,7 @@ impl SendXcm for ChildParachainRouter MultiLocation::X1(Junction::Parachain(id)) => { // Downward message passing. let config = >::config(); - >::queue_downward_message( + >::queue_downward_message( &config, id.into(), VersionedXcm::from(msg).encode(), diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index fe41607dda43..5936df11936d 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1487,7 +1487,7 @@ construct_runtime! { ParasScheduler: parachains_scheduler::{Pallet, Call, Storage} = 55, Paras: parachains_paras::{Pallet, Call, Storage, Event, Config} = 56, Initializer: parachains_initializer::{Pallet, Call, Storage} = 57, - ParasDmp: parachains_dmp::{Pallet, Call, Storage} = 58, + Dmp: parachains_dmp::{Pallet, Call, Storage} = 58, ParasUmp: parachains_ump::{Pallet, Call, Storage, Event} = 59, ParasHrmp: parachains_hrmp::{Pallet, Call, Storage, Event} = 60, ParasSessionInfo: parachains_session_info::{Pallet, Call, Storage} = 61, diff --git a/runtime/parachains/src/dmp.rs b/runtime/parachains/src/dmp.rs index 023996762dbe..6d48cb3c85ca 100644 --- a/runtime/parachains/src/dmp.rs +++ b/runtime/parachains/src/dmp.rs @@ -18,12 +18,14 @@ use crate::{ configuration::{self, HostConfiguration}, initializer, }; -use frame_support::{decl_module, decl_storage, StorageMap, weights::Weight, traits::Get}; +use frame_support::pallet_prelude::*; use sp_std::{fmt, prelude::*}; use sp_runtime::traits::{BlakeTwo256, Hash as HashT, SaturatedConversion}; use primitives::v1::{Id as ParaId, DownwardMessage, InboundDownwardMessage, Hash}; use xcm::v0::Error as XcmError; +pub use pallet::*; + /// An error sending a downward message. #[cfg_attr(test, derive(Debug))] pub enum QueueDownwardMessageError { @@ -71,30 +73,49 @@ impl fmt::Debug for ProcessedDownwardMessagesAcceptanceErr { } } -pub trait Config: frame_system::Config + configuration::Config {} - -decl_storage! { - trait Store for Module as Dmp { - /// The downward messages addressed for a certain para. - DownwardMessageQueues: map hasher(twox_64_concat) ParaId => Vec>; - /// A mapping that stores the downward message queue MQC head for each para. - /// - /// Each link in this chain has a form: - /// `(prev_head, B, H(M))`, where - /// - `prev_head`: is the previous head hash or zero if none. - /// - `B`: is the relay-chain block number in which a message was appended. - /// - `H(M)`: is the hash of the message being appended. - DownwardMessageQueueHeads: map hasher(twox_64_concat) ParaId => Hash; - } -} +#[frame_support::pallet] +pub mod pallet { + use super::*; -decl_module! { - /// The DMP module. - pub struct Module for enum Call where origin: ::Origin { } + #[pallet::pallet] + #[pallet::generate_store(pub(super) trait Store)] + pub struct Pallet(_); + + #[pallet::config] + pub trait Config: frame_system::Config + configuration::Config {} + + /// The downward messages addressed for a certain para. + #[pallet::storage] + pub(crate) type DownwardMessageQueues = StorageMap< + _, + Twox64Concat, + ParaId, + Vec>, + ValueQuery + >; + + /// A mapping that stores the downward message queue MQC head for each para. + /// + /// Each link in this chain has a form: + /// `(prev_head, B, H(M))`, where + /// - `prev_head`: is the previous head hash or zero if none. + /// - `B`: is the relay-chain block number in which a message was appended. + /// - `H(M)`: is the hash of the message being appended. + #[pallet::storage] + pub(crate) type DownwardMessageQueueHeads = StorageMap< + _, + Twox64Concat, + ParaId, + Hash, + ValueQuery, + >; + + #[pallet::call] + impl Pallet {} } /// Routines and getters related to downward message passing. -impl Module { +impl Pallet { /// Block initialization logic, called by initializer. pub(crate) fn initializer_initialize(_now: T::BlockNumber) -> Weight { 0 @@ -226,7 +247,6 @@ mod tests { use super::*; use hex_literal::hex; use primitives::v1::BlockNumber; - use frame_support::traits::{OnFinalize, OnInitialize}; use parity_scale_codec::Encode; use crate::mock::{Configuration, new_test_ext, System, Dmp, MockGenesisConfig, Paras}; diff --git a/runtime/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs index a8fbcdbfe28b..03cfd398054b 100644 --- a/runtime/parachains/src/hrmp.rs +++ b/runtime/parachains/src/hrmp.rs @@ -1051,7 +1051,7 @@ impl Module { .encode() }; if let Err(dmp::QueueDownwardMessageError::ExceedsMaxMessageSize) = - >::queue_downward_message(&config, recipient, notification_bytes) + >::queue_downward_message(&config, recipient, notification_bytes) { // this should never happen unless the max downward message size is configured to an // jokingly small number. @@ -1114,7 +1114,7 @@ impl Module { .encode() }; if let Err(dmp::QueueDownwardMessageError::ExceedsMaxMessageSize) = - >::queue_downward_message(&config, sender, notification_bytes) + >::queue_downward_message(&config, sender, notification_bytes) { // this should never happen unless the max downward message size is configured to an // jokingly small number. @@ -1164,7 +1164,7 @@ impl Module { channel_id.sender }; if let Err(dmp::QueueDownwardMessageError::ExceedsMaxMessageSize) = - >::queue_downward_message(&config, opposite_party, notification_bytes) + >::queue_downward_message(&config, opposite_party, notification_bytes) { // this should never happen unless the max downward message size is configured to an // jokingly small number. diff --git a/runtime/parachains/src/inclusion.rs b/runtime/parachains/src/inclusion.rs index e5beab3734d3..374f873bc0b9 100644 --- a/runtime/parachains/src/inclusion.rs +++ b/runtime/parachains/src/inclusion.rs @@ -684,7 +684,7 @@ impl Module { } // enact the messaging facet of the candidate. - weight += >::prune_dmq( + weight += >::prune_dmq( receipt.descriptor.para_id, commitments.processed_downward_messages, ); @@ -905,7 +905,7 @@ impl CandidateCheckContext { } // check if the candidate passes the messaging acceptance criteria - >::check_processed_downward_messages( + >::check_processed_downward_messages( para_id, processed_downward_messages, )?; diff --git a/runtime/parachains/src/initializer.rs b/runtime/parachains/src/initializer.rs index 870962e62ebe..281040040777 100644 --- a/runtime/parachains/src/initializer.rs +++ b/runtime/parachains/src/initializer.rs @@ -139,7 +139,7 @@ pub mod pallet { inclusion::Module::::initializer_initialize(now) + session_info::Module::::initializer_initialize(now) + T::DisputesHandler::initializer_initialize(now) + - dmp::Module::::initializer_initialize(now) + + dmp::Pallet::::initializer_initialize(now) + ump::Module::::initializer_initialize(now) + hrmp::Module::::initializer_initialize(now); @@ -152,7 +152,7 @@ pub mod pallet { // reverse initialization order. hrmp::Module::::initializer_finalize(); ump::Module::::initializer_finalize(); - dmp::Module::::initializer_finalize(); + dmp::Pallet::::initializer_finalize(); T::DisputesHandler::initializer_finalize(); session_info::Module::::initializer_finalize(); inclusion::Module::::initializer_finalize(); @@ -238,7 +238,7 @@ impl Pallet { inclusion::Module::::initializer_on_new_session(¬ification); session_info::Module::::initializer_on_new_session(¬ification); T::DisputesHandler::initializer_on_new_session(¬ification); - dmp::Module::::initializer_on_new_session(¬ification, &outgoing_paras); + dmp::Pallet::::initializer_on_new_session(¬ification, &outgoing_paras); ump::Module::::initializer_on_new_session(¬ification, &outgoing_paras); hrmp::Module::::initializer_on_new_session(¬ification, &outgoing_paras); } diff --git a/runtime/parachains/src/runtime_api_impl/v1.rs b/runtime/parachains/src/runtime_api_impl/v1.rs index 883a0a7f309e..6074800355ab 100644 --- a/runtime/parachains/src/runtime_api_impl/v1.rs +++ b/runtime/parachains/src/runtime_api_impl/v1.rs @@ -313,7 +313,7 @@ pub fn session_info(index: SessionIndex) -> Option( recipient: ParaId, ) -> Vec> { - >::dmq_contents(recipient) + >::dmq_contents(recipient) } /// Implementation for the `inbound_hrmp_channels_contents` function of the runtime API. diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 5570dbbac74a..cf9927fb43e4 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -545,6 +545,7 @@ construct_runtime! { SessionInfo: parachains_session_info::{Pallet, Call, Storage}, Hrmp: parachains_hrmp::{Pallet, Call, Storage, Event}, Ump: parachains_ump::{Pallet, Call, Storage, Event}, + Dmp: parachains_dmp::{Pallet, Call, Storage}, ParasDisputes: parachains_disputes::{Pallet, Storage, Event}, Sudo: pallet_sudo::{Pallet, Call, Storage, Config, Event}, diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 0ee78b5d19c4..59fca1de39e1 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -1078,7 +1078,7 @@ construct_runtime! { ParasScheduler: parachains_scheduler::{Pallet, Call, Storage} = 46, Paras: parachains_paras::{Pallet, Call, Storage, Event, Config} = 47, Initializer: parachains_initializer::{Pallet, Call, Storage} = 48, - ParasDmp: parachains_dmp::{Pallet, Call, Storage} = 49, + Dmp: parachains_dmp::{Pallet, Call, Storage} = 49, ParasUmp: parachains_ump::{Pallet, Call, Storage, Event} = 50, ParasHrmp: parachains_hrmp::{Pallet, Call, Storage, Event} = 51, ParasSessionInfo: parachains_session_info::{Pallet, Call, Storage} = 52,