pub struct Evidence<'a> {
pub anchors: &'a [Anchor],
pub verifier: Option<&'a dyn Verifier>,
pub require_signatures: bool,
pub freshness: Option<Freshness>,
}Expand description
What an auditor brought with them.
Hand-written Debug because a Verifier is a trait object with no useful
rendering, and deriving would demand one.
Fields§
§anchors: &'a [Anchor]Every checkpoint issued earlier, from outside this store.
All of them, and that is the point. Each is an independent observation of this log, so each is an independent constraint: the store must prove it extends every one. Holding the store to a single anchor — the largest, say — is exactly the shape an equivocating operator wants, because the fork it feeds a fresh observer is the longest history anybody holds, and the observer that saw the honest prefix is the one whose answer gets dropped.
verifier: Option<&'a dyn Verifier>The key the records should carry.
require_signatures: boolWhether an unsigned record is a failure.
Off by default: history written before signing was configured is legitimately unsigned, and an auditor who does not know that would read a wall of failures for a plane that is fine.
freshness: Option<Freshness>The auditor’s clock and maximum age, against which each witness key’s
latest signed timestamp is judged. None judges nothing.
Trait Implementations§
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for Evidence<'a>
impl<'a> !UnwindSafe for Evidence<'a>
impl<'a> Freeze for Evidence<'a>
impl<'a> Send for Evidence<'a>
impl<'a> Sync for Evidence<'a>
impl<'a> Unpin for Evidence<'a>
impl<'a> UnsafeUnpin for Evidence<'a>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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