返回 Expert 笔记
Expert Day 219

SNARK vs STARK — 全面对比

SNARK / STARK 全维度对比(setup, size, time, assumption, post-quantum, ecosystem)

2026-12-06
Phase 4 - ZK基础理论 (Day 209-222)
ZKSNARKSTARK对比

日期: 2026-12-06 方向: 零知识证明 / ZK理论 阶段: Phase 4 - ZK基础理论 (Day 209-222) 标签: #ZK #SNARK #STARK #对比


今日目标

类型内容
学习SNARK / STARK 全维度对比(setup, size, time, assumption, post-quantum, ecosystem)
实操写综合对比报告
产出snark_stark.md — 决策矩阵、量化数据、应用建议

一、TL;DR 决策表

选 SNARK 当...选 STARK 当...
链上 verify gas 关键大 trace(如 zkVM 整 block)
Proof 越小越好(移动/L1)后量子是必须
客户端 verify 算力小不想做 trusted setup ceremony
已有 EVM precompile (BN254)recursion 是核心需求
小电路(特定隐私协议)不想锁定到 ECC 假设

二、量化对比表

设电路约束数 $N = 10^6$(约 SHA256 × 1000 次)。

维度Groth16PlonKHalo2STARKBulletproofs
Setupper-circuit MPCuniversal MPCnonenonenone
SRS size$O(N)$$O(N)$ univnonenonenone
Proof size192 B~400 B3-10 KB50-200 KB$O(\log N)$ ~1 KB
Prover time~10 s~12 s~15 s~5 s (small field)~20 s
Verifier time~3 ms (3 pairings)~10 ms50-200 ms5-50 ms$O(N)$ ~1 s
On-chain gas (EVM)~200K~300K~600K~400K (StarkNet on L1)$O(N)$ 不实用
Crypto assumptionKEA + GGMKEA + KZGDL only (IPA)hash CR onlyDL only
Post-quantum
Recursion
FieldBN254/BLS12BN254/BLS12Pasta/BN254Goldilocks/M31secp/BN254

:Prover time 因实现差异大;以上是 reasonable production 数字。Risc Zero (STARK) 在并发硬件下可比 SNARK 快 10x。


三、Setup 详细对比

3.1 Groth16 — Per-circuit Trusted Setup

Phase 1 (universal): Powers of Tau MPC
   Powers of Tau ceremony 输出 {[τ^i]_1, [τ^i]_2}_{i=0..N}
Phase 2 (per circuit):
   每电路一次 MPC: 加 α, β, γ, δ + 电路 selector commitments

每改电路重做 Phase 2 MPC(耗时数周协调)。

3.2 PlonK — Universal Setup

Phase 1: Powers of Tau (与 Groth16 共享)
Phase 2 per circuit: 仅本地计算 selector commitments (无 MPC)

新电路只需本地编译,无须新 ceremony

3.3 Halo2 / STARK — Transparent

无任何 ceremony;setup = 选 hash function(Poseidon)+ FFT domain 参数。完全公开可验证。


四、Proof Size 详细对比

系统Proof 内容Size 估算
Groth16$A \in G_1, B \in G_2, C \in G_1$48 + 96 + 48 = 192 B
PlonK9 G1 commits + ~7 field evals$9 \cdot 48 + 7 \cdot 32 \approx$ 656 B
Halo2many commits + IPA (log n)$\sim 4-10 \text{ KB}$
STARKMerkle commits + FRI queries$\lambda \log^2 n \cdot 32$ B ≈ 50-200 KB
Bulletproofs$2 \log n$ G1 + 5 field$\sim 1 \text{ KB}$
Nova (folded)accumulator (Pedersen)$\sim 10 \text{ KB}$ + 后续 SNARK

五、Prover / Verifier 时间

5.1 Prover

Groth16 / PlonK (BLS12-381):
  - FFT: O(N log N), N = 1M → ~5 s
  - MSM (multi-scalar mul): O(N), N = 1M → ~5 s
  - 总: ~10-15 s

