全面对比:所有ZKP系统的每个维度——ZKP系统系列第8篇

umitaygul 发布于 2026-04-18 阅读 209

本文是零知识证明系列文章的终结篇,提供了一个全面的参考文档,帮助工程师根据自身约束选择最合适的证明系统。

你已经读到了本系列的终点。八篇文章,28 种证明系统,四十年的密码学历史被压缩进了一个阅读弧线,带你从“什么是零知识证明”一直走到“哪些系统能在量子计算机时代幸存”。

最后一篇文章是一份参考文档。它回答了每个工程师最终都会问的问题:在给定约束条件下,我应该使用哪种系统?

我们将首先介绍完整的对比表,然后是决策框架,最后是 2025 年及以后值得关注的系统。

完整对比表

本系列中的每个系统,涵盖了实际决策中涉及的每个维度。

列名解释:

  • 证明大小 (Proof size) — 从证明者发送到验证者的证明大小
  • 证明者时间 (Prover time) — 相对于 Groth16 基准 (1.0x) 的倍数
  • 验证者时间 (Verifier time) — 验证运行的速度
  • Trusted Setup — 无 / 通用 (Universal) / 特定于电路 (Circuit-specific)
  • 透明 (Transparent) — 没有任何形式的 Trusted Setup
  • 通用 (Universal) — 一个 Setup 适用于任何电路
  • PQ safe — 抗量子安全
  • 范式 (Paradigm) — 你如何为该系统编写程序

决策框架

与其直接告诉你使用哪个系统,不如提供每个严肃的工程师都应该思考的决策树。

步骤 1:你是否需要抗量子安全性?

你的应用程序安全周期是否 > 10 年?
├── 是 → 排除所有基于 ECDLP 的系统
│         剩余:Ligero, Aurora, Virgo, STARK, Zilch,
│                    Plonky2, Plonky3, SP1, Hyperbridge
└── 否 → 所有系统均可用于当前部署
          (但需规划迁移路径)

步骤 2:你能容忍 Trusted Setup 吗?

你能运行或参与 Trusted Setup 仪式吗?
├── 是 → Groth16 和 PLONK 变为可用选项
│         (证明最小,验证最快)
└── 否 → 排除特定于电路和通用 Setup 的系统
          剩余:仅限透明系统

步骤 3:你的证明大小预算是多少?

证明是否在链上验证(以太坊 L1)?
├── 是 → 证明大小至关重要(calldata 成本)
│         最佳:如果接受 Setup,选 Groth16 (~200 B)
│               如果需要通用 Setup,选 PLONK (~800 B)
│               Plonky3 递归(~50 KB,但可聚合)
└── 否 → 证明大小不那么关键
          STARK, Plonky2, SP1 均可接受

步骤 4:你偏好哪种编程模型?

## 按开发者画像分类的决策映射
decision_map = {
    "我想编写普通的 Rust": {
        "system": "SP1 或 Risc0",
        "note": "无需电路 —— 只需编写你的程序"
    },
    "我需要极致性能,愿意编写电路": {
        "system": "Plonky3 或 Halo2",
        "note": "自定义门,完全控制约束系统"
    },
    "我正在以太坊上构建,需要链上验证": {
        "system": "Groth16 或 PLONK (通过 snarkjs/circom)",
        "note": "工具链成熟,提供 Solidity 验证器"
    },
    "我需要递归证明 + 无 Trusted Setup": {
        "system": "Halo2 或 Plonky2",
        "note": "如果不担心 PQ,选 Halo2;如果 PQ 很重要,选 Plonky2"
    },
    "我正在构建隐私币或机密交易": {
        "system": "Bulletproofs (范围证明) 或 STARK",
        "note": "Bulletproofs 用于紧凑的范围证明;STARK 用于 PQ"
    },
    "我需要绝对最小的证明": {
        "system": "Groth16",
        "note": "200 字节,8 年来未被超越 —— 接受仪式吧"
    }
}
for use_case, recommendation in decision_map.items():
    # 打印用例
    print(f"Use case: {use_case}")
    # 打印推荐系统
    print(f"  → {recommendation['system']}")
    # 打印备注
    print(f"  Note: {recommendation['note']}")
    print()

