diff --git a/substrate/bin/node/executor/src/lib.rs b/substrate/bin/node/executor/src/lib.rs index 0c3c9027b329b1a1b2eaa5d26d2c1eebabc44906..a09cc8ddc0c647dd9fb7129f65ea6021d5a3aaa4 100644 --- a/substrate/bin/node/executor/src/lib.rs +++ b/substrate/bin/node/executor/src/lib.rs @@ -37,7 +37,7 @@ mod tests { use runtime_support::{ Hashable, StorageValue, StorageMap, traits::Currency, - weights::GetDispatchInfo, + weights::{GetDispatchInfo, DispatchInfo, DispatchClass}, }; use state_machine::TestExternalities as CoreTestExternalities; use primitives::{ @@ -45,8 +45,7 @@ mod tests { traits::{CodeExecutor, Externalities}, storage::well_known_keys, }; use sr_primitives::{ - Fixed64, - traits::{Header as HeaderT, Hash as HashT, Convert}, ApplyResult, + Fixed64, traits::{Header as HeaderT, Hash as HashT, Convert}, ApplyResult, transaction_validity::InvalidTransaction, }; use contracts::ContractAddressFor; @@ -467,7 +466,9 @@ mod tests { let events = vec![ EventRecord { phase: Phase::ApplyExtrinsic(0), - event: Event::system(system::Event::ExtrinsicSuccess), + event: Event::system(system::Event::ExtrinsicSuccess( + DispatchInfo { weight: 10000, class: DispatchClass::Operational } + )), topics: vec![], }, EventRecord { @@ -487,7 +488,9 @@ mod tests { }, EventRecord { phase: Phase::ApplyExtrinsic(1), - event: Event::system(system::Event::ExtrinsicSuccess), + event: Event::system(system::Event::ExtrinsicSuccess( + DispatchInfo { weight: 1000000, class: DispatchClass::Normal } + )), topics: vec![], }, ]; @@ -516,7 +519,9 @@ mod tests { let events = vec![ EventRecord { phase: Phase::ApplyExtrinsic(0), - event: Event::system(system::Event::ExtrinsicSuccess), + event: Event::system(system::Event::ExtrinsicSuccess( + DispatchInfo { weight: 10000, class: DispatchClass::Operational } + )), topics: vec![], }, EventRecord { @@ -538,7 +543,9 @@ mod tests { }, EventRecord { phase: Phase::ApplyExtrinsic(1), - event: Event::system(system::Event::ExtrinsicSuccess), + event: Event::system(system::Event::ExtrinsicSuccess( + DispatchInfo { weight: 1000000, class: DispatchClass::Normal } + )), topics: vec![], }, EventRecord { @@ -560,7 +567,9 @@ mod tests { }, EventRecord { phase: Phase::ApplyExtrinsic(2), - event: Event::system(system::Event::ExtrinsicSuccess), + event: Event::system(system::Event::ExtrinsicSuccess( + DispatchInfo { weight: 1000000, class: DispatchClass::Normal } + )), topics: vec![], }, ]; diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index 746508f23522bd3839146ece6db07dd47975b460..364a36c1ec387a370943890d600fefc91df4152f 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -78,8 +78,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to equal spec_version. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 194, - impl_version: 196, + spec_version: 195, + impl_version: 195, apis: RUNTIME_API_VERSIONS, }; diff --git a/substrate/palette/executive/src/lib.rs b/substrate/palette/executive/src/lib.rs index 6868d732a9165ee3e4549644fdcdc708c94f1b32..75e386b87b908bc928df3e195ec3720e4396b0c6 100644 --- a/substrate/palette/executive/src/lib.rs +++ b/substrate/palette/executive/src/lib.rs @@ -269,7 +269,7 @@ where let dispatch_info = xt.get_dispatch_info(); let r = Applyable::apply::<UnsignedValidator>(xt, dispatch_info, encoded_len)?; - <system::Module<System>>::note_applied_extrinsic(&r, encoded_len as u32); + <system::Module<System>>::note_applied_extrinsic(&r, encoded_len as u32, dispatch_info); Ok(r) } diff --git a/substrate/palette/support/src/weights.rs b/substrate/palette/support/src/weights.rs index 7aaa8b31366c04aa50b68d6de0521e7752d00972..3a5863ee3728b9f305d7e6c6d3f3e8a4ef93de2d 100644 --- a/substrate/palette/support/src/weights.rs +++ b/substrate/palette/support/src/weights.rs @@ -129,8 +129,7 @@ impl From<SimpleDispatchInfo> for DispatchClass { } /// A bundle of static information collected from the `#[weight = $x]` attributes. -#[cfg_attr(feature = "std", derive(PartialEq, Eq))] -#[derive(Clone, Copy, Default, RuntimeDebug)] +#[derive(Clone, Copy, Eq, PartialEq, Default, RuntimeDebug, Encode, Decode)] pub struct DispatchInfo { /// Weight of this transaction. pub weight: Weight, diff --git a/substrate/palette/system/src/lib.rs b/substrate/palette/system/src/lib.rs index c7038f41686974307a2f2a25ee38b4718ea06732..1d4c49801f88b75e59d5f070bb91c2364b0ba893 100644 --- a/substrate/palette/system/src/lib.rs +++ b/substrate/palette/system/src/lib.rs @@ -311,9 +311,9 @@ decl_event!( /// Event for the System module. pub enum Event { /// An extrinsic completed successfully. - ExtrinsicSuccess, + ExtrinsicSuccess(DispatchInfo), /// An extrinsic failed. - ExtrinsicFailed(DispatchError), + ExtrinsicFailed(DispatchError, DispatchInfo), } ); @@ -754,11 +754,11 @@ impl<T: Trait> Module<T> { } /// To be called immediately after an extrinsic has been applied. - pub fn note_applied_extrinsic(r: &ApplyOutcome, _encoded_len: u32) { + pub fn note_applied_extrinsic(r: &ApplyOutcome, _encoded_len: u32, info: DispatchInfo) { Self::deposit_event( match r { - Ok(()) => Event::ExtrinsicSuccess, - Err(err) => Event::ExtrinsicFailed(err.clone()), + Ok(()) => Event::ExtrinsicSuccess(info), + Err(err) => Event::ExtrinsicFailed(err.clone(), info), } ); @@ -1175,8 +1175,8 @@ mod tests { impl From<Event> for u16 { fn from(e: Event) -> u16 { match e { - Event::ExtrinsicSuccess => 100, - Event::ExtrinsicFailed(_) => 101, + Event::ExtrinsicSuccess(..) => 100, + Event::ExtrinsicFailed(..) => 101, } } } @@ -1224,8 +1224,8 @@ mod tests { System::initialize(&2, &[0u8; 32].into(), &[0u8; 32].into(), &Default::default()); System::deposit_event(42u16); - System::note_applied_extrinsic(&Ok(()), 0); - System::note_applied_extrinsic(&Err(DispatchError::new(Some(1), 2, None)), 0); + System::note_applied_extrinsic(&Ok(()), 0, Default::default()); + System::note_applied_extrinsic(&Err(DispatchError::new(Some(1), 2, None)), 0, Default::default()); System::note_finished_extrinsics(); System::deposit_event(3u16); System::finalize();