Light friendly storage tracking: changes trie + extending over ranges (#628)

* changes_trie

* changs_trie: continue

* changes_trie: adding tests

* fixed TODO

* removed obsolete ExtrinsicChanges

* encodable ChangesTrieConfiguration

* removed polkadot fle

* fixed grumbles

* ext_storage_changes_root returns u32

* moved changes trie root to digest

* removed commented code

* read storage values from native code

* fixed grumbles

* fixed grumbles

* missing comma
This commit is contained in:
Svyatoslav Nikolsky
2018-09-18 10:14:41 +03:00
committed by Gav Wood
parent 24479cd7f5
commit 7fa337afbc
64 changed files with 3130 additions and 788 deletions
+14 -7
View File
@@ -30,7 +30,7 @@ pub extern crate parity_codec as codec;
// re-export hashing functions.
pub use primitives::{blake2_256, twox_128, twox_256, ed25519};
pub use primitives::Blake2Hasher;
pub use primitives::{Blake2Hasher, RlpCodec};
// Switch to this after PoC-3
// pub use primitives::BlakeHasher;
pub use substrate_state_machine::{Externalities, TestExternalities};
@@ -104,6 +104,13 @@ pub fn storage_root() -> H256 {
).unwrap_or(H256::new())
}
/// "Commit" all existing operations and get the resultant storage change root.
pub fn storage_changes_root(block: u64) -> Option<H256> {
ext::with(|ext|
ext.storage_changes_root(block)
).unwrap_or(None)
}
/// A trie root formed from the enumerated items.
pub fn enumerated_trie_root<H>(serialised_values: &[&[u8]]) -> H::Out
where
@@ -210,7 +217,7 @@ mod std_tests {
#[test]
fn storage_works() {
let mut t = TestExternalities::<Blake2Hasher>::new();
let mut t = TestExternalities::<Blake2Hasher, RlpCodec>::default();
assert!(with_externalities(&mut t, || {
assert_eq!(storage(b"hello"), None);
set_storage(b"hello", b"world");
@@ -220,7 +227,7 @@ mod std_tests {
true
}));
t = map![b"foo".to_vec() => b"bar".to_vec()];
t = TestExternalities::new(map![b"foo".to_vec() => b"bar".to_vec()]);
assert!(!with_externalities(&mut t, || {
assert_eq!(storage(b"hello"), None);
@@ -231,9 +238,9 @@ mod std_tests {
#[test]
fn read_storage_works() {
let mut t: TestExternalities<Blake2Hasher> = map![
let mut t = TestExternalities::<Blake2Hasher, RlpCodec>::new(map![
b":test".to_vec() => b"\x0b\0\0\0Hello world".to_vec()
];
]);
with_externalities(&mut t, || {
let mut v = [0u8; 4];
@@ -247,12 +254,12 @@ mod std_tests {
#[test]
fn clear_prefix_works() {
let mut t: TestExternalities<Blake2Hasher> = map![
let mut t = TestExternalities::<Blake2Hasher, RlpCodec>::new(map![
b":a".to_vec() => b"\x0b\0\0\0Hello world".to_vec(),
b":abcd".to_vec() => b"\x0b\0\0\0Hello world".to_vec(),
b":abc".to_vec() => b"\x0b\0\0\0Hello world".to_vec(),
b":abdd".to_vec() => b"\x0b\0\0\0Hello world".to_vec()
];
]);
with_externalities(&mut t, || {
clear_prefix(b":abc");