pub struct StarkTranscript<EF, L>{
pub instance_shapes: InstanceShapes,
pub instance_challenge: EF,
pub main_commit: <L as Lmcs>::Commitment,
pub randomness: Vec<EF>,
pub aux_commit: <L as Lmcs>::Commitment,
pub all_aux_values: Vec<Vec<EF>>,
pub alpha: EF,
pub beta: EF,
pub quotient_commit: <L as Lmcs>::Commitment,
pub z: EF,
pub pcs_transcript: PcsTranscript<EF, L>,
}Expand description
Structured transcript view for the full lifted STARK protocol.
Captures instance shape metadata, commitments, sampled challenges, the OOD
evaluation point, and the PCS sub-transcript. Constructed via
from_proof, which mirrors steps 0–9 of
verify_multi but skips the constraint
check.
Fields§
§instance_shapes: InstanceShapesPer-instance shape metadata. Validated and observed into the challenger
by from_proof.
instance_challenge: EFThrowaway challenge squeezed right after observing the instance shapes, used to clear the challenger’s absorb buffer so that later sampled challenges depend on the full shape metadata regardless of sponge state.
main_commit: <L as Lmcs>::CommitmentMain trace commitment.
randomness: Vec<EF>Randomness sampled for auxiliary traces.
aux_commit: <L as Lmcs>::CommitmentAuxiliary trace commitment.
all_aux_values: Vec<Vec<EF>>Aux values per AIR instance, observed into the transcript after the aux commitment.
alpha: EFConstraint folding challenge alpha.
beta: EFAIR accumulation challenge beta.
quotient_commit: <L as Lmcs>::CommitmentQuotient polynomial commitment.
z: EFOut-of-domain evaluation point z.
pcs_transcript: PcsTranscript<EF, L>PCS sub-transcript (DEEP evals, FRI rounds, query openings).
Implementations§
Source§impl<EF, L> StarkTranscript<EF, L>
impl<EF, L> StarkTranscript<EF, L>
Sourcepub fn from_proof<A, SC>(
config: &SC,
instances: &[(&A, AirInstance<'_, <L as Lmcs>::F>)],
proof: &StarkProof<<L as Lmcs>::F, EF, SC>,
challenger: <SC as StarkConfig<<L as Lmcs>::F, EF>>::Challenger,
) -> Result<(StarkTranscript<EF, L>, <<SC as StarkConfig<<L as Lmcs>::F, EF>>::Challenger as CanFinalizeDigest>::Digest), VerifierError>
pub fn from_proof<A, SC>( config: &SC, instances: &[(&A, AirInstance<'_, <L as Lmcs>::F>)], proof: &StarkProof<<L as Lmcs>::F, EF, SC>, challenger: <SC as StarkConfig<<L as Lmcs>::F, EF>>::Challenger, ) -> Result<(StarkTranscript<EF, L>, <<SC as StarkConfig<<L as Lmcs>::F, EF>>::Challenger as CanFinalizeDigest>::Digest), VerifierError>
Parse a STARK transcript from proof data and a challenger.
Mirrors steps 0–9 of verify_multi:
0. Validate instance shapes, then observe log trace heights into the challenger and squeeze
a throwaway instance_challenge to clear the absorb buffer
- Receive main trace commitment
- Sample randomness for auxiliary traces
- Receive auxiliary trace commitment
- Receive aux values (per AIR instance)
- Sample constraint folding alpha and accumulation beta
- Receive quotient commitment
- Sample OOD point z
- Build commitment widths for PCS
- Parse PCS sub-transcript via
PcsTranscript::from_verifier_channel
Does not verify constraints or check the quotient identity. Finalizes the transcript and returns the digest alongside the parsed view.
Auto Trait Implementations§
impl<EF, L> Freeze for StarkTranscript<EF, L>
impl<EF, L> RefUnwindSafe for StarkTranscript<EF, L>where
<L as Lmcs>::F: for<'de> Sized + RefUnwindSafe,
EF: RefUnwindSafe,
<L as Lmcs>::Commitment: RefUnwindSafe,
<L as Lmcs>::BatchProof: RefUnwindSafe,
impl<EF, L> Send for StarkTranscript<EF, L>
impl<EF, L> Sync for StarkTranscript<EF, L>
impl<EF, L> Unpin for StarkTranscript<EF, L>
impl<EF, L> UnsafeUnpin for StarkTranscript<EF, L>where
<L as Lmcs>::F: for<'de> Sized + UnsafeUnpin,
EF: UnsafeUnpin,
<L as Lmcs>::Commitment: UnsafeUnpin,
impl<EF, L> UnwindSafe for StarkTranscript<EF, L>where
<L as Lmcs>::F: for<'de> Sized + UnwindSafe,
EF: UnwindSafe,
<L as Lmcs>::Commitment: UnwindSafe,
<L as Lmcs>::BatchProof: UnwindSafe,
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> 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