Skip to main content

lib_q_plonky_batch_stark/
lib.rs

1//! Batch STARK prover and verifier (multiple AIR instances, shared LogUp).
2//!
3//! # Security Considerations
4//!
5//! ## Post-Quantum Security
6//! Same as uni-stark: SHAKE256, FRI-based PCS; no classical-only primitives.
7//! ## Constant-Time
8//! Use constant-time operations for secret witness data in any instance.
9//! ## Memory and Zeroization
10//! Wrap each instance’s trace in a zeroizing type when sensitive; supports preprocessing.
11//! ## Input Validation
12//! Per-instance limits inherited from uni-stark; batch structure validated.
13//! ## Side-Channel Resistance
14//! Same guidance as uni-stark; multi-AIR batching does not weaken resistance.
15//! ## Threat Model
16//! Quantum adversaries; multi-AIR batching with shared LogUp and optional preprocessing.
17
18#![no_std]
19#![deny(unsafe_code)]
20#![deny(unused_qualifications)]
21#![allow(clippy::clone_on_copy)]
22#![allow(clippy::type_complexity)]
23
24extern crate alloc;
25
26#[cfg(debug_assertions)]
27pub mod check_constraints;
28pub mod common;
29pub mod config;
30pub mod folder;
31pub mod proof;
32pub mod prover;
33pub mod symbolic;
34pub mod verifier;
35
36pub use common::{
37    CommonData,
38    ProverData,
39    ProverOnlyData,
40    get_perm_challenges,
41};
42pub use config::{
43    Challenge,
44    Commitment,
45    Domain,
46    PackedChallenge,
47    PackedVal,
48    PcsError,
49    PcsProof,
50    StarkGenericConfig,
51    Val,
52};
53pub use lib_q_plonky_uni_stark::{
54    OpenedValues,
55    VerificationError,
56};
57pub use proof::{
58    BatchCommitments,
59    BatchOpenedValues,
60    BatchProof,
61};
62pub use prover::{
63    StarkInstance,
64    prove_batch,
65};
66pub use verifier::verify_batch;