pub enum BackendId {
UnauditedBlake3Standin,
RiscZero,
Unknown(u32),
}Expand description
Identifies which proof backend produced (and must verify) a
ProofEnvelope.
This is a closed registry: BackendId::Unknown is the only variant
that accepts arbitrary numeric ids, and it is the only variant that
ProofEnvelope::validate_backend ever refuses. Every other variant is
a backend this crate knows about by construction. Registering a new
backend means adding a new named variant here — not widening what
Unknown accepts.
Ratified decision D1 (2026-07-02, see GAP-REGISTRY.md VCG-001) selects
RISC Zero as the production backend family. Lane VCG-001b registers the
BackendId::RiscZero variant and a fail-closed verifier seam for it
(see RiscZeroReceiptVerifier and ProofEnvelope::verify) — but does
not vendor the risc0-zkvm crate or wire an actual cryptographic
verify call. Per D1, the audited risc0 proving/verification toolchain is
itself a reviewed-dependency supply-chain event that “carries the
external audit budget”; adding it is out of scope until that review
happens. Until then, BackendId::RiscZero is registered as
AuditStatus::PendingExternalReview and always fails closed at
verify-time.
Variants§
UnauditedBlake3Standin
The crate’s existing unaudited blake3 “stand-in” cryptography
(circuit.rs / snark.rs / stark.rs / zkml.rs). Gated behind
the unaudited-pedagogical-proofs feature at verification time.
RiscZero
RISC Zero zkVM execution-receipt backend (ratified decision D1,
2026-07-02, GAP-REGISTRY.md VCG-001). This variant exists so
envelopes can name the selected production backend family — it is
the integration seam, not a working verifier. No external
cryptographic review of the risc0 verify path has happened yet, so
this backend is registered under AuditStatus::PendingExternalReview
(never AuditStatus::ProductionReviewed) and
ProofEnvelope::verify always fails closed for it. See
RiscZeroReceiptVerifier for exactly where the audited risc0
verify call plugs in once review lands.
Unknown(u32)
An unrecognized or future backend id. Always fails closed in
ProofEnvelope::validate_backend — this crate refuses to treat an
id it does not recognize as valid, regardless of the numeric value.
Implementations§
Source§impl BackendId
impl BackendId
Sourcepub const fn is_registered(&self) -> bool
pub const fn is_registered(&self) -> bool
Returns true for any of the crate’s registered known backend
variants (i.e. not BackendId::Unknown).
Trait Implementations§
impl Copy for BackendId
Source§impl<'de> Deserialize<'de> for BackendId
impl<'de> Deserialize<'de> for BackendId
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 BackendId
impl StructuralPartialEq for BackendId
Auto Trait Implementations§
impl Freeze for BackendId
impl RefUnwindSafe for BackendId
impl Send for BackendId
impl Sync for BackendId
impl Unpin for BackendId
impl UnsafeUnpin for BackendId
impl UnwindSafe for BackendId
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
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§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