Skip to content
Snippets Groups Projects
Commit 9a5377df authored by Wei Tang's avatar Wei Tang Committed by GitHub
Browse files

Use trie_root instead of TrieDBMut to calculate default_child_trie_root (#2392)

* Use trie_root instead of TrieDBMut to calculate default_child_trie_root

* Fix no_std compile
parent ef7084c4
No related merge requests found
......@@ -158,11 +158,7 @@ pub fn is_child_trie_key_valid<H: Hasher>(storage_key: &[u8]) -> bool {
/// Determine the default child trie root.
pub fn default_child_trie_root<H: Hasher>(_storage_key: &[u8]) -> Vec<u8> {
let mut db = MemoryDB::default();
let mut root = H::Out::default();
let mut empty = TrieDBMut::<H>::new(&mut db, &mut root);
empty.commit();
empty.root().as_ref().to_vec()
trie_root::<H, _, Vec<u8>, Vec<u8>>(core::iter::empty()).as_ref().iter().cloned().collect()
}
/// Determine a child trie root given its ordered contents, closed form. H is the default hasher, but a generic
......@@ -377,6 +373,18 @@ mod tests {
}
}
#[test]
fn default_trie_root() {
let mut db = MemoryDB::default();
let mut root = <Blake2Hasher as Hasher>::Out::default();
let mut empty = TrieDBMut::<Blake2Hasher>::new(&mut db, &mut root);
empty.commit();
let root1 = empty.root().as_ref().to_vec();
let root2: Vec<u8> = trie_root::<Blake2Hasher, _, Vec<u8>, Vec<u8>>(std::iter::empty()).as_ref().iter().cloned().collect();
assert_eq!(root1, root2);
}
#[test]
fn empty_is_equivalent() {
let input: Vec<(&[u8], &[u8])> = vec![];
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment