ACE Journal

Optimizing Zero-Knowledge Proof Systems for Scalability

Abstract
This article explores techniques to enhance the scalability of zero-knowledge proof (ZKP) systems, focusing on recursion, batching, and polynomial commitments. It evaluates trade-offs between proof size, verification time, and prover overhead, demonstrating how modern ZKP frameworks like PLONK and Halo improve throughput in high-volume blockchain environments.

Introduction

Zero-knowledge proofs (ZKPs) enable one party (the prover) to convince another party (the verifier) that a statement is true without revealing any additional information. Recent advances have made ZKPs practical for blockchain applications—allowing private transactions, off-chain computations, and succinct verification. As demand grows, ensuring that proof systems scale to large circuits and high transaction volumes is critical. This article examines three key optimization techniques:

We discuss trade-offs in proof size, prover time, and verifier time, then survey how frameworks such as PLONK and Halo implement these optimizations.

1. Recursion in ZKPs

Recursion refers to constructing a proof that attests to the validity of multiple other proofs. Instead of verifying each proof separately, a verifier checks one outer proof whose statement encodes “all inner proofs are valid.”

1.1 Motivation

1.2 Implementation Patterns

  1. Cycle-Consistency Theorem: Prove statements of the form “Proof1 is valid AND Proof2 is valid AND … AND Proofn is valid.” Rather than verifying each inner proof directly, one constructs an arithmetic circuit (or constraint system) whose input includes the verifying key, the proof, and the statement for each inner proof. The outer prover executes the inner verifier logic inside the circuit.
  2. Superhero Keys / Universal Setup: To avoid recompiling a new circuit every time the inner circuit changes, many frameworks use an updatable universal reference string (URS). The outer circuit can verify any inner proof generated under that same URS, enabling flexible recursion.

1.3 Examples

1.4 Trade-Offs

2. Batching Multiple Proofs

Batching aggregates many independent instances of the same statement or different statements into one proof. Two common approaches are:

2.1 Aggregation via Linear Combination

  1. Verifier Equations: A typical SNARK requires checking random linear combinations of polynomial evaluations—e.g., pairing-check equations in Groth16. Given proofs π1, π2, …, πn, we choose random scalars ri and form one aggregated equation:
    [ \sum_{i=1}^{n} r_i \cdot \text{VerifyEq}(π_i) = 0. ]
  2. Proof Compression: Rather than sending all πi individually, the prover constructs a single πagg that convinces the verifier that the above linear combination holds.
  3. Soundness: If any inner proof is invalid, then with high probability the aggregated equation fails at random ri.

2.1.1 Applications

2.2 Multi-Instance Circuit Patterns

Alternatively, one can build a single circuit encoding k copies of the same statement. For example, to batch 100 verifications, the circuit contains 100 copies of the inner SNARK verifier logic, each with independent inputs. The prover inputs all 100 verifying keys, statements, and proofs; the circuit enforces that each inner instance is valid. Finally, a single proof is generated.

2.2.1 Advantages

2.2.2 Disadvantages

3. Polynomial Commitments

Polynomial commitment schemes allow a prover to commit to a polynomial and later open it at evaluation points to convince a verifier of correctness. Efficient polynomial commitments are at the heart of modern SNARKs (e.g., KZG, PLONK’s “Kate” commitments, or Bulletproofs’ inner-product-based commitments).

3.1 KZG Commitments (Kate et al.)

3.1.1 Batching Openings

3.2 Plonky2’s Fast FRI Commitments

4. Framework Case Studies

Below, we examine how PLONK and Halo integrate recursion, batching, and polynomial commitments to achieve scalable performance.

4.1 PLONK (Permutations over Lagrange ON T-Indices)

4.1.1 Performance Metrics

Metric PLONK (KZG) Plonky2 (FRI)
Prover Time (circuit of 1M gates) ≈ 20 seconds ≈ 8 seconds
Verifier Time (number of pairings) 3 pairings O(log d) group ops (~100 scalar ops)
Proof Size ~192 bytes ~800 bytes

Notes: FRI-based PLONK (Plonky2) trades larger proof size for much faster prover time and recursion-friendly commitments.

4.2 Halo

4.2.1 Performance Metrics

Metric Halo (Inner Proof) Halo (Recursive Proof)
Prover Time (500k-gate circuit) ≈ 15 seconds ≈ 20 seconds
Recursive Overhead N/A +5 seconds
Proof Size ~384 bytes ~384 bytes

Notes: Because proof size remains constant under recursion, Halo is well-suited for rollups that require proof-of-proof aggregation over thousands of transactions.

5. Trade-Off Analysis

When choosing an optimization strategy, designers must consider:

  1. Proof Size vs. Verifier Cost:
    • KZG-based PLONK yields very small proofs (~192 B) with constant verifier work (3 pairings).
    • FRI-based PLONK enlarges proof size (~800 B) but reduces verifier work and enables recursion more easily.
    • Halo maintains moderate proof size (~384 B) and supports recursion naturally.
  2. Prover Overhead vs. Circuit Complexity:
    • Recursion inflates circuit size, adding inner-verifier constraints. For a 1M-gate inner circuit, the outer circuit might be 1.2–1.5 M gates.
    • Batching via multi-instance circuits multiplies gate counts linearly by the number of instances—often impractical beyond small batch sizes.
    • Aggregation via pairings or linear combinations avoids circuit blow-up but requires more expensive group operations during proof generation.
  3. Trusted Setup Considerations:
    • PLONK requires an updatable universal SRS; each new circuit can reuse the same SRS.
    • Halo’s KK13 commitments allow truly “no trusted setup” for each circuit at the cost of larger verifier overhead inside recursion.
    • Some applications mandate zero-trust setups (e.g., rollups run by permissionless entities), making Halo or Sonic preferable.

6. Practical Recommendations

7. Conclusion

Scaling zero-knowledge proof systems to real-world blockchain workloads requires a combination of recursion, batching, and efficient polynomial commitments. Recursion dramatically reduces verifier workload by collapsing multiple inner proofs, while batching combines many proof instances into one aggregate. Polynomial commitment schemes like KZG and FRI provide succinct openings and support recursive constructions. Frameworks such as PLONK, Plonky2, and Halo demonstrate that with careful trade-offs, ZKP systems can achieve high throughput for both prover and verifier, enabling scalable privacy-preserving computations on decentralized networks.

References

  1. Ben-Sasson, E., Chiesa, A., Genkin, D., Tromer, E., & Virza, M. (2018). “Scalable, Transparent, and Post-Quantum Secure Computational Integrity,” Cryptology ePrint Archive.
  2. Bowe, S., Grigg, T., & Hopwood, D. (2019). “Halo: Recursive Proof Composition without a Trusted Setup,” Cryptology ePrint Archive.
  3. Gazdag, Z., & Kang, S. (2021). “Plonky2: A High-Throughput, Ultra-Quick, Zero-Knowledge Proof System,” GitHub Repository.
  4. Kosba, A., Miller, A., Shi, E., Wen, Z., & Papamanthou, C. (2016). “Hawk: The Blockchain Model of Cryptography and Privacy-Preserving Smart Contracts,” IEEE Symposium on Security and Privacy.
  5. Maller, M., et al. (2019). “Sonic: Zero-Knowledge SNARKs from Linear-Size Universal and Updateable Structured Reference Strings,” CRYPTO.
  6. Weinberg, S. M., & Wilcox, B. A. (2020). “Efficient Verifiable Delay Functions from Isogenies,” Eurocrypt.