Struct fuel_merkle::sum::MerkleTree
source · pub struct MerkleTree<TableType, 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§
source§impl<TableType, StorageType> MerkleTree<TableType, StorageType>
impl<TableType, StorageType> MerkleTree<TableType, StorageType>
pub const fn empty_root() -> (u64, Bytes32)
source§impl<TableType, StorageType, StorageError> MerkleTree<TableType, StorageType>where
TableType: Mappable<Key = Bytes32, Value = Node, OwnedValue = Node>,
StorageType: StorageMutate<TableType, Error = StorageError>,
impl<TableType, StorageType, StorageError> MerkleTree<TableType, StorageType>where TableType: Mappable<Key = Bytes32, Value = Node, OwnedValue = Node>, StorageType: StorageMutate<TableType, Error = StorageError>,
Auto Trait Implementations§
impl<TableType, StorageType> RefUnwindSafe for MerkleTree<TableType, StorageType>where StorageType: RefUnwindSafe, TableType: RefUnwindSafe,
impl<TableType, StorageType> Send for MerkleTree<TableType, StorageType>where StorageType: Send, TableType: Send,
impl<TableType, StorageType> Sync for MerkleTree<TableType, StorageType>where StorageType: Sync, TableType: Sync,
impl<TableType, StorageType> Unpin for MerkleTree<TableType, StorageType>where StorageType: Unpin, TableType: Unpin,
impl<TableType, StorageType> UnwindSafe for MerkleTree<TableType, StorageType>where StorageType: UnwindSafe, TableType: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more