STARK (Goldilocks 64-bit):
  - FFT 在 64-bit field 比 256-bit 快 ~16x → ~1 s
  - Merkle tree: O(N) hash → ~3 s (Poseidon 较慢; Blake3 ~0.3s)
  - 总: ~5 s

Risc Zero (RISC-V trace):
  - 高度并发 GPU 加速 → 可比 SNARK 快 5-10x for same N

5.2 Verifier

系统工作时间
Groth163 pairings~3 ms
PlonK~6 pairings + few muls~10 ms
Halo2IPA verify O(N) (single proof)~100-200 ms
Halo2 + accumulationfolded $O(\log N)$~10-30 ms
STARKMerkle verify + FRI fold check~5-50 ms
Bulletproofs$O(N)$ scalar ops$\sim 1$ s

六、链上 Gas 实测(EVM, BN254/BLS12 precompile)

系统On-chain Verify Gas备注
Groth16~200K3 pairings precompile (BN254 alt_bn128)
PlonK~300K多 pairings + opening
Halo2 (BN254 fork)~600K-1MIPA → no precompile, MSM 慢
STARK on L1~400KMerkle path verify + FRI checks
Recursive SNARK (final)~200K嵌套 → 内层多, 外层 Groth16

重要:StarkNet 的 STARK 在 L1 上由 SHARP prover 聚合多个 STARK proof,最终用 STARK verifier contract(自定义 EVM 合约 ~5M gas/proof)验证。


七、加密假设详解

7.1 SNARK 系列假设

  • DL (Discrete Log):基础
  • q-SDH / q-PKE:KZG, Groth16 用
  • KEA / Knowledge of Exponent:保证 prover "真知道" witness
  • GGM (Generic Group Model):理想化群(用于 Groth16 proof)
  • ROM:Fiat-Shamir 部分

量子破(Shor 解 DL)

7.2 STARK 假设

  • CR-Hash (Collision Resistance):Merkle 安全
  • ROM:FS challenge

量子安全 (Grover only $\sqrt{N}$ speedup on hash, 200-bit hash → 100-bit post-Q)


八、Recursion 难度

8.1 SNARK Recursion

需要在曲线 $E$ 的 scalar field 内验证 $E$ 上的 EC ops → non-native arithmetic(用 base field 模拟),开销 ~50x。

PlonK + cycle of curves(如 BN254/Grumpkin 半 cycle,或 Pasta full cycle)部分缓解。

8.2 Halo2 / STARK Recursion

Halo2: cycle of curves + IPA accumulation → 天然支持。 STARK: 验证电路全是 hash + small field arith → 极其友好

实践中:

  • Mina = 全 recursion SNARK(Pickles + Pasta cycle)
  • Nova = SNARK 的轻量 folding(每步 amortized O(N),最后用 Spartan/Groth16 finalize)
  • StarkNet = SHARP recursive aggregator
  • Risc Zero = STARK fold via small field

九、生态与工具

系统主要工具链DSL
Groth16snarkjs, libsnark, arkworks-rsCircom
PlonKbarretenberg (Aztec), ezklNoir, Cairo
Halo2halo2 (ECC), boojum (Matter Labs)Halo2-DSL, Rust
STARKwinterfell, stwo, stark101Cairo (StarkNet), AirAssembly
Risc Zerorisc0Rust (compiles to RISC-V)
Plonky2plonky2(Rust direct)
Novanova-rs, supernovaRust

十、用例对应

用例推荐
隐私支付 (Tornado Cash)Groth16(小 proof, 200K gas, 单电路)
L2 zk-rollup (zkSync, Scroll)Halo2 / PlonK + 终态 Groth16
STARK rollup (StarkNet)STARK + on-chain STARK verifier
zkVM (RISC-V execution)Risc Zero (STARK), SP1
anonymous credential (Sui zkLogin)Groth16 (Sui 用 BN254)
succinct light clientHalo2 / Plonky2
post-quantum criticalSTARK
client-side proving (mobile)small field STARK / Halo2

