Path: blob/main/frontier/10-snarks-starks/connect/recursive-snarks-mina.ipynb
483 views
Connect: Recursive SNARKs in Mina
Module 10 | Real-World Connections
Mina maintains a constant-size (~22 KB) blockchain by recursively composing SNARK proofs.
Introduction
Most blockchains grow without bound. To verify Bitcoin, you download ~500 GB. For Ethereum, ~1 TB. The more transactions, the larger the chain.
Mina takes a radically different approach: the entire blockchain state is always represented by a single SNARK proof of approximately 22 KB.
| Blockchain | Full verification data | Growth rate |
|---|---|---|
| Bitcoin | ~500 GB | ~60 GB/year |
| Ethereum | ~1 TB | ~200 GB/year |
| Mina | ~22 KB | Constant |
The key idea: recursive proof composition. Each new block includes a SNARK that proves "the previous proof was valid AND this new block is valid." The chain of proofs collapses into a single proof.
Recursive Composition: The Core Idea
A recursive SNARK proves a statement of the form:
This means:
proves: "Block 1 is valid"
proves: " is valid AND block 2 is valid"
proves: " is valid AND block 3 is valid"
proves: "The ENTIRE chain from block 1 to block is valid"
Each has the same size regardless of . After a million blocks, the proof is still 22 KB.
The Pickles Proof System
Mina uses Pickles, a recursive proof system built on:
Kimchi: a Plonk-based proof system (more flexible than Groth16's R1CS)
IPA (Inner Product Arguments): a polynomial commitment scheme
Pasta curves (Pallas and Vesta): a cycle of elliptic curves designed for recursion
Why a Curve Cycle?
The key challenge in recursive SNARKs: to verify a proof over curve , you need to do field arithmetic in 's scalar field. But if you're building a circuit over , the native field is 's base field.
Solution: use two curves where each curve's base field equals the other's scalar field:
| Pallas | Vesta | |
|---|---|---|
| Base field | ||
| Scalar field |
Block (even): prove on Pallas, verify previous Vesta proof natively. Block (odd): prove on Vesta, verify previous Pallas proof natively.
Comparison: Blockchain Verification Models
| Model | Data needed | Verification work | Trust assumption |
|---|---|---|---|
| Full node (Bitcoin) | Entire chain (~500 GB) | Replay all txs | None (verify everything) |
| SPV (light client) | Block headers (~50 MB) | Check Merkle proofs | Trust miners (majority honest) |
| Mina (recursive SNARK) | One proof (~22 KB) | One verification | Math (proof system soundness) |
Concept Map: Module 10 Concepts in Mina
| Module 10 Concept | Mina Application |
|---|---|
| SNARK proof | Each block produces a proof of the entire chain's validity |
| Proof composition | proves: verify() AND block is valid |
| SNARK verification circuit | The verifier is itself encoded as constraints inside the recursive circuit |
| Polynomial commitments (IPA) | Pickles uses Inner Product Arguments instead of pairings |
| Curve cycle (Pasta) | Pallas + Vesta enable native cross-curve verification |
| Constant-size proofs | ~22 KB regardless of chain length |
Summary
| Concept | Key idea |
|---|---|
| Recursive composition | Each block's SNARK proves the validity of the entire chain history |
| Constant-size blockchain | Always ~22 KB, regardless of the number of blocks |
| Pickles proof system | Plonk-based SNARKs with IPA commitments, no trusted setup required |
| Pasta curves | A cycle of curves (Pallas + Vesta) enabling efficient cross-curve recursion |
| Incrementally verifiable computation | Verify the whole chain with one proof check in constant time |
The recursive SNARK paradigm is one of the most powerful ideas in modern cryptography: it transforms a linearly growing verification problem into a constant-time one.
Back to Module 10: SNARKs and STARKs