diff --git a/Cargo.toml b/Cargo.toml index f2c3d9823b2..b6285103a60 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ members = [ "pallets/parachain-system", "pallets/parachain-system/proc-macro", "pallets/session-benchmarking", + "pallets/solo-to-para", "pallets/xcm", "pallets/xcmp-queue", "parachain-template/node", diff --git a/pallets/solo-to-para/src/lib.rs b/pallets/solo-to-para/src/lib.rs index b1e7c99d6a9..bf4f476712a 100644 --- a/pallets/solo-to-para/src/lib.rs +++ b/pallets/solo-to-para/src/lib.rs @@ -16,24 +16,12 @@ #![cfg_attr(not(feature = "std"), no_std)] -use codec::{Decode, Encode}; use cumulus_pallet_parachain_system as parachain_system; -use frame_support::{ - dispatch::{DispatchInfo, DispatchResult}, - pallet_prelude::*, -}; +use frame_support::pallet_prelude::*; use frame_system::pallet_prelude::*; pub use pallet::*; use polkadot_primitives::v2::PersistedValidationData; -use scale_info::TypeInfo; -use sp_runtime::{ - traits::{DispatchInfoOf, Dispatchable, SignedExtension}, - transaction_validity::{ - InvalidTransaction, TransactionLongevity, TransactionPriority, TransactionValidity, - TransactionValidityError, ValidTransaction, - }, -}; -use sp_std::{prelude::*, vec::Vec}; +use sp_std::vec::Vec; #[frame_support::pallet] pub mod pallet { @@ -110,76 +98,4 @@ pub mod pallet { crate::Pallet::::set_pending_custom_validation_head_data(); } } - - /// Ensure that signed transactions are only valid if they are signed by root. - #[derive(Encode, Decode, Clone, Eq, PartialEq, TypeInfo, Default)] - #[scale_info(skip_type_params(T))] - pub struct CheckSudo(sp_std::marker::PhantomData); - - impl CheckSudo { - pub fn new() -> Self { - Self(Default::default()) - } - } - - impl sp_std::fmt::Debug for CheckSudo { - #[cfg(feature = "std")] - fn fmt(&self, f: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result { - write!(f, "CheckSudo") - } - - #[cfg(not(feature = "std"))] - fn fmt(&self, _: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result { - Ok(()) - } - } - - impl SignedExtension for CheckSudo - where - ::RuntimeCall: Dispatchable, - { - type AccountId = T::AccountId; - type Call = ::RuntimeCall; - type AdditionalSigned = (); - type Pre = (); - const IDENTIFIER: &'static str = "CheckSudo"; - - fn additional_signed(&self) -> sp_std::result::Result<(), TransactionValidityError> { - Ok(()) - } - - fn pre_dispatch( - self, - who: &Self::AccountId, - call: &Self::Call, - info: &DispatchInfoOf, - len: usize, - ) -> Result { - Ok(self.validate(who, call, info, len).map(|_| ())?) - } - - fn validate( - &self, - who: &Self::AccountId, - _call: &Self::Call, - info: &DispatchInfoOf, - _len: usize, - ) -> TransactionValidity { - let root_account = match pallet_sudo::Pallet::::key() { - Some(account) => account, - None => return Err(InvalidTransaction::BadSigner.into()), - }; - - if *who == root_account { - Ok(ValidTransaction { - priority: info.weight.ref_time() as TransactionPriority, - longevity: TransactionLongevity::max_value(), - propagate: true, - ..Default::default() - }) - } else { - Err(InvalidTransaction::BadSigner.into()) - } - } - } } diff --git a/parachains/runtimes/starters/seedling/src/lib.rs b/parachains/runtimes/starters/seedling/src/lib.rs index 78581886f8d..ad2553520c2 100644 --- a/parachains/runtimes/starters/seedling/src/lib.rs +++ b/parachains/runtimes/starters/seedling/src/lib.rs @@ -217,7 +217,7 @@ pub type SignedExtra = ( frame_system::CheckGenesis, frame_system::CheckEra, frame_system::CheckNonce, - cumulus_pallet_solo_to_para::CheckSudo, + pallet_sudo::CheckOnlySudoAccount, ); /// Unchecked extrinsic type as expected by this runtime. pub type UncheckedExtrinsic =