Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
776f324
fuse commit of no extension branch.
cheme Feb 15, 2019
4eae594
Tabify.
cheme Feb 19, 2019
5d79a12
Implementation for trie_root.
cheme Feb 22, 2019
fe603e8
Merge branch '12' into n_ext_trie_key, try to complete for no_ext, tests
cheme Mar 21, 2019
e7b299c
Fix test
cheme Mar 22, 2019
2ca4542
Fuzz of prefix seems ok for pr 12, no_ext things are totally broken.
cheme Mar 22, 2019
cfeb96a
Fix iter_build key indexes.
cheme Mar 22, 2019
e38532c
Merge branch 'master' into n_ext_trie_key, tests are broken again
cheme Apr 1, 2019
1d9be11
Fix merge regression
cheme Apr 2, 2019
f1fdcbd
No error found : need more tests (after evos).
cheme Apr 2, 2019
bd5b735
Put a no_ext header specific scheme (with second bit as in substrate).
cheme Apr 2, 2019
e727fbd
Fix decoding issue of iter
cheme Apr 2, 2019
b3c988c
Reset fuzzer to right no_ext impl, found a failing test (in comment).
cheme Apr 2, 2019
bdd99c0
Find and fix fuzzing error (a missing branch child ix).
cheme Apr 3, 2019
ac36fc9
Removing bench blobs.
cheme Apr 3, 2019
42c2eba
Minor change (remove dead branch, and useless encoding, also panic on
cheme Apr 8, 2019
84ff90d
Use a unique trait for spec (layout) : hasher, nodecodec and alogorithm
cheme Apr 9, 2019
e092a0c
Fuse triedbmut code, before remove NoExt variant
cheme Apr 9, 2019
3bd3127
Fix merge and remove triedbmutnoext variant.
cheme Apr 9, 2019
a8b73f6
No instance for Layout (NodeCodec should have one at some point), to
cheme Apr 9, 2019
1c34745
Apply layout trait to non mut trie too.
cheme Apr 9, 2019
12842a6
Nibbleslice using inner trait to define multiple encoding: this is
cheme Apr 10, 2019
4478ece
NibbleVec move size arelated methods.
cheme Apr 10, 2019
318e7c8
Reverse padding in nibble
cheme Apr 11, 2019
b30698a
start testing, first broken part see triedbmut advance println
cheme Apr 11, 2019
097fec5
Fix offset issue of nodecodec
cheme Apr 12, 2019
f892c76
Switch remaining tests to use postfix for no ext
cheme Apr 12, 2019
57a86c5
Switch header encoding scheme. Failing test is related to the
cheme Apr 12, 2019
0cab2eb
TrieStream implementation : warning it is not parameterized.
cheme Apr 16, 2019
f21398b
Back to prefix padded nibble (TODO see if removal of all previous change
cheme Apr 17, 2019
d36ba7d
Simplification of nibleslice, not stabilized yet (many unused and some
cheme Apr 18, 2019
bc1ae2b
fix stack of prefix on commit
cheme Apr 18, 2019
4ddb1eb
fix into_part method
cheme Apr 19, 2019
da335d4
fix fuzz1
cheme Apr 19, 2019
f276ace
bad work on fixing fix: buf is needed only for terminal and recursive is
cheme Apr 19, 2019
c5d907d
small cleaning
cheme Apr 19, 2019
71e8fab
Fix remove issue, will need more test (playpen on noext and check
cheme Apr 20, 2019
0c7efd1
clean up prefixkeymut before merge with keyvec
cheme Apr 22, 2019
8ee9798
implement, still 2 failing test (note on remove I did change prefix a…
cheme Apr 22, 2019
241eb4a
nightly debug format
cheme Apr 20, 2019
107027b
Use keyvec instead of keymut.
cheme Apr 22, 2019
ca950b9
ref padding constant
cheme Apr 23, 2019
ba7de31
remove PartialKey (same as NibbleSlice in this state).
cheme Apr 23, 2019
5de3fbe
no ext error from playpen
cheme Apr 23, 2019
cf2b5e3
Fix playpen error.
cheme Apr 23, 2019
2e8cd6a
fix some warnings
cheme Apr 24, 2019
6c69177
use nibblevec instead of vec in iter, TODO still need remove a useless
cheme Apr 24, 2019
fbe84fb
end of switch Vec<u8> to NibbleVec, this will need a bench.
cheme Apr 24, 2019
50fec85
make a nibble module to share field between vec and slice
cheme Apr 25, 2019
275f5b8
push_pop on quarter
cheme Apr 25, 2019
6fd7531
in progress - append_partial
cheme Apr 28, 2019
959da6c
partial & prefix cannot be simply option but (nb_nibble, aligned_val)…
cheme Apr 30, 2019
dd93050
switch partial to (u8, u8)
cheme Apr 30, 2019
b756248
Replace prefix option by index bytes
cheme May 1, 2019
9e45eda
clean code from padding_bitmask a bit
cheme May 2, 2019
9657a15
Fix regression
cheme May 2, 2019
3bfe451
fuzz1 and 2 passing
cheme May 3, 2019
757f630
a few fix, next needed are combine_key and shifted_key
cheme May 3, 2019
2704459
fix a few test
cheme May 4, 2019
d844cd2
fix range iter
cheme May 5, 2019
8f428f1
remove a few todos and fix bench (except memdb).
cheme May 6, 2019
e88dbc2
cleaning
cheme May 6, 2019
8a4f75e
Abstract buff size of iter_build
cheme May 6, 2019
398c915
plug iter_build on TrieLayout
cheme May 6, 2019
38c4899
Make children slice variable length depending on trait.
cheme May 7, 2019
45009f8
Clone and debug for kf function
cheme May 8, 2019
1c40a98
nibble vec append fix
cheme May 8, 2019
c4ace9a
right vec append fix
cheme May 9, 2019
530f5f1
Add debug assertion to help implementation of codec.
cheme May 9, 2019
a8bcdf5
fix
cheme May 9, 2019
28271c2
lookup advance branch for other than 16
cheme May 9, 2019
57bb429
no_std update
cheme May 10, 2019
bce5c66
Fix no ext key lookup
cheme May 13, 2019
f9430e0
smaller empty prefix result
cheme May 13, 2019
0ada0af
Fix wasm code (rust std doc for usize is unaccurate).
cheme May 13, 2019
1a09044
bench len/size factor 2
cheme May 14, 2019
7cec6af
Add test with values on encode_size, fix debug output (previous change
cheme May 23, 2019
b13bb9a
indent
cheme May 23, 2019
06f5360
do not allow decoding of longer length node (encoding still truncate)
cheme May 30, 2019
ed68da6
format
cheme May 31, 2019
feb0660
Legacy prefix tools.
cheme Jun 4, 2019
776a1f3
Fix legacy prefix
cheme Jun 4, 2019
43b3225
Some documentation, and switch `masked_right` semantic to be similar to
cheme Jun 5, 2019
727837d
Documentation improvement and breaking long lines.
cheme Jun 5, 2019
8d1b2ae
some additional formatting
cheme Jun 5, 2019
a5a95bd
Remove BM from NodeCodec (specific to some implementation only).
cheme Jun 5, 2019
be66ce2
Invalid asumption about prefix ordering of key, fix doc and implement
cheme Jun 6, 2019
ddd24d2
OrderedPrefix instance.
cheme Jun 7, 2019
fec4a79
inprogress
cheme Jun 9, 2019
b45762d
No exessive buffer len, simplify flush_branch.
cheme Jun 9, 2019
0218331
fix quarter error
cheme Jun 10, 2019
82c920a
Merge branch 'master' into n_ext_trie
cheme Jun 22, 2019
a2f31c5
iter_build instance with print trace.
cheme Jun 22, 2019
65b748a
gen impl over H.
cheme Jun 22, 2019
56b1398
no_std
cheme Jun 25, 2019
4c381d7
Merge branch 'n_ext_trie' of github.com:cheme/trie into n_ext_trie
cheme Jun 25, 2019
2efca9b
fix no_std bis
cheme Jun 25, 2019
fcb70e2
no_std tierce
cheme Jun 25, 2019
116978f
quick bench trie mut against trie root.
cheme Jul 3, 2019
af7f2bb
memory db building iter_build benches
cheme Jul 3, 2019
6d38133
Merge branch 'master' into n_ext_trie
cheme Jul 8, 2019
5eb9b99
update versioning
cheme Jul 8, 2019
0a29389
Small doc changes and formatting fixes.
cheme Jul 22, 2019
5e1126a
ChildBitmap renamed to more generic BitMap.
cheme Jul 22, 2019
c8e66cd
Renaming of LayOut to Layout.
cheme Jul 22, 2019
bb2588e
replace _ix with _index, bm with bitmap, and Ix with Index.
cheme Jul 22, 2019
202bc74
Removing padding length from prefix.
cheme Jul 24, 2019
0de2f85
Renamings.
cheme Jul 24, 2019
93e9c13
Remove substrate from comment.
cheme Jul 24, 2019
699cdc0
First pass of renamaings.
cheme Jul 26, 2019
68e3832
Line length bellow 100.
cheme Jul 26, 2019
19f92fb
add after comma space and after closure paramater space.
cheme Jul 26, 2019
4f3bb58
Renaming of variables and methods.
cheme Jul 26, 2019
a65724d
Some line length.
cheme Jul 26, 2019
502740b
Rename subtrait of TrieLayout to full names.
cheme Jul 29, 2019
b6e8f9c
Replace 'masked_' by 'pad_'.
cheme Jul 29, 2019
5ada0fe
documentation small fixes.
cheme Jul 29, 2019
2fe240c
Restore new line at end.
cheme Jul 29, 2019
5a81906
Remove old feature.
cheme Jul 29, 2019
fb0e822
Merge branch 'master' into n_ext_trie
cheme Jul 31, 2019
8a9cc47
Remove multiple trie radix support.
cheme Jul 31, 2019
d9a12d0
Comment.
cheme Jul 31, 2019
869b4ce
formatting, and remove unused BitMap trait.
cheme Aug 1, 2019
9b94482
Removing: radix related cache struct from iter_build.
cheme Aug 1, 2019
5b9b022
No assumption on biggest_depth.
cheme Aug 1, 2019
79d71b6
fixing biggest depth correctly.
cheme Aug 1, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
ref padding constant
  • Loading branch information
cheme committed Apr 23, 2019
commit ca950b9209c447fa93d1dfc0e1904d15fc0b7ada
45 changes: 22 additions & 23 deletions test-support/reference-trie/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ use std::borrow::Borrow;
use keccak_hasher::KeccakHasher;

pub use trie_db::{Trie, TrieMut, NibbleSlice, Recorder, NodeCodec};
pub use trie_db::{Record, TrieLayOut, NibblePreHalf, NibbleOps};
pub use trie_db::{Record, TrieLayOut, NibbleHalf, NibbleOps};
pub use trie_root::TrieStream;

/// trie layout similar to parity-ethereum
Expand All @@ -49,7 +49,7 @@ impl TrieLayOut for LayoutOri {
const USE_EXTENSION: bool = true;
type H = keccak_hasher::KeccakHasher;
type C = ReferenceNodeCodec;
type N = NibblePreHalf;
type N = NibbleHalf;
}

/// trie layout similar to substrate one
Expand All @@ -59,7 +59,7 @@ impl TrieLayOut for LayoutNew {
const USE_EXTENSION: bool = false;
type H = keccak_hasher::KeccakHasher;
type C = ReferenceNodeCodecNoExt;
type N = NibblePreHalf;
type N = NibbleHalf;
}

pub type RefTrieDB<'a> = trie_db::TrieDB<'a, LayoutOri>;
Expand Down Expand Up @@ -511,7 +511,7 @@ fn partial_to_key<N: NibbleOps>(partial: Partial, offset: u8, over: u8) -> Vec<u
assert!(nibble_count < over as usize);
let mut output = vec![offset + nibble_count as u8];
if let Some(v) = partial.0 {
output.push((v & N::PADDING_BITMASK[nb_nibble_hpe - 1]) + N::PADDING_VALUE);
output.push(v & N::PADDING_BITMASK[nb_nibble_hpe].0);
}
output.extend_from_slice(&partial.1[..]);
output
Expand Down Expand Up @@ -556,7 +556,7 @@ fn partial_enc<N: NibbleOps>(partial: Partial, node_kind: NodeKindNoExt) -> Vec<
NodeKindNoExt::BranchNoValue => NodeHeaderNoExt::Branch(false, nibble_count).encode_to(&mut output),
};
if let Some(v) = partial.0 {
output.push((v & N::PADDING_BITMASK[nb_nibble_hpe - 1]) + N::PADDING_VALUE);
output.push(v & N::PADDING_BITMASK[nb_nibble_hpe].0);
}
output.extend_from_slice(&partial.1[..]);
output
Expand Down Expand Up @@ -602,15 +602,15 @@ impl<N: NibbleOps> NodeCodec<KeccakHasher, N> for ReferenceNodeCodec {
let nibble_data = take(input, (nibble_count + (N::NIBBLE_PER_BYTE - 1)) / N::NIBBLE_PER_BYTE)
.ok_or(ReferenceError::BadFormat)?;
let nibble_slice = NibbleSlice::new_offset(nibble_data,
nibble_count % N::NIBBLE_PER_BYTE); // TODO EMCH incorrect for non half padding!
N::nb_padding(nibble_count));
let count = <Compact<u32>>::decode(input).ok_or(ReferenceError::BadFormat)?.0 as usize;
Ok(Node::Extension(nibble_slice, take(input, count).ok_or(ReferenceError::BadFormat)?))
}
NodeHeader::Leaf(nibble_count) => {
let nibble_data = take(input, (nibble_count + (N::NIBBLE_PER_BYTE - 1)) / N::NIBBLE_PER_BYTE)
.ok_or(ReferenceError::BadFormat)?;
let nibble_slice = NibbleSlice::new_offset(nibble_data,
nibble_count % N::NIBBLE_PER_BYTE); // TODO EMCH incorrect for non half padding!
N::nb_padding(nibble_count));
let count = <Compact<u32>>::decode(input).ok_or(ReferenceError::BadFormat)?.0 as usize;
Ok(Node::Leaf(nibble_slice, take(input, count).ok_or(ReferenceError::BadFormat)?))
}
Expand Down Expand Up @@ -700,13 +700,13 @@ impl<N: NibbleOps> NodeCodec<KeccakHasher, N> for ReferenceNodeCodecNoExt {
NodeHeaderNoExt::Null => Ok(Node::Empty),
NodeHeaderNoExt::Branch(has_value, nibble_count) => {
let nb_nibble_hpe = nibble_count % N::NIBBLE_PER_BYTE;
if nb_nibble_hpe > 0 && input[0] & !N::PADDING_BITMASK[nb_nibble_hpe - 1] != 0 {
if nb_nibble_hpe > 0 && input[0] & !N::PADDING_BITMASK[nb_nibble_hpe].0 != 0 {
return Err(ReferenceError::BadFormat);
}
let nibble_data = take(input, (nibble_count + (N::NIBBLE_PER_BYTE - 1)) / N::NIBBLE_PER_BYTE)
.ok_or(ReferenceError::BadFormat)?;
let nibble_slice = NibbleSlice::new_offset(nibble_data,
nibble_count % N::NIBBLE_PER_BYTE); // TODO EMCH incorrect for non half padding!
N::nb_padding(nibble_count));
let bitmap = u16::decode(input).ok_or(ReferenceError::BadFormat)?;
let value = if has_value {
let count = <Compact<u32>>::decode(input).ok_or(ReferenceError::BadFormat)?.0 as usize;
Expand All @@ -727,13 +727,13 @@ impl<N: NibbleOps> NodeCodec<KeccakHasher, N> for ReferenceNodeCodecNoExt {
}
NodeHeaderNoExt::Leaf(nibble_count) => {
let nb_nibble_hpe = nibble_count % N::NIBBLE_PER_BYTE;
if nb_nibble_hpe > 0 && input[0] & !N::PADDING_BITMASK[nb_nibble_hpe - 1] != 0 {
if nb_nibble_hpe > 0 && input[0] & !N::PADDING_BITMASK[nb_nibble_hpe].0 != 0 {
return Err(ReferenceError::BadFormat);
}
let nibble_data = take(input, (nibble_count + (N::NIBBLE_PER_BYTE - 1)) / N::NIBBLE_PER_BYTE)
.ok_or(ReferenceError::BadFormat)?;
let nibble_slice = NibbleSlice::new_offset(nibble_data,
nibble_count % N::NIBBLE_PER_BYTE); // TODO EMCH incorrect for non half padding!
N::nb_padding(nibble_count));
let count = <Compact<u32>>::decode(input).ok_or(ReferenceError::BadFormat)?.0 as usize;
Ok(Node::Leaf(nibble_slice, take(input, count).ok_or(ReferenceError::BadFormat)?))
}
Expand Down Expand Up @@ -810,7 +810,7 @@ pub fn compare_impl<X : hash_db::HashDB<KeccakHasher,DBValue> + Eq> (
) {
let root_new = {
let mut cb = TrieBuilder::new(&mut hashdb);
trie_visit::<KeccakHasher, ReferenceNodeCodec, NibblePreHalf, _, _, _, _>(data.clone().into_iter(), &mut cb);
trie_visit::<KeccakHasher, ReferenceNodeCodec, NibbleHalf, _, _, _, _>(data.clone().into_iter(), &mut cb);
cb.root.unwrap_or(Default::default())
};
let root = {
Expand Down Expand Up @@ -852,7 +852,7 @@ pub fn compare_root(
) {
let root_new = {
let mut cb = TrieRoot::<KeccakHasher, _>::default();
trie_visit::<KeccakHasher, ReferenceNodeCodec, NibblePreHalf, _, _, _, _>(data.clone().into_iter(), &mut cb);
trie_visit::<KeccakHasher, ReferenceNodeCodec, NibbleHalf, _, _, _, _>(data.clone().into_iter(), &mut cb);
cb.root.unwrap_or(Default::default())
};
let root = {
Expand All @@ -872,7 +872,7 @@ pub fn compare_unhashed(
) {
let root_new = {
let mut cb = trie_db::TrieRootUnhashed::<KeccakHasher>::default();
trie_visit::<KeccakHasher, ReferenceNodeCodec, NibblePreHalf, _, _, _, _>(data.clone().into_iter(), &mut cb);
trie_visit::<KeccakHasher, ReferenceNodeCodec, NibbleHalf, _, _, _, _>(data.clone().into_iter(), &mut cb);
cb.root.unwrap_or(Default::default())
};
let root = ref_trie_root_unhashed(data);
Expand All @@ -885,8 +885,7 @@ pub fn compare_unhashed_no_ext(
) {
let root_new = {
let mut cb = trie_db::TrieRootUnhashed::<KeccakHasher>::default();
// TODO EMCH siwtch this to post and implement post on ref_trie_root_unhashed_no_ext!!
trie_visit_no_ext::<KeccakHasher, ReferenceNodeCodecNoExt, NibblePreHalf, _, _, _, _>(data.clone().into_iter(), &mut cb);
trie_visit_no_ext::<KeccakHasher, ReferenceNodeCodecNoExt, NibbleHalf, _, _, _, _>(data.clone().into_iter(), &mut cb);
cb.root.unwrap_or(Default::default())
};
let root = ref_trie_root_unhashed_no_ext(data);
Expand All @@ -905,7 +904,7 @@ pub fn calc_root<I,A,B>(
B: AsRef<[u8]> + fmt::Debug,
{
let mut cb = TrieRoot::<KeccakHasher, _>::default();
trie_visit::<KeccakHasher, ReferenceNodeCodec, NibblePreHalf, _, _, _, _>(data.into_iter(), &mut cb);
trie_visit::<KeccakHasher, ReferenceNodeCodec, NibbleHalf, _, _, _, _>(data.into_iter(), &mut cb);
cb.root.unwrap_or(Default::default())
}

Expand All @@ -918,7 +917,7 @@ pub fn calc_root_no_ext<I,A,B>(
B: AsRef<[u8]> + fmt::Debug,
{
let mut cb = TrieRoot::<KeccakHasher, _>::default();
trie_db::trie_visit_no_ext::<KeccakHasher, ReferenceNodeCodecNoExt, NibblePreHalf, _, _, _, _>(data.into_iter(), &mut cb);
trie_db::trie_visit_no_ext::<KeccakHasher, ReferenceNodeCodecNoExt, NibbleHalf, _, _, _, _>(data.into_iter(), &mut cb);
cb.root.unwrap_or(Default::default())
}

Expand All @@ -929,7 +928,7 @@ pub fn compare_impl_no_ext(
) {
let root_new = {
let mut cb = TrieBuilder::new(&mut hashdb);
trie_visit_no_ext::<KeccakHasher, ReferenceNodeCodecNoExt, NibblePreHalf, _, _, _, _>(data.clone().into_iter(), &mut cb);
trie_visit_no_ext::<KeccakHasher, ReferenceNodeCodecNoExt, NibbleHalf, _, _, _, _>(data.clone().into_iter(), &mut cb);
cb.root.unwrap_or(Default::default())
};
let root = {
Expand Down Expand Up @@ -985,7 +984,7 @@ pub fn compare_impl_no_ext_unordered(
};
let root_new = {
let mut cb = TrieBuilder::new(&mut hashdb);
trie_visit_no_ext::<KeccakHasher, ReferenceNodeCodecNoExt, NibblePreHalf, _, _, _, _>(b_map.into_iter(), &mut cb);
trie_visit_no_ext::<KeccakHasher, ReferenceNodeCodecNoExt, NibbleHalf, _, _, _, _>(b_map.into_iter(), &mut cb);
cb.root.unwrap_or(Default::default())
};

Expand Down Expand Up @@ -1052,13 +1051,13 @@ pub fn compare_no_ext_insert_remove(
assert_eq!(*t.root(), calc_root_no_ext(data2));
}

// TODO to big is currently truncate, keep it that way??
// TODO EMCH to big is currently truncate, keep it that way?? wait for final spec
#[test]
fn too_big_nibble_len () {
// + 1 for 0 added byte of nibble encode
let input = vec![0u8; (s_cst::NIBBLE_SIZE_BOUND as usize + 1) / 2 + 1];
let enc = <ReferenceNodeCodecNoExt as NodeCodec<_, NibblePreHalf>>::leaf_node((None,&input), (&[1]));
let dec = <ReferenceNodeCodecNoExt as NodeCodec<_, NibblePreHalf>>::decode(&enc).unwrap();
let enc = <ReferenceNodeCodecNoExt as NodeCodec<_, NibbleHalf>>::leaf_node((None,&input), (&[1]));
let dec = <ReferenceNodeCodecNoExt as NodeCodec<_, NibbleHalf>>::decode(&enc).unwrap();
let o_sl = if let Node::Leaf(sl,_) = dec {
Some(sl)
} else { None };
Expand Down
4 changes: 2 additions & 2 deletions trie-db/src/iter_build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ where

if let Some(nkeyix) = nkey {
let pr = NibbleSlice::<N>::new_offset(&key_branch.as_ref()[..], nkeyix.0);
let nib = pr.range_iter(nkeyix.1);
let nib = pr.right_range_iter(nkeyix.1);
let encoded = C::ext_node(nib, nkeyix.1, branch_hash);
let h = cb_ext.process(pr.left(), encoded, is_root);
h
Expand All @@ -256,7 +256,7 @@ where
let pr = NibbleSlice::<N>::new_offset(&key_branch.as_ref()[..],nkeyix.0);
let encoded = C::branch_node_nibbled(
// warn direct use of default empty nible encoded: NibbleSlice::new_offset(&[],0).encoded(false);
pr.range_iter(nkeyix.1),
pr.right_range_iter(nkeyix.1),
nkeyix.1,
self.0[branch_d].0.iter(), v.as_ref().map(|v|v.as_ref()));
self.reset_depth(branch_d);
Expand Down
2 changes: 1 addition & 1 deletion trie-db/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ pub use self::fatdb::{FatDB, FatDBIterator};
pub use self::fatdbmut::FatDBMut;
pub use self::recorder::{Recorder, Record};
pub use self::lookup::Lookup;
pub use self::nibbleslice::{NibbleSlice, NibbleOps, NibblePreHalf};
pub use self::nibbleslice::{NibbleSlice, NibbleOps, NibbleHalf};
pub use node_codec::{NodeCodec, Partial};
pub use iter_build::{trie_visit, trie_visit_no_ext, ProcessEncodedNode, TrieBuilder, TrieRoot, TrieRootUnhashed};

Expand Down
Loading