pub struct CheckpointConsistencyProof {Show 15 fields
pub schema: String,
pub log_id: String,
pub from_checkpoint_seq: u64,
pub to_checkpoint_seq: u64,
pub from_checkpoint_sha256: String,
pub to_checkpoint_sha256: String,
pub from_log_tree_size: u64,
pub to_log_tree_size: u64,
pub appended_entry_start_seq: u64,
pub appended_entry_end_seq: u64,
pub from_chain_root: Option<Hash>,
pub to_chain_root: Option<Hash>,
pub chain_proof_hashes: Vec<Hash>,
pub from_leaf_inclusion: Option<MerkleProof>,
pub to_leaf_inclusion: Option<MerkleProof>,
}Expand description
A Merkle consistency proof between two checkpoint-chain commitments.
Proves, with RFC 6962 node hashes, that the checkpoint chain committed by
to_chain_root is an append-only extension of the chain committed by
from_chain_root. The chain tree has one leaf per checkpoint, so the tree
sizes are the checkpoint sequences themselves.
Fields§
§schema: StringSchema identifier for consistency proof records.
log_id: StringLocal log identity derived from the checkpoint signing key.
from_checkpoint_seq: u64Earlier checkpoint sequence in the proven prefix chain.
to_checkpoint_seq: u64Later checkpoint sequence in the proven prefix chain.
from_checkpoint_sha256: StringCanonical SHA-256 digest of the earlier checkpoint body.
to_checkpoint_sha256: StringCanonical SHA-256 digest of the later checkpoint body.
from_log_tree_size: u64Cumulative log size before the append.
to_log_tree_size: u64Cumulative log size after the append.
appended_entry_start_seq: u64First entry sequence appended by the later checkpoint.
appended_entry_end_seq: u64Last entry sequence appended by the later checkpoint.
from_chain_root: Option<Hash>Signed chain commitment of the earlier checkpoint. Absent on legacy v1 metadata-only records.
to_chain_root: Option<Hash>Signed chain commitment of the later checkpoint. Absent on legacy v1 metadata-only records.
chain_proof_hashes: Vec<Hash>RFC 6962 consistency path from the earlier chain tree to the later chain tree.
from_leaf_inclusion: Option<MerkleProof>Inclusion proof binding the earlier checkpoint’s own chain leaf to
from_chain_root at the last position of that tree.
to_leaf_inclusion: Option<MerkleProof>Inclusion proof binding the later checkpoint’s own chain leaf to
to_chain_root at the last position. Without both endpoints bound, a
key holder could commit chain trees whose leaves are unrelated to the
bodies the proof names and still produce a verifying consistency path.
Trait Implementations§
Source§impl Clone for CheckpointConsistencyProof
impl Clone for CheckpointConsistencyProof
Source§fn clone(&self) -> CheckpointConsistencyProof
fn clone(&self) -> CheckpointConsistencyProof
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CheckpointConsistencyProof
impl Debug for CheckpointConsistencyProof
Source§impl<'de> Deserialize<'de> for CheckpointConsistencyProof
impl<'de> Deserialize<'de> for CheckpointConsistencyProof
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for CheckpointConsistencyProof
impl StructuralPartialEq for CheckpointConsistencyProof
Auto Trait Implementations§
impl Freeze for CheckpointConsistencyProof
impl RefUnwindSafe for CheckpointConsistencyProof
impl Send for CheckpointConsistencyProof
impl Sync for CheckpointConsistencyProof
impl Unpin for CheckpointConsistencyProof
impl UnsafeUnpin for CheckpointConsistencyProof
impl UnwindSafe for CheckpointConsistencyProof
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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
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>
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>
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