Create AuthoritiesChange digest item in correct block (#2512)

* finalize srml modules in reverse order

* update runtime versions
This commit is contained in:
Svyatoslav Nikolsky
2019-05-10 15:30:48 +03:00
committed by Gavin Wood
parent ac195a0060
commit 59be403730
3 changed files with 36 additions and 51 deletions
+23 -40
View File
@@ -288,56 +288,39 @@ pub trait OffchainWorker<BlockNumber> {
impl<N> OffchainWorker<N> for () {}
macro_rules! tuple_impl {
($one:ident,) => {
impl<Number: Copy, $one: OnFinalize<Number>> OnFinalize<Number> for ($one,) {
($first:ident, $($rest:ident,)+) => {
tuple_impl!([$first] [$first] [$($rest)+]);
};
([$($direct:ident)+] [$($reverse:ident)+] []) => {
impl<
Number: Copy,
$($direct: OnFinalize<Number>),+
> OnFinalize<Number> for ($($direct),+,) {
fn on_finalize(n: Number) {
$one::on_finalize(n);
$($reverse::on_finalize(n);)+
}
}
impl<Number: Copy, $one: OnInitialize<Number>> OnInitialize<Number> for ($one,) {
impl<
Number: Copy,
$($direct: OnInitialize<Number>),+
> OnInitialize<Number> for ($($direct),+,) {
fn on_initialize(n: Number) {
$one::on_initialize(n);
$($direct::on_initialize(n);)+
}
}
impl<Number: Copy, $one: OffchainWorker<Number>> OffchainWorker<Number> for ($one,) {
impl<
Number: Copy,
$($direct: OffchainWorker<Number>),+
> OffchainWorker<Number> for ($($direct),+,) {
fn generate_extrinsics(n: Number) {
$one::generate_extrinsics(n);
$($direct::generate_extrinsics(n);)+
}
}
};
($first:ident, $($rest:ident,)+) => {
impl<
Number: Copy,
$first: OnFinalize<Number>,
$($rest: OnFinalize<Number>),+
> OnFinalize<Number> for ($first, $($rest),+) {
fn on_finalize(n: Number) {
$first::on_finalize(n);
$($rest::on_finalize(n);)+
}
}
impl<
Number: Copy,
$first: OnInitialize<Number>,
$($rest: OnInitialize<Number>),+
> OnInitialize<Number> for ($first, $($rest),+) {
fn on_initialize(n: Number) {
$first::on_initialize(n);
$($rest::on_initialize(n);)+
}
}
impl<
Number: Copy,
$first: OffchainWorker<Number>,
$($rest: OffchainWorker<Number>),+
> OffchainWorker<Number> for ($first, $($rest),+) {
fn generate_extrinsics(n: Number) {
$first::generate_extrinsics(n);
$($rest::generate_extrinsics(n);)+
}
}
tuple_impl!($($rest,)+);
}
([$($direct:ident)+] [$($reverse:ident)+] [$first:ident $($rest:ident)*]) => {
tuple_impl!([$($direct)+] [$($reverse)+] []);
tuple_impl!([$($direct)+ $first] [$first $($reverse)+] [$($rest)*]);
};
}
#[allow(non_snake_case)]
+11 -9
View File
@@ -37,14 +37,14 @@ mod tests {
use primitives::{twox_128, blake2_256, Blake2Hasher, ChangesTrieConfiguration, NeverNativeValue,
NativeOrEncoded};
use node_primitives::{Hash, BlockNumber, AccountId};
use runtime_primitives::traits::{Header as HeaderT, Hash as HashT};
use runtime_primitives::{generic, generic::Era, ApplyOutcome, ApplyError, ApplyResult, Perbill};
use runtime_primitives::traits::{Header as HeaderT, Hash as HashT, Digest, DigestItem};
use runtime_primitives::{generic::Era, ApplyOutcome, ApplyError, ApplyResult, Perbill};
use {balances, indices, session, system, staking, consensus, timestamp, treasury, contract};
use contract::ContractAddressFor;
use system::{EventRecord, Phase};
use node_runtime::{Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances,
BuildStorage, GenesisConfig, BalancesConfig, SessionConfig, StakingConfig, System,
SystemConfig, GrandpaConfig, IndicesConfig, Event, Log};
SystemConfig, GrandpaConfig, IndicesConfig, Event};
use wabt;
use primitives::map;
@@ -442,8 +442,10 @@ mod tests {
]
);
let digest = generic::Digest::<Log>::default();
assert_eq!(Header::decode(&mut &block2.0[..]).unwrap().digest, digest);
// session change => consensus authorities change => authorities change digest item appears
let digest = Header::decode(&mut &block2.0[..]).unwrap().digest;
assert_eq!(digest.logs().len(), 1);
assert!(digest.logs()[0].as_authorities_change().is_some());
(block1, block2)
}
@@ -567,10 +569,6 @@ mod tests {
phase: Phase::ApplyExtrinsic(2),
event: Event::system(system::Event::ExtrinsicSuccess)
},
EventRecord {
phase: Phase::Finalization,
event: Event::session(session::RawEvent::NewSession(1))
},
EventRecord {
phase: Phase::Finalization,
event: Event::treasury(treasury::RawEvent::Spending(0))
@@ -583,6 +581,10 @@ mod tests {
phase: Phase::Finalization,
event: Event::treasury(treasury::RawEvent::Rollover(0))
},
EventRecord {
phase: Phase::Finalization,
event: Event::session(session::RawEvent::NewSession(1))
},
]);
});
}
+2 -2
View File
@@ -58,8 +58,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
spec_name: create_runtime_str!("node"),
impl_name: create_runtime_str!("substrate-node"),
authoring_version: 10,
spec_version: 75,
impl_version: 75,
spec_version: 76,
impl_version: 76,
apis: RUNTIME_API_VERSIONS,
};