Expand description
Trie interface and implementation.
Re-exports§
pub use self::recorder::Recorder;
pub use self::sectriedb::SecTrieDB;
pub use self::sectriedbmut::SecTrieDBMut;
pub use self::triedb::TrieDB;
pub use self::triedb::TrieDBBuilder;
pub use self::triedb::TrieDBIterator;
pub use self::triedb::TrieDBKeyIterator;
pub use self::triedbmut::ChildReference;
pub use self::triedbmut::TrieDBMut;
pub use self::triedbmut::TrieDBMutBuilder;
pub use self::triedbmut::Value;
Modules§
- nibble_
ops - Utility methods to work on radix 16 nibble.
- node
- proof
- Generation and verification of compact proofs for Merkle-Patricia tries.
- recorder
- Trie query recorder.
- sectriedb
- sectriedbmut
- triedb
- triedbmut
- In-memory trie representation.
Structs§
- Bytes
- A container for storing bytes.
- Bytes
Weak - A weak reference of
Bytes
. - FatDB
- A
Trie
implementation which hashes keys and uses a genericHashDB
backing database. Additionaly it stores inserted hash-key mappings for later retrieval. - FatDB
Iterator - Iterator over inserted pairs of key values.
- FatDB
Mut - A mutable
Trie
implementation which hashes keys and uses a genericHashDB
backing database. Additionaly it stores inserted hash-key mappings for later retrieval. - Lookup
- Trie lookup helper object.
- Nibble
Slice - Nibble-orientated view onto byte-slice, allowing nibble-precision offsets.
- Nibble
Vec - Owning, nibble-oriented byte vector. Counterpart to
NibbleSlice
. Nibbles are always left aligned, so making aNibbleVec
from aNibbleSlice
can get costy. - Trie
Builder - Get trie root and insert visited node in a hash_db.
As for all
ProcessEncodedNode
implementation, it is only for full trie parsing (not existing trie). - TrieDB
Node Double Ended Iterator - Double ended iterator for going through all nodes in the trie in pre-order traversal order.
- TrieDB
Node Iterator - Iterator for going through all nodes in the trie in pre-order traversal order.
- TrieDB
RawIterator - Iterator for going through all nodes in the trie in pre-order traversal order.
- Trie
Factory - Trie factory.
- Trie
Root - Calculate the trie root of the trie.
- Trie
Root Print - Calculate the trie root of the trie. Print a debug trace.
- Trie
Root Unhashed - Get the trie root node encoding.
Enums§
- Cached
Value - A value as cached by the
TrieCache
. - Merkle
Value - Either the
hash
orvalue
of a node depending on its size. - Recorded
ForKey - Result of
TrieRecorder::trie_nodes_recorded_for_key
. - Trie
Access - Used to report the trie access to the
TrieRecorder
. - Trie
Error - Trie Errors.
- Trie
Kinds - All different kinds of tries. This is used to prevent a heap allocation for every created trie.
- Trie
Spec - Trie types
Traits§
- HashDB
- Trait modelling datastore keyed by a hash defined by the
Hasher
. - HashDB
Ref - Trait for immutable reference of HashDB.
- Hasher
- Trait describing an object that can hash a slice of bytes. Used to abstract
other types over the hashing algorithm. Defines a single
hash
method and anOut
associated type with the necessary bounds. - Node
Codec - Trait for trie node encoding/decoding. Uses a type parameter to allow registering positions without colling decode plan.
- Process
Encoded Node - Visitor trait to implement when using
trie_visit
. - Query
- Description of what kind of query will be made to the trie.
- Trie
- A key-value datastore implemented as a database-backed modified Merkle tree.
- Trie
Cache - A cache that can be used to speed-up certain operations when accessing the trie.
- Trie
Configuration - This trait associates a trie definition with preferred methods. It also contains own default implementations and can be used to allow switching implementation.
- Trie
Double Ended Iterator - Extending the
TrieIterator
trait withDoubleEndedIterator
trait. - Trie
Iterator - A trie iterator that also supports random access (
seek()
). - Trie
Layout - Trait with definition of trie layout. Contains all associated trait needed for a trie definition or implementation.
- TrieMut
- A key-value datastore implemented as a database-backed modified Merkle tree.
- Trie
Recorder - A trie recorder that can be used to record all kind of
TrieAccess
’s.
Functions§
- decode_
compact - Reconstructs a partial trie DB from a compact representation. The encoding is a vector of
mutated trie nodes with those child references omitted. The decode function reads them in order
from the given slice, reconstructing the full nodes and inserting them into the given
HashDB
. It stops after fully constructing one partial trie and returns the root hash and the number of nodes read. If an error occurs during decoding, there are no guarantees about which entries were or were not added to the DB. - decode_
compact_ from_ iter - Variant of ‘decode_compact’ that accept an iterator of encoded nodes as input.
- encode_
compact - Generates a compact representation of the partial trie stored in the given DB. The encoding is a vector of mutated trie nodes with those child references omitted. The mutated trie nodes are listed in pre-order traversal order so that the full nodes can be efficiently reconstructed recursively.
- trie_
visit - Function visiting trie from key value inputs with a
ProccessEncodedNode
callback. This is the main entry point of this module. Calls to each node occurs ordered by byte key value but with longest keys first (from node to branch to root), this differs from standard byte array ordering a bit.
Type Aliases§
- CError
- Alias accessor to
NodeCodec
associatedError
type from aTrieLayout
. - DBValue
- Database value
- Partial
- Representation of a nible slice (right aligned). It contains a right aligned padded first byte (first pair element is the number of nibbles (0 to max nb nibble - 1), second pair element is the padded nibble), and a slice over the remaining bytes.
- Result
- Trie result type.
Boxed to avoid copying around extra space for the
Hasher
sOut
on successful queries. - Trie
Hash - Alias accessor to hasher hash output type from a
TrieLayout
. - Trie
Item - Trie-Item type used for iterators over trie data.
- Trie
KeyItem - Trie-Item type used for iterators over trie key only.