pub struct CheckpointChainFrontier { /* private fields */ }Expand description
Append-only frontier of the checkpoint-chain Merkle tree.
Holds one root per perfect subtree covering the leaves so far, largest first, which is enough to compute the RFC 6962 tree head and to extend it. Appending is amortized O(1) hashes and the root costs O(log n), so a long-lived writer never rehashes the whole chain to issue one checkpoint.
Implementations§
Source§impl CheckpointChainFrontier
impl CheckpointChainFrontier
Sourcepub fn from_leaves(chain_leaf_hashes: &[Hash]) -> Self
pub fn from_leaves(chain_leaf_hashes: &[Hash]) -> Self
Rebuild from every chain leaf in order. O(n); used once when a writer seeds or resyncs its head, never on the per-checkpoint path.
Sourcepub fn leaf_count(&self) -> u64
pub fn leaf_count(&self) -> u64
Number of chain leaves covered.
Trait Implementations§
Source§impl Clone for CheckpointChainFrontier
impl Clone for CheckpointChainFrontier
Source§fn clone(&self) -> CheckpointChainFrontier
fn clone(&self) -> CheckpointChainFrontier
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CheckpointChainFrontier
impl Debug for CheckpointChainFrontier
Source§impl Default for CheckpointChainFrontier
impl Default for CheckpointChainFrontier
Source§fn default() -> CheckpointChainFrontier
fn default() -> CheckpointChainFrontier
Returns the “default value” for a type. Read more
impl Eq for CheckpointChainFrontier
Source§impl PartialEq for CheckpointChainFrontier
impl PartialEq for CheckpointChainFrontier
impl StructuralPartialEq for CheckpointChainFrontier
Auto Trait Implementations§
impl Freeze for CheckpointChainFrontier
impl RefUnwindSafe for CheckpointChainFrontier
impl Send for CheckpointChainFrontier
impl Sync for CheckpointChainFrontier
impl Unpin for CheckpointChainFrontier
impl UnsafeUnpin for CheckpointChainFrontier
impl UnwindSafe for CheckpointChainFrontier
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more