Expand description
Lifted STARK prover and verifier (LMCS-based).
This crate is the main facade for the lifted STARK protocol. It re-exports types from sub-crates under namespaced modules so consumers can depend on just this crate.
§Modules
proof:proof::StarkProof,proof::StarkDigest,proof::StarkOutput,proof::StarkTranscriptair: AIR traits, instance/witness types, and upstreamp3-airre-exportsprover:prover::prove_single/prover::prove_multientry pointsverifier:verifier::verify_single/verifier::verify_multientry pointsfri: PCS parameters, transcript types, and error types (DEEP + FRI)lmcs: LMCS configuration, proof types, and MMCS compatibilitytranscript: Fiat-Shamir channels and transcript datahasher: Stateful hasher primitives for LMCS construction
§AIR Trust Model
The lifted STARK has three trust domains:
-
AIR = trusted —
air::LiftedAirimplementations are correct application code. It is the AIR implementer’s responsibility to satisfy the contract below.air::LiftedAir::validatechecks the statically-verifiable subset. -
Instance = validated — The prover validates that its witness matches the AIR spec. The verifier validates instance metadata. Both return structured errors.
-
Proof = untrusted — Transcript data is verified cryptographically (PCS errors, constraint mismatch, etc.).
§Validated properties
These are checked by air::LiftedAir::validate
and air::AirInstance::validate, and enforced
by both prover and verifier before proceeding:
- No preprocessed trace — the lifted protocol does not support them.
- Positive aux width — every AIR must have an auxiliary trace.
- Periodic columns — each has positive, power-of-two length ≤ trace height.
- Constraint degree —
log_quotient_degree() ≤ log_blowup. - Instance dimensions — trace width, public values length, var-len public inputs count, and trace height (power of two) all match the AIR specification.
§Unchecked trust assumptions
These cannot be verified statically and are the AIR implementer’s responsibility:
- Window size — Only transition window size 2.
- Deterministic constraints —
eval()emits the same number and types of constraints regardless of builder implementation. - Consistent aux builder —
AuxBuilder::build_aux_tracereturns width =aux_width(), height = main trace height, and exactlynum_aux_values()values. (The prover asserts these at runtime as a defense-in-depth sanity check.) - Sound
reduced_aux_values— Returns correct bus contributions for valid inputs.
Modules§
- air
- AIR traits, instance/witness types, and upstream
p3-airre-exports. - coset
- Domain/coset operations for lifted traces. Lifted coset domain abstraction with selector and vanishing computation.
- debug
- Debug constraint checker for lifted AIRs. Debug constraint checker for lifted AIRs.
- fri
- PCS parameter types, transcript views, and error types for DEEP + FRI.
- hasher
- Stateful hasher primitives for LMCS construction.
- lmcs
- LMCS configuration, tree types, and proof structures.
- proof
- STARK proof types and structured transcript.
- prover
- Lifted STARK prover.
- transcript
- Fiat-Shamir transcript channels and data types.
- verifier
- Lifted STARK verifier.
Structs§
- Generic
Stark Config - Generic
StarkConfigimplementation.
Traits§
- Stark
Config - Lifted STARK configuration.