diff --git a/cumulus/pallets/parachain-system/src/lib.rs b/cumulus/pallets/parachain-system/src/lib.rs index 6280e53e53..02b15911a8 100644 --- a/cumulus/pallets/parachain-system/src/lib.rs +++ b/cumulus/pallets/parachain-system/src/lib.rs @@ -595,6 +595,29 @@ pub mod pallet { sp_io::storage::set(b":c", &[]); } } + + #[pallet::validate_unsigned] + impl sp_runtime::traits::ValidateUnsigned for Pallet { + type Call = Call; + + fn validate_unsigned(_source: TransactionSource, call: &Self::Call) -> TransactionValidity { + if let Call::enact_authorized_upgrade(ref code) = call { + if let Ok(hash) = Self::validate_authorized_upgrade(code) { + return Ok(ValidTransaction { + priority: 100, + requires: vec![], + provides: vec![hash.as_ref().to_vec()], + longevity: TransactionLongevity::max_value(), + propagate: true, + }); + } + } + if let Call::set_validation_data(..) = call { + return Ok(Default::default()); + } + Err(InvalidTransaction::Call.into()) + } + } } impl Pallet { @@ -606,28 +629,6 @@ impl Pallet { } } -impl sp_runtime::traits::ValidateUnsigned for Pallet { - type Call = Call; - - fn validate_unsigned(_source: TransactionSource, call: &Self::Call) -> TransactionValidity { - if let Call::enact_authorized_upgrade(ref code) = call { - if let Ok(hash) = Self::validate_authorized_upgrade(code) { - return Ok(ValidTransaction { - priority: 100, - requires: vec![], - provides: vec![hash.as_ref().to_vec()], - longevity: TransactionLongevity::max_value(), - propagate: true, - }); - } - } - if let Call::set_validation_data(..) = call { - return Ok(Default::default()); - } - Err(InvalidTransaction::Call.into()) - } -} - impl GetChannelInfo for Pallet { fn get_channel_status(id: ParaId) -> ChannelStatus { // Note, that we are using `relevant_messaging_state` which may be from the previous diff --git a/cumulus/pallets/parachain-system/src/tests.rs b/cumulus/pallets/parachain-system/src/tests.rs index 2bfc1c0c61..24ee3fbe1d 100755 --- a/cumulus/pallets/parachain-system/src/tests.rs +++ b/cumulus/pallets/parachain-system/src/tests.rs @@ -49,7 +49,7 @@ frame_support::construct_runtime!( UncheckedExtrinsic = UncheckedExtrinsic, { System: frame_system::{Pallet, Call, Config, Storage, Event}, - ParachainSystem: parachain_system::{Pallet, Call, Storage, Event}, + ParachainSystem: parachain_system::{Pallet, Call, Storage, Event, ValidateUnsigned}, } );