diff --git a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index a7de97ffb9..e1ba92f3b9 100644 Binary files a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm and b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm differ diff --git a/substrate/node/runtime/src/lib.rs b/substrate/node/runtime/src/lib.rs index 0ca1aff7cb..4ac2c2a5c6 100644 --- a/substrate/node/runtime/src/lib.rs +++ b/substrate/node/runtime/src/lib.rs @@ -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: 43, - impl_version: 43, + spec_version: 44, + impl_version: 44, apis: RUNTIME_API_VERSIONS, }; diff --git a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 7dfb5fb461..4fe801969b 100644 Binary files a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm and b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm differ diff --git a/substrate/srml/consensus/src/lib.rs b/substrate/srml/consensus/src/lib.rs index ef90c61f42..985a32bd6c 100644 --- a/substrate/srml/consensus/src/lib.rs +++ b/substrate/srml/consensus/src/lib.rs @@ -51,6 +51,7 @@ impl StorageVec for AuthorityStorageVec { const PREFIX: &'static [u8] = well_known_keys::AUTHORITY_PREFIX; } +pub type Key = Vec; pub type KeyValue = (Vec, Vec); /// Handling offline validator reports in a generic way. @@ -216,6 +217,13 @@ decl_module! { } } + /// Kill some items from storage. + fn kill_storage(keys: Vec) { + for key in &keys { + storage::unhashed::kill(&key); + } + } + fn on_finalise() { if let Some(original_authorities) = >::take() { let current_authorities = AuthorityStorageVec::::items(); diff --git a/substrate/srml/consensus/src/tests.rs b/substrate/srml/consensus/src/tests.rs index 23babba1d2..0145094a76 100644 --- a/substrate/srml/consensus/src/tests.rs +++ b/substrate/srml/consensus/src/tests.rs @@ -83,3 +83,28 @@ fn offline_report_can_be_excluded() { assert!(Consensus::create_inherent(&data).is_some()); }); } + +#[test] +fn set_and_kill_storage_work() { + use srml_support::storage; + + with_externalities(&mut new_test_ext(vec![1, 2, 3]), || { + System::initialise(&1, &Default::default(), &Default::default()); + + let item = (vec![42u8], vec![42u8]); + + Consensus::set_storage(vec![item.clone()]).unwrap(); + + assert_eq!( + storage::unhashed::get_raw(&item.0), + Some(item.1), + ); + + Consensus::kill_storage(vec![item.0.clone()]).unwrap(); + + assert_eq!( + storage::unhashed::get_raw(&item.0), + None, + ); + }); +}