Struct fuel_merkle::sum::MerkleTree
source · [−]pub struct MerkleTree<StorageType> { /* private fields */ }
Expand description
The Binary Merkle Sum Tree is an extension to the existing Binary MerkleTree
.
A node (leaf or internal node) in the tree is defined as having:
- a fee (u64, 8 bytes)
- a digest (array of bytes)
Therefore, a node’s data is now a data pair formed by (fee, digest)
. The data pair of a node
with two or more leaves is defined as:
(left.fee + right.fee, hash(0x01 ++ left.fee ++ left.digest ++ right.fee ++ right.digest))
This is in contrast to the Binary Merkle Tree node, where a node has only a digest.
See the specification for more details.
Details
When joining subtrees a
and b
, the joined subtree is now defined as:
fee: a.fee + b.fee data: node_sum(a.fee, a.data, b.fee, b.data)
where node_sum
is defined as the hash function described in the data pair description above.
Implementations
sourceimpl<StorageType, StorageError> MerkleTree<StorageType>where
StorageType: StorageMutate<NodesTable, Error = StorageError>,
StorageError: Debug + Clone + 'static,
impl<StorageType, StorageError> MerkleTree<StorageType>where
StorageType: StorageMutate<NodesTable, Error = StorageError>,
StorageError: Debug + Clone + 'static,
Auto Trait Implementations
impl<StorageType> RefUnwindSafe for MerkleTree<StorageType>where
StorageType: RefUnwindSafe,
impl<StorageType> Send for MerkleTree<StorageType>where
StorageType: Send,
impl<StorageType> Sync for MerkleTree<StorageType>where
StorageType: Sync,
impl<StorageType> Unpin for MerkleTree<StorageType>where
StorageType: Unpin,
impl<StorageType> UnwindSafe for MerkleTree<StorageType>where
StorageType: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more