十一、协议关系图(决策树)

                   需要 ZK proof
                         │
                ┌────────┴─────────┐
              setup OK?       透明 only?
                │                  │
       ┌────────┼────────┐    ┌────┴─────┐
       │        │        │    │          │
   per-circuit  univ.    no   no setup,  post-Q
       │        │        │    pairing OK?  必须
   Groth16   PlonK  Halo2/STARK  │       │
                              Halo2    STARK
       │        │        │
   Tornado    Aztec    zkSync /
   Filecoin   Polygon  Scroll
   Zcash      zkEVM

十二、Hybrid 方案

实际生产系统经常混合

12.1 STARK + Groth16

StarkNet on L1: trace 用 STARK 证(prover 快),最终用 Groth16 包装(小 proof, 链上 gas 低)。

12.2 Plonky2 = STARK + PlonK

Polygon Zero 的 Plonky2: 内层 STARK(小 field 快 prover),外层 PlonK(small proof)。

12.3 Linea (Consensys)

L2 用 PlonK 风格 + 部分 STARK ideas。最终在 L1 用 BN254 verify。

12.4 Risc Zero

inner STARK + outer Groth16("compress proof")。


十三、决策矩阵

优先级Groth16PlonKHalo2STARK
Smallest proof★★★★★
Fastest verify★★★★★★★
No setup★★★★★★
Post-quantum★★★
Recursion ease★★★★★★
Custom gates★★★★★★★★
Lookup support★★★★★★★
Mature tooling★★★★★★★★★★
EVM-native verify★★★★★★ (custom)

十四、面试题

Q1: 为什么 Tornado Cash 选 Groth16 而不是 STARK?

A1: (1) Proof 必须 ≤ 1 KB(用户 tx 数据成本);STARK 50 KB 不可行;(2) 链上 verify gas 优先(200K vs 5M);(3) 单一固定电路(混币逻辑),per-circuit MPC 接受;(4) 量子威胁不紧迫(短期 mixer)。STARK 适合 zkVM 而非小固定电路。

Q2: 为什么 StarkNet 选 STARK 而非 PlonK?

A2: (1) Cairo VM 是通用计算 trace,AIR 比 R1CS 高效得多(重复 step 共享 transition constraint);(2) 后量子作为长期承诺;(3) 无 trusted setup → 链治理简化;(4) StarkWare 团队(Eli Ben-Sasson 是 STARK paper 作者)专长于 STARK。代价:on-chain verifier ~5M gas,由 SHARP 摊销到多 batch。

Q3: 比较 Halo2 和 PlonK 在 zkSync 选型中的考虑?

A3: zkSync 选 Halo2(boojum):(1) 无 trusted setup → 升级电路无 ceremony;(2) recursion 天然好(cycle of curves)→ 多 block 聚合;(3) IPA 替代 KZG,long-term 不依赖 KZG SRS。代价:proof 略大、链上 gas 高 ~3x。链上最终可用 Groth16 wrapper 减 gas。

Q4: 后量子时代,现有 SNARK 系统怎么办?

A4: (1) 短期:迁移到 STARK / lattice-based SNARK (e.g., LatticeFold);(2) 中期:研究 hash-only SNARK(如 Brakedown / Ligero);(3) 长期:FRI + Fast small fields(Goldilocks, BabyBear, M31)的 STARK 是稳妥选择。EC SNARK 在量子计算成熟前都不安全。

Q5: Recursion 在哪些场景必需?

A5: (1) zk-rollup 多 block 聚合:每 block 一个 proof, 终态聚合成单 proof 链上提交;(2) incremental verifiable computation (IVC):长 trace 分步证(Nova 的核心);(3) proof composition (PCD):多 prover 协作生成最终 proof;(4) 逐步 zkVM:每条 instruction 一个 proof,fold。Halo2/STARK/Nova 都为此优化。


十五、明日预告

Day 220 — Polynomial IOP(PIOP)抽象:理解 SNARK/STARK 共同的"理论核心",深入 Sumcheck protocol。