pub struct ReadSizedMerkleVerifier { /* private fields */ }Expand description
Verifies reads against a merkle tree.
MerkleVerifier verifies data at a granularity of BLOCK_SIZE. Consequently, it stores one
hash (of size HASH_SIZE) for each data block. This hash storage consumes memory equal to
1/256th of the original data size.
ReadSizedMerkleVerifier optimizes memory usage when reads are always aligned and are
guaranteed to be a multiple of the BLOCK_SIZE. Instead of storing a hash for every
BLOCK_SIZE blocks like MerkleVerifier, it stores only one hash for each read sized
chunk. For example, 128KiB aligned reads would require storing 1/16th the number of hashes.
Implementations§
Source§impl ReadSizedMerkleVerifier
impl ReadSizedMerkleVerifier
Sourcepub fn new(verifier: MerkleVerifier, read_size: usize) -> Result<Self, Status>
pub fn new(verifier: MerkleVerifier, read_size: usize) -> Result<Self, Status>
Constructs a ReadSizedMerkleVerifier from an existing MerkleVerifier and a
read_size.
Returns an error if read_size is not a multiple of BLOCK_SIZE.
Sourcepub fn verify(&self, offset: usize, data: &[u8]) -> Result<(), Status>
pub fn verify(&self, offset: usize, data: &[u8]) -> Result<(), Status>
Verifies a data slice against the Merkle tree, assuming it corresponds to original data
starting at offset.
§Requirements:
- The
offsetmust be aligned to the configured read size granularity. - The length of
datamust be a multiple of the read size, except ifdatarepresents the final chunk of the original data source (in which case it can be shorter).
Trait Implementations§
Source§impl Clone for ReadSizedMerkleVerifier
impl Clone for ReadSizedMerkleVerifier
Source§fn clone(&self) -> ReadSizedMerkleVerifier
fn clone(&self) -> ReadSizedMerkleVerifier
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more