步骤 5:哪个生态系统适合你的技术栈?

语言 / 工具偏好:
├── Rust      → SP1, Risc0, Halo2 (halo2_proofs crate)
├── TypeScript/JS → snarkjs + circom (Groth16, PLONK)
├── Python    → py_ecc, arkworks 绑定 (研究/原型设计)
├── Cairo     → zk-STARK (StarkNet 生态)
└── Leo       → Marlin / Aleo 生态

现今用于生产环境的三个梯队

根据成熟度、工具链和部署记录,生产系统分为三个梯队:

第一梯队 —— 在生产环境中经过实战检验

Groth16 — Zcash Sapling (2018 至今)、Tornado Cash、Polygon Hermez。已生成数百万个证明。Solidity 验证器经过多次审计。适用于:证明大小至关重要且你可以运行仪式的以太坊应用。

zk-STARK — StarkNet、StarkEx (dYdX, Sorare, Immutable X)。已证明数十亿美元的交易额。生产级 Cairo 工具链已成熟。适用于:大规模 L2 Rollup、需要 PQ safe 的应用。

Halo2 — Zcash Orchard、Scroll、Taiko。在主网上运行的生产级 zkEVM。适用于:EVM 等效应用、递归证明系统、不需要 Trusted Setup 的场景。

PLONK — Aztec Network、多种 zkEVM 变体。通用 Setup 消除了每个电路的仪式。适用于:电路频繁变更的应用。

第二梯队 —— 生产就绪,采用率不断增长

Plonky2 — 为多个 zkRollup 聚合层提供动力。递归速度比之前的系统快 100 倍。适用于:递归证明聚合、抗量子要求。

Plonky3 — SP1、Polygon AggLayer、Valida。目前可用的最快证明者 (2024)。适用于:以原始速度为首要任务的新项目。

SP1 — 生产中的以太坊轻客户端证明 (Succinct 的桥)。适用于:证明任意 Rust 程序、编写电路不切实际的应用。

Bulletproofs — Monero、Grin。仅限范围证明 —— 非通用。适用于:隐私币中的机密交易金额。

第三梯队 —— 研究 / 小众领域

Nova — Nexus zkVM、研究项目。对 IVC 非常出色,但尚未经过生产验证。适用于:增量计算、研究。

Marlin — Aleo。强大的 R1CS 原生系统,但局限于该生态系统。

记住我以便更快登录

Ligero, Aurora, Virgo — 在历史上和 PQ 研究中很重要,但生产工具链有限。适用于:学术研究、理解 PQ 基础。

证明大小 vs 证明者速度:核心权衡可视化

证明大小 (对数刻度,越小越好)
    │
200B┤ ● Groth16                              ← 最小
    │
800B┤      ● PLONK
    │
 1KB┤          ● Marlin  ● Bulletproofs
    │
10KB┤               ● Halo2  ● Halo  ● Nova
    │
100KB┤                      ● Plonky2  ● Plonky3  ● Virgo  ● Aurora
    │
300KB┤                                  ● zk-STARK  ● Zilch
    │
 1MB┤                                                  ● SP1
    │
    └──────────────────────────────────────────────────────────
    更快的证明者 ←──────────────────────────────→ 更慢的证明者
       0.2x          1x          5x          10x         20x
       (Plonky3)  (Groth16) (Bulletproofs) (Aurora)  (Sonic)

PQ-safe 系统: Ligero, Aurora, Virgo, STARK, Zilch, Plonky2, Plonky3, SP1, Hyperbridge

左上角 —— 极小的证明,极快的证明者 —— 是 Groth16 独占的领域。抗量子系统聚集在右下角。从 2019 年到 2024 年的工程进展清晰可见,PQ-safe 系统正向左上角移动:Plonky3 现在的证明者速度已达到与 Groth16 相同的梯队,同时保持了 PQ safe,代价是证明较大。

基准测试:跨系统的相同电路

为了使对比更具体,以下是跨系统证明 Poseidon 哈希计算(一种常见的 ZK 友好哈希,约 1000 门)的近似基准测试:

