diff --git a/polkadot/runtime/common/src/paras_sudo_wrapper.rs b/polkadot/runtime/common/src/paras_sudo_wrapper.rs index c81de2d54a..8bef0afb2a 100644 --- a/polkadot/runtime/common/src/paras_sudo_wrapper.rs +++ b/polkadot/runtime/common/src/paras_sudo_wrapper.rs @@ -16,13 +16,8 @@ //! A simple wrapper allowing `Sudo` to call into `paras` routines. -use sp_std::prelude::*; -use frame_support::{ - decl_error, decl_module, ensure, - dispatch::DispatchResult, - weights::DispatchClass, -}; -use frame_system::ensure_root; +use frame_support::pallet_prelude::*; +use frame_system::pallet_prelude::*; use runtime_parachains::{ configuration, dmp, ump, hrmp, ParaLifecycle, @@ -30,15 +25,24 @@ use runtime_parachains::{ }; use primitives::v1::Id as ParaId; use parity_scale_codec::Encode; +pub use pallet::*; -/// The module's configuration trait. -pub trait Config: - configuration::Config + paras::Config + dmp::Config + ump::Config + hrmp::Config -{ -} +#[frame_support::pallet] +pub mod pallet { + use super::*; -decl_error! { - pub enum Error for Module { + #[pallet::pallet] + #[pallet::generate_store(pub(super) trait Store)] + pub struct Pallet(_); + + #[pallet::config] + #[pallet::disable_frame_system_supertrait_check] + pub trait Config: + configuration::Config + paras::Config + dmp::Config + ump::Config + hrmp::Config {} + + + #[pallet::error] + pub enum Error { /// The specified parachain or parathread is not registered. ParaDoesntExist, /// The specified parachain or parathread is already registered. @@ -57,50 +61,58 @@ decl_error! { /// Cannot downgrade parachain. CannotDowngrade, } -} -decl_module! { - /// A sudo wrapper to call into v1 paras module. - pub struct Module for enum Call where origin: ::Origin { - type Error = Error; + #[pallet::hooks] + impl Hooks> for Pallet {} + #[pallet::call] + impl Pallet { /// Schedule a para to be initialized at the start of the next session. - #[weight = (1_000, DispatchClass::Operational)] + #[pallet::weight((1_000, DispatchClass::Operational))] pub fn sudo_schedule_para_initialize( - origin, + origin: OriginFor, id: ParaId, genesis: ParaGenesisArgs, ) -> DispatchResult { ensure_root(origin)?; - runtime_parachains::schedule_para_initialize::(id, genesis).map_err(|_| Error::::ParaAlreadyExists)?; + runtime_parachains::schedule_para_initialize::(id, genesis) + .map_err(|_| Error::::ParaAlreadyExists)?; Ok(()) } /// Schedule a para to be cleaned up at the start of the next session. - #[weight = (1_000, DispatchClass::Operational)] - pub fn sudo_schedule_para_cleanup(origin, id: ParaId) -> DispatchResult { + #[pallet::weight((1_000, DispatchClass::Operational))] + pub fn sudo_schedule_para_cleanup(origin: OriginFor, id: ParaId) -> DispatchResult { ensure_root(origin)?; runtime_parachains::schedule_para_cleanup::(id).map_err(|_| Error::::CouldntCleanup)?; Ok(()) } /// Upgrade a parathread to a parachain - #[weight = (1_000, DispatchClass::Operational)] - pub fn sudo_schedule_parathread_upgrade(origin, id: ParaId) -> DispatchResult { + #[pallet::weight((1_000, DispatchClass::Operational))] + pub fn sudo_schedule_parathread_upgrade(origin: OriginFor, id: ParaId) -> DispatchResult { ensure_root(origin)?; // Para backend should think this is a parathread... - ensure!(paras::Module::::lifecycle(id) == Some(ParaLifecycle::Parathread), Error::::NotParathread); - runtime_parachains::schedule_parathread_upgrade::(id).map_err(|_| Error::::CannotUpgrade)?; + ensure!( + paras::Pallet::::lifecycle(id) == Some(ParaLifecycle::Parathread), + Error::::NotParathread, + ); + runtime_parachains::schedule_parathread_upgrade::(id) + .map_err(|_| Error::::CannotUpgrade)?; Ok(()) } /// Downgrade a parachain to a parathread - #[weight = (1_000, DispatchClass::Operational)] - pub fn sudo_schedule_parachain_downgrade(origin, id: ParaId) -> DispatchResult { + #[pallet::weight((1_000, DispatchClass::Operational))] + pub fn sudo_schedule_parachain_downgrade(origin: OriginFor, id: ParaId) -> DispatchResult { ensure_root(origin)?; // Para backend should think this is a parachain... - ensure!(paras::Module::::lifecycle(id) == Some(ParaLifecycle::Parachain), Error::::NotParachain); - runtime_parachains::schedule_parachain_downgrade::(id).map_err(|_| Error::::CannotDowngrade)?; + ensure!( + paras::Pallet::::lifecycle(id) == Some(ParaLifecycle::Parachain), + Error::::NotParachain, + ); + runtime_parachains::schedule_parachain_downgrade::(id) + .map_err(|_| Error::::CannotDowngrade)?; Ok(()) } @@ -108,12 +120,16 @@ decl_module! { /// /// The given parachain should exist and the payload should not exceed the preconfigured size /// `config.max_downward_message_size`. - #[weight = (1_000, DispatchClass::Operational)] - pub fn sudo_queue_downward_xcm(origin, id: ParaId, xcm: xcm::opaque::VersionedXcm) -> DispatchResult { + #[pallet::weight((1_000, DispatchClass::Operational))] + pub fn sudo_queue_downward_xcm( + origin: OriginFor, + id: ParaId, + xcm: xcm::opaque::VersionedXcm, + ) -> DispatchResult { ensure_root(origin)?; - ensure!(>::is_valid_para(id), Error::::ParaDoesntExist); - let config = >::config(); - >::queue_downward_message(&config, id, xcm.encode()) + ensure!(>::is_valid_para(id), Error::::ParaDoesntExist); + let config = >::config(); + >::queue_downward_message(&config, id, xcm.encode()) .map_err(|e| match e { dmp::QueueDownwardMessageError::ExceedsMaxMessageSize => Error::::ExceedsMaxMessageSize.into(), @@ -124,9 +140,9 @@ decl_module! { /// /// This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by /// `Hrmp::hrmp_accept_open_channel`. - #[weight = (1_000, DispatchClass::Operational)] + #[pallet::weight((1_000, DispatchClass::Operational))] pub fn sudo_establish_hrmp_channel( - origin, + origin: OriginFor, sender: ParaId, recipient: ParaId, max_capacity: u32, @@ -134,13 +150,13 @@ decl_module! { ) -> DispatchResult { ensure_root(origin)?; - >::init_open_channel( + >::init_open_channel( sender, recipient, max_capacity, max_message_size, )?; - >::accept_open_channel(recipient, sender)?; + >::accept_open_channel(recipient, sender)?; Ok(()) } }