pub struct Bootstrap<P: PublicKey, D: Directory<P> = Unit> {
pub epoch: Epoch,
pub participants: Participants<P>,
pub directory: D,
}Expand description
The weakly subjective checkpoint a joining node bootstraps from.
Fields§
§epoch: EpochEpoch whose participant snapshot is Bootstrap::participants.
Latest-finalization replies below this epoch are ignored, so the discovered floor is never older than the configured trust point.
participants: Participants<P>The complete participant snapshot of Bootstrap::epoch.
Discovery solicits and samples f + 1 of the snapshot’s dealers,
which are the epoch’s active committee (its share holders and
certificate signers), so the dealers must be that complete committee:
a subset mis-derives f. See the module docs for the trust model and
the budgets on faulty, stale, and unreachable members.
The snapshot must match the epoch’s canonical Participants: when
discovery begins, the actor tracks the snapshot’s
tracked_peers at the epoch’s own
peer-set ID, and all peers must track the same set contents at the
same ID. The orchestrator tracks the identical contents if it later
enters the bootstrap epoch, so the duplicate registration is benign.
directory: DTransport directory for Bootstrap::participants, seeded alongside
the checkpoint.
Discovery runs before any application state exists, so the directory is part of the weak-subjectivity configuration rather than resolved from a registry.
Trait Implementations§
impl<P: Eq + PublicKey, D: Eq + Directory<P>> Eq for Bootstrap<P, D>
impl<P: PartialEq + PublicKey, D: PartialEq + Directory<P>> StructuralPartialEq for Bootstrap<P, D>
Auto Trait Implementations§
impl<P, D> Freeze for Bootstrap<P, D>
impl<P, D> RefUnwindSafe for Bootstrap<P, D>
impl<P, D> Send for Bootstrap<P, D>where
Participants<P>: Send,
impl<P, D> Sync for Bootstrap<P, D>where
Participants<P>: Sync,
impl<P, D> Unpin for Bootstrap<P, D>
impl<P, D> UnsafeUnpin for Bootstrap<P, D>
impl<P, D> UnwindSafe for Bootstrap<P, D>
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> 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§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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