## 近似基准测试 —— 1000 门 Poseidon 哈希电路
## 硬件:现代服务器 (32 核, 64GB RAM)
## 这些是数量级估计,而非精确测量
benchmarks = {
    "Groth16": {
        "proof_size_bytes": 192,
        "prover_ms": 50,
        "verifier_ms": 2,
        "trusted_setup": "circuit-specific",
        "pq_safe": False
    },
    "PLONK (snarkjs)": {
        "proof_size_bytes": 800,
        "prover_ms": 100,
        "verifier_ms": 5,
        "trusted_setup": "universal",
        "pq_safe": False
    },
    "Halo2": {
        "proof_size_bytes": 5000,
        "prover_ms": 150,
        "verifier_ms": 10,
        "trusted_setup": "none",
        "pq_safe": False
    },
    "zk-STARK": {
        "proof_size_bytes": 150_000,
        "prover_ms": 250,
        "verifier_ms": 30,
        "trusted_setup": "none",
        "pq_safe": True
    },
    "Plonky2": {
        "proof_size_bytes": 80_000,
        "prover_ms": 100,
        "verifier_ms": 20,
        "trusted_setup": "none",
        "pq_safe": True
    },
    "Plonky3": {
        "proof_size_bytes": 50_000,
        "prover_ms": 10,   # Goldilocks/M31 域速度
        "verifier_ms": 15,
        "trusted_setup": "none",
        "pq_safe": True
    },
}
print(f"{'System':<20} {'Proof':>10} {'Prover':>10} {'Verifier':>10} {'Setup':<20} {'PQ'}")
print("-" * 80)
for name, b in benchmarks.items():
    pq = "✓" if b["pq_safe"] else "✗"
    proof = f"{b['proof_size_bytes']:,} B"
    prover = f"{b['prover_ms']} ms"
    verifier = f"{b['verifier_ms']} ms"
    print(f"{name:<20} {proof:>10} {prover:>10} {verifier:>10} {b['trusted_setup']:<20} {pq}")

关键结论:Plonky3 实际上已经达到了 Groth16 的证明者速度,同时具备抗量子安全性且不需要 Trusted Setup。剩下的差距是证明大小 —— 50 KB 对比 192 字节。递归聚合在大规模应用中填补了这一大部分差距。

未来展望

ZKP 领域的发展速度几乎超过了应用密码学的任何其他领域。以下是 2025-2027 年最有可能产生重大新系统的方向:

基于格(Lattice)的 SNARK — NIST 在 2024 年标准化了基于格的签名和密钥封装。基于格的证明系统提供抗量子安全性,且证明大小可能比基于 FRI 的系统更小。早期构造已经存在(Banquet, Ligero++),但尚未达到生产就绪水平。

FRI + PLONK 混合体 — Plonky2 证明了这是可行的。下一代将专门针对 PLONK 自定义门优化 FRI 参数,有可能缩小与基于 KZG 的证明大小之间的差距。

zkML(零知识机器学习) — 证明神经网络推理计算正确,而不泄露模型权重。EZKL 和类似项目正在使用 Halo2 和 PLONK 后端使之变得实用。随着模型变大,对高效 ML 证明系统的需求将推动新的构造。

链上 STARK 验证成本降低 — 目前 STARK 在以太坊 L1 上的验证成本很高。针对 STARK 特定预编译的 EIP 提案将使验证成本降低 10-100 倍。如果被采用,这将使 STARK 证明对更广泛的应用类别具有经济性。

抗量子 Halo2 — 多个团队正在努力用基于哈希的承诺方案替换 Halo2 的 IPA。成功后将为现有的最大部署群体(Zcash, Scroll, Taiko)提供一条无需重写电路即可迁移到抗量子安全的路径。

如何使用本系列

如果你是构建 ZK 应用的开发者:请阅读第 0、2、3 和 6 篇文章。了解 Groth16(目前最常用)、PLONK(最灵活)和 SP1(最简单)。使用本文中的决策框架。

如果你是进入 ZK 领域的研究员:请按顺序阅读整个系列。从 Pinocchio 到 Nova 再到 Plonky3 的演进是贯穿该领域历史最高效的路径。

如果你是为产品评估 ZK 的工程师:请阅读第 0 篇(分类)、第 7 篇(量子)和本文。这些足以让你做出明智的系统选择决策。

