Changes tries: support forks (#950)

* forks support in changes trie storage

* moved convert_hash to primitives

* optimize ChangesTrieRootsStorage::root when anchor is canonicalized
This commit is contained in:
Svyatoslav Nikolsky
2018-11-13 14:17:14 +03:00
committed by Gav Wood
parent 037f9dde10
commit 6e3c56c135
25 changed files with 276 additions and 138 deletions
+2 -2
View File
@@ -93,7 +93,7 @@ pub fn execute_block(block: Block) {
// check digest
let mut digest = Digest::default();
if let Some(storage_changes_root) = storage_changes_root(header.number) {
if let Some(storage_changes_root) = storage_changes_root(header.parent_hash.into(), header.number - 1) {
digest.push(generic::DigestItem::ChangesTrieRoot::<Hash, u64>(storage_changes_root.into()));
}
assert!(digest == header.digest, "Header digest items must match that calculated.");
@@ -160,7 +160,7 @@ pub fn finalise_block() -> Header {
let number = <Number>::take();
let parent_hash = <ParentHash>::take();
let storage_root = BlakeTwo256::storage_root();
let storage_changes_root = BlakeTwo256::storage_changes_root(number);
let storage_changes_root = BlakeTwo256::storage_changes_root(parent_hash, number - 1);
let mut digest = Digest::default();
if let Some(storage_changes_root) = storage_changes_root {