Overview
Instead of creating N separate opening proofs for N polynomials:- Prover commits to all polynomial evaluations
- Verifier samples a random batching challenge
- Prover creates a single opening proof for the random linear combination
- Verifier checks one combined opening instead of N individual proofs
Opening Accumulator Pattern
Jolt uses an accumulator pattern to collect opening claims throughout the proof:Usage Pattern
During sumcheck stages:Batching Strategies
Same-Point Batching
When multiple polynomials are opened at the same pointr:
Different-Point Batching
When polynomials are opened at different pointsr₁, ..., rₙ:
Dory Batched Openings
Dory (Jolt’s default commitment scheme) supports efficient batching:Tier-Based Structure
Batching Flow
-
Accumulation Phase (during sumcheck stages):
-
Batching Phase (after all sumchecks):
-
Opening Proof Generation:
Zero-Knowledge Mode
In ZK mode, opening proofs must not reveal polynomial evaluations:Standard Mode
ZK Mode
Performance Impact
Cost Comparison
| Metric | Individual Openings | Batched Openings |
|---|---|---|
| Prover time | O(N · M) | O(M) + O(N) |
| Proof size | N × proof_size | 1 × proof_size + O(N) |
| Verifier time | O(N · V) | O(V) + O(N) |
- N = number of polynomials
- M = polynomial size (commitment time)
- V = opening verification cost
Concrete Example: Jolt Stage 8
Stage 8 performs a single batched Dory opening for all polynomials accumulated across stages 1-7:- Polynomials opened: 50-100+ (depends on program)
- Batched into: 1 Dory opening proof
- Prover speedup: ~10-20x vs. individual openings
- Proof size reduction: ~30-50x
Transcript Optimization
Critical change in Jolt’s BlindFold branch:On this branch,This eliminates redundant transcript operations during accumulation.ProverOpeningAccumulator::append_*andVerifierOpeningAccumulator::append_*do NOT append claims to the Fiat-Shamir transcript (thetranscriptparameter was removed). Both sides are consistent. On main, these methods DO appendopening_claimscalars.
Implementation Details
Opening Claim Structure
Accumulator Methods
Usage in Jolt Proof Stages
Each sumcheck stage accumulates openings:Related Optimizations
- Batched Sumcheck: Batch sumcheck protocols
- CompactPolynomial: Efficient polynomial storage
- Torus Compression: Compress opening proof size
References
- Dory: Efficient, Transparent Polynomial Commitments — Dory commitment scheme
- ProverOpeningAccumulator implementation:
jolt-core/src/poly/opening_proof.rs - Batched opening verification:
jolt-core/src/poly/commitment/dory/