如果你是审查他人工作的密码学家:第 2-5 篇文章为你提供了推断任何证明系统的安全假设和权衡所需的词汇。

一句话总结系列文章

第 0 篇 — ZKP 是一个包含 28 种以上系统的家族,而非单一事物;它们在 Setup、通用性和抗量子性方面有所不同。

第 1 篇 — Pinocchio (2013) 通过将计算编码为 R1CS 并通过椭圆曲线配对上的 QAP 进行验证,使 SNARK 变得实用。

第 2 篇 — Groth16 (2016) 通过将电路烘焙到 Setup 中,将证明压缩到了理论极限 —— 3 个群元素。

第 3 篇 — Sonic、PLONK 和 Marlin (2019) 独立解决了特定于电路的 Setup 问题;PLONK 凭借可扩展性而非性能胜出。

第 4 篇 — Bulletproofs、Halo 和 Halo2 完全消除了 Trusted Setup;代价是证明较大,且关键在于它们仍然容易受到量子攻击。

第 5 篇 — Ligero、Aurora、Virgo 和 zk-STARK 用哈希函数取代了椭圆曲线,以更大的证明大小为代价实现了抗量子安全。

第 6 篇 — Nova 的折叠方案将递归开销从 100 倍降低到 15%;Plonky2 使递归证明快了 100 倍;SP1 让任何会写 Rust 的人都能使用 ZK 证明。

第 7 篇 — Shor 算法破解了所有基于 ECDLP 的系统;基于哈希的系统通过参数调整得以幸存;无 Trusted Setup 不等于抗量子安全。

第 8 篇(本篇) — 选择系统时:先决定 PQ 要求,然后是 Setup 容忍度,接着是证明大小预算,最后是编程模型。

最后的思考

零知识证明是计算机科学中最具智力美感的领域之一。在不揭示原因的情况下说服他人相信真相的能力,以一种极少数技术能做到的方式,处于哲学、数学和工程的交汇点。

但它们也越来越实用。2013 年,Pinocchio 证明了你可以在 6 毫秒内验证一次计算。2024 年,SP1 可以证明任意 Rust 程序,Plonky3 生成证明的速度超过了 Groth16,而 StarkNet 每天以抗量子安全性处理数百万笔交易。

“理论上可能”与“在生产环境中大规模运行”之间的差距在 11 年内缩小了。“当前生产系统”与“抗量子安全生产系统”之间的差距正在缩小。

如果你从头开始阅读了这个系列,你现在已经具备了阅读任何新证明系统论文并理解它在这一版图中所处位置的能力 —— 它解决了什么问题,接受了什么权衡,以及它是否能在量子转型中幸存。

这就是该领域所需的词汇。请善用它。

系列完结

感谢阅读。如果你觉得这个系列有用,支持持续创作的最佳方式是将其分享给正在尝试理解 ZKP 系统的人。这个领域需要更多能够清晰推断这些权衡的人。

全系列索引

  • 第 0 篇:迷失前的野外指南
  • 第 1 篇:Pinocchio 与过程时代 (2013–2018)
  • 第 2 篇:Groth16 —— 为什么 3 个群元素就足够了
  • 第 3 篇:通用 Setup 竞赛 —— Sonic, PLONK, 与 Marlin
  • 第 4 篇:无 Trusted Setup —— Bulletproofs, Halo, 与 Halo2
  • 第 5 篇:全是哈希函数 —— 抗量子系统
  • 第 6 篇:折叠方案与 zkVM 时代
  • 第 7 篇:量子威胁 —— 哪些系统能幸存
  • 第 8 篇:大对比(本篇)

参考文献

  • 第 0-7 篇中引用的所有论文
  • Thaler, J. — “Proofs, Arguments, and Zero-Knowledge” (教科书, 2022) — 权威技术参考
  • ZKProof Community — https://zkproof.org — 标准化工作
  • awesome-zero-knowledge-proofs — github.com/matter-labs/awesome-zero-knowledge-proofs
  • ZK Hack — zkhack.dev — 动手学习资源
  • 原文链接: medium.com/@umitaygul/th...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论