diff --git a/demo/cli/src/lib.rs b/demo/cli/src/lib.rs index 0330192b5816a..42d723b376098 100644 --- a/demo/cli/src/lib.rs +++ b/demo/cli/src/lib.rs @@ -49,11 +49,10 @@ pub mod error; use std::sync::Arc; use client::genesis; use codec::Slicable; -use demo_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfig, +use demo_runtime::{GenesisConfig, SystemConfig, ConsensusConfig, CouncilConfig, DemocracyConfig, SessionConfig, StakingConfig, BuildExternalities}; use futures::{Future, Sink, Stream}; - struct DummyPool; impl substrate_rpc::author::AuthorApi for DummyPool { fn submit_extrinsic(&self, _: primitives::block::Extrinsic) -> substrate_rpc::author::error::Result<()> { @@ -90,7 +89,9 @@ pub fn run(args: I) -> error::Result<()> where code: vec![], // TODO authorities: vec![god_key.clone()], }), - system: None, + system: Some(SystemConfig { + number: 0, + }), // block_time: 5, // 5 second block time. session: Some(SessionConfig { validators: vec![god_key.clone()], diff --git a/demo/executor/src/lib.rs b/demo/executor/src/lib.rs index 3d0aa193e40eb..79537bbc4d978 100644 --- a/demo/executor/src/lib.rs +++ b/demo/executor/src/lib.rs @@ -197,7 +197,7 @@ mod tests { construct_block( 1, [69u8; 32].into(), - hex!("a63d59c6a7347cd7a1dc1ec139723b531f0ac450e39b1c532d5ca69ff74ad811").into(), + hex!("cb24b6108728b696d72a3a7801a98710bb868fb9bced92931a4dc9d581a506eb").into(), vec![Extrinsic { signed: Alice.into(), index: 0, @@ -210,7 +210,7 @@ mod tests { construct_block( 2, block1().1, - hex!("1c3623b2e3f7e43752debb9015bace4f6931593579b5af34457b931315f5e2ab").into(), + hex!("8f0cac66464e9c0006e72335cd185dccdfb5beaf21d474aff904694c79cf18e4").into(), vec![ Extrinsic { signed: Bob.into(), diff --git a/demo/runtime/wasm/genesis.wasm b/demo/runtime/wasm/genesis.wasm index bc0cb89235c57..4b0eaf7bd7f1b 100644 Binary files a/demo/runtime/wasm/genesis.wasm and b/demo/runtime/wasm/genesis.wasm differ diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 2823d62ae5865..4b0eaf7bd7f1b 100644 Binary files a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm and b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm differ diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index d95558e2ed6ac..559460d13b362 100755 Binary files a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm and b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm differ diff --git a/polkadot/runtime/wasm/genesis.wasm b/polkadot/runtime/wasm/genesis.wasm index 05ff2f4505ecc..72bc83bea2744 100644 Binary files a/polkadot/runtime/wasm/genesis.wasm and b/polkadot/runtime/wasm/genesis.wasm differ diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index 05ff2f4505ecc..72bc83bea2744 100644 Binary files a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm and b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm differ diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 4bb8fff698606..1e7b1e7cc4f03 100755 Binary files a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm and b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm differ diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index 36651dcac1621..a16ee87a92693 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -62,8 +62,8 @@ use substrate_executor::NativeExecutor; use polkadot_executor::Executor as LocalDispatch; use keystore::Store as Keystore; use polkadot_api::PolkadotApi; -use polkadot_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfig, - SessionConfig, StakingConfig, BuildExternalities}; +use polkadot_runtime::{GenesisConfig, ConsensusConfig, SystemConfig, CouncilConfig, + DemocracyConfig, SessionConfig, StakingConfig, BuildExternalities}; use client::{genesis, BlockchainEvents}; use network::ManageNetwork; use exit_future::Signal; @@ -204,7 +204,9 @@ fn testnet_config(initial_authorities: Vec) -> ChainConfig { code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm").to_vec(), authorities: initial_authorities.clone(), }), - system: None, + system: Some(SystemConfig { + number: 0, + }), session: Some(SessionConfig { validators: initial_authorities.clone(), session_length: 10, diff --git a/substrate/runtime/executive/src/lib.rs b/substrate/runtime/executive/src/lib.rs index 35982f754b5d3..7b73a764f428b 100644 --- a/substrate/runtime/executive/src/lib.rs +++ b/substrate/runtime/executive/src/lib.rs @@ -239,7 +239,7 @@ mod tests { header: Header { parent_hash: [69u8; 32].into(), number: 1, - state_root: hex!("aa0cff04242e55fc780861b890aa8deba555f6ed95bd8fa575dfd80864f3b93e").into(), + state_root: hex!("0b88a6c6c26a6223eb44a1bb54bc2d43af3384bead8e58e5780c7ec7ad383e0a").into(), extrinsics_root: hex!("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421").into(), digest: Digest { logs: vec![], }, }, @@ -273,7 +273,7 @@ mod tests { header: Header { parent_hash: [69u8; 32].into(), number: 1, - state_root: hex!("aa0cff04242e55fc780861b890aa8deba555f6ed95bd8fa575dfd80864f3b93e").into(), + state_root: hex!("0b88a6c6c26a6223eb44a1bb54bc2d43af3384bead8e58e5780c7ec7ad383e0a").into(), extrinsics_root: [0u8; 32].into(), digest: Digest { logs: vec![], }, }, diff --git a/substrate/runtime/system/src/lib.rs b/substrate/runtime/system/src/lib.rs index 864a007726238..84408285f141a 100644 --- a/substrate/runtime/system/src/lib.rs +++ b/substrate/runtime/system/src/lib.rs @@ -102,11 +102,8 @@ impl Module { /// Remove temporary "environment" entries in storage. pub fn finalise() -> T::Header { - >::kill(); - >::kill(); - - let number = >::take(); - let parent_hash = >::take(); + let number = >::get(); + let parent_hash = >::get(); let digest = >::take(); let extrinsics_root = >::take(); let storage_root = T::Hashing::storage_root(); @@ -184,12 +181,15 @@ impl Module { } #[cfg(any(feature = "std", test))] -pub struct GenesisConfig(PhantomData); +pub struct GenesisConfig { + pub number: T::BlockNumber, +} #[cfg(any(feature = "std", test))] impl Default for GenesisConfig { fn default() -> Self { - GenesisConfig(PhantomData) + use primitives::traits::As; + GenesisConfig { number: T::BlockNumber::sa(1), } } } @@ -199,13 +199,21 @@ impl primitives::BuildExternalities for GenesisConfig fn build_externalities(self) -> runtime_io::TestExternalities { use runtime_io::twox_128; use codec::Slicable; - - map![ - twox_128(&>::key_for(T::BlockNumber::zero())).to_vec() => [69u8; 32].encode(), - twox_128(>::key()).to_vec() => 1u64.encode(), - twox_128(>::key()).to_vec() => [69u8; 32].encode(), - twox_128(>::key()).to_vec() => [0u8; 32].encode(), - twox_128(>::key()).to_vec() => [0u8; 4].encode() - ] + use primitives::traits::As; + + if self.number == T::BlockNumber::sa(0) { + map![ + twox_128(>::key()).to_vec() => self.number.encode(), + twox_128(>::key()).to_vec() => T::Hash::default().encode() + ] + } else { + map![ + twox_128(>::key()).to_vec() => self.number.encode(), + twox_128(>::key()).to_vec() => T::Hash::default().encode(), + twox_128(&>::key_for(T::BlockNumber::zero())).to_vec() => [69u8; 32].encode(), + twox_128(>::key()).to_vec() => [69u8; 32].encode(), + twox_128(>::key()).to_vec() => 0u32.encode() + ] + } } } diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 59a333c876829..164c9f9d025a0 100644 Binary files a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm and b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm differ diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index c80254075723f..4c10e8ecd050c 100755 Binary files a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm and b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm differ