DEV Community

Jacobi
Jacobi

Posted on • Originally published at jacobian.ghost.io

Recursive SNARKs Explained: How Proofs Verify Other Proofs

What If a Proof Could Check Another Proof?

In most zero-knowledge systems, a verifier checks a single proof against a single statement. Recursive SNARKs break this model open: a proof can itself verify another proof, creating chains -- or even trees -- of verified computation.

This is not a theoretical curiosity. Recursive composition is the core mechanism behind zkRollups that batch thousands of transactions into a single on-chain proof, and behind systems like Nova, Halo 2, and SP1 that achieve incrementally verifiable computation (IVC).

How It Works

A standard SNARK proves: "I know a witness w such that C(x, w) = true." A recursive SNARK proves something stronger: "I know a witness w and a valid proof π of a prior statement, and both check out."

The trick is encoding the verifier circuit inside the proving circuit. The prover runs the previous verifier as a sub-computation, then proves that the entire thing -- new computation plus old verification -- is correct.

This is expensive. SNARK verification involves elliptic curve pairings or polynomial evaluations, and encoding those as arithmetic constraints blows up circuit size. The breakthrough insight (starting with Halo in 2019) was accumulation schemes: defer the expensive pairing check, accumulate it across steps, and only verify once at the very end.

Why It Matters

Compression. A zkRollup processes 10,000 transactions. Without recursion, the proof covers all 10,000 at once -- enormous circuit. With recursion, each block proof verifies the previous block proof plus new transactions. The final proof is constant-size regardless of history length.

Parallelism. Recursive trees let you prove independent branches concurrently, then merge. This is how systems like SP1 and RISC Zero achieve practical proving times for large programs.

Interoperability. A proof system can verify proofs from a different proof system. This enables cross-chain bridges where chain A verifies a proof generated on chain B without trusting chain B's validators.

The Tradeoff

Recursive circuits are larger and slower to prove per-step than non-recursive ones. You pay overhead at each recursion to embed the verifier. The win only materializes when you have many steps to amortize over -- which is exactly the case for rollups, long-running computations, and incremental state machines.

The field is converging on folding schemes (Nova, ProtoStar, HyperNova) as the next evolution -- they replace full recursive verification with a cheaper "folding" operation that defers work even more aggressively. Expect this to become the default architecture for production ZK systems by 2027.


Originally published at https://jacobian.ghost.io/recursive-snarks-explained-how-proofs-verify-other-proofs/.

Subscribe to **Jacobian* for weekly ZK/privacy insights: jacobian.ghost.io*

New here? Grab the free **ZK Privacy Patterns* guide: Get it free*

Top comments (0)