pub(crate) struct RecoveredSsaTail {
ssa_index: SsaIndex,
num_polys: usize,
counters: Arc<RecoveryCounters>,
surplus_budget: SurplusBudget,
}Expand description
Minimal state retained after cryptographic recovery so buffered, already-paid SURBs can finish draining.
There is no polynomial, commitment, share set, or recovered secret here. The only mutable state is an absolute progress counter and one bounded counter per polynomial. The latter is security-critical: a cycle-wide allowance would let an Entry replay one completed polynomial and spend the surplus budget belonging to every other polynomial.
The polynomial commitment is deliberately not retained, so this path cannot prove that a new evaluation belongs to the recovered polynomial. It therefore grants liveness only, never useful/payment progress, and only from the per-polynomial allowance already included in the cycle’s paid quota. The supervisor independently caps the aggregate at the negotiated full-cycle volume. Those bounds, rather than an authentication claim this compact state cannot make, are what prevent an Entry-selected non-zero evaluation from buying unbounded service.
Fields§
§ssa_index: SsaIndex§num_polys: usize§counters: Arc<RecoveryCounters>§surplus_budget: SurplusBudgetImplementations§
Trait Implementations§
Source§impl Clone for RecoveredSsaTail
impl Clone for RecoveredSsaTail
Source§fn clone(&self) -> RecoveredSsaTail
fn clone(&self) -> RecoveredSsaTail
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for RecoveredSsaTail
impl RefUnwindSafe for RecoveredSsaTail
impl Send for RecoveredSsaTail
impl Sync for RecoveredSsaTail
impl Unpin for RecoveredSsaTail
impl UnsafeUnpin for RecoveredSsaTail
impl UnwindSafe for RecoveredSsaTail
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,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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