文章

00. Plonky2–Plonky3 数学原理个人学习总结

00. Plonky2–Plonky3 数学原理个人学习总结

这是我围绕 Plonky2 → QED Plonky2.5 → Plonky3 整理的一组个人学习总结。我先梳理有限域、多项式、PLONK、AIR、FRI 与 Fiat–Shamir,再逐层记录三套实现为什么这样组合、哪些概念可以迁移,以及哪些 proof format 完全不兼容。

资料快照:2026-07-29。 数学原理与软件状态分开叙述;“当前实现”均绑定具体仓库快照。Plonky2.5 特指 QED Protocol 的 2024 prototype,不是官方标准化的中间版本。

1. 整体知识脉络

这些记录按文件编号从 01 延伸到 18,整体脉络如下:

\[\boxed{ \text{数学基础} \to \text{承诺与 transcript} \to \text{PLONK / AIR} \to \text{FRI} \to \text{Plonky2} \to \text{Plonky2.5} \to \text{Plonky3} \to \text{递归、迁移与安全} }\]

各篇笔记的内容依赖关系如下:

flowchart TD
    A["01 技术全景"] --> B["02 有限域、多项式与编码"]
    B --> C["03 承诺与 Fiat-Shamir"]
    C --> D["04 PLONK 算术化"]
    D --> E["05 PLONK 完整协议"]
    E --> F["06 PLONKish 门与查表"]
    C --> G["07 STARK、AIR 与 ALI"]
    G --> H["08 FRI 与 DEEP-FRI"]
    D --> I["09 Plonky2 算术化与 FRI"]
    F --> I
    H --> I
    I --> J["10 Plonky2 递归"]
    J --> K["11 QED Plonky2.5 bridge"]
    K --> L["12 Plonky3 模块化架构"]
    F --> L
    H --> L
    L --> M["13 Plonky3 FRI、LogUp 与递归"]
    M --> N["14 Circle STARK 与现代 PCS"]
    J --> O["15 通用递归、累积与折叠"]
    M --> O
    O --> P["16 代际对照与迁移"]
    P --> Q["17 参数与安全审计"]
    Q --> R["18 一手资料索引"]

图中的箭头表示理解依赖,不表示 proof bytes 或代码 API 兼容。

2. 六组主题笔记

第一组:共同语言

编号文档记录的核心问题
01技术全景与知识脉络SNARK、STARK、PLONK、FRI、PCS 分别位于哪一层?
02有限域、多项式与编码基础FFT、Lagrange、消失多项式、RS code 为什么是证明系统基础设施?
03多项式承诺与 Fiat–Shamir 变换commitment、opening、Merkle oracle 与 transcript 各自保证什么?

第二组:Plonky2 的两条来源

Plonky2 不是“纯 PLONK”,也不是传统 AIR-STARK。它把 PLONKish 算术化和 permutation argument 接到 Merkle/FRI 后端,因此这里同时整理两条基础线。

编号文档记录的核心问题
04PLONK 算术化基础selector、wire、copy constraint、grand product 如何工作?
05PLONK 完整协议与 KZG 承诺quotient、linearization、随机点 opening 如何组成完整协议?
06PLONKish 自定义门与查表宽门、rotation、Plookup、LogUp 与 Lasso 分别解决什么问题?
07STARK 执行轨迹与 AIR / ALItrace constraints 如何变成低度多项式恒等式?
08FRI 与 DEEP-FRI 低度测试为什么折叠与少量查询能检测 RS proximity?

第三组:完整拆解 Plonky2

编号文档记录的核心问题
09Plonky2 算术化与 FRIGoldilocks、135 wires、部分积、Poseidon、FRI 如何拼成一份 proof?
10Plonky2 递归原理与工程verifier-in-circuit、Merkle cap、高元 FRI 与 cyclic recursion 为什么高效?

第四组:2.5 bridge,而不是虚构的“中间协议”

编号文档记录的核心问题
11Plonky2.5 跨系统递归桥旧版 Plonky3 proof 怎样成为 Plonky2 private witness?固定字段、AIR、MMCS、FRI schema 为什么限制兼容性?

第 11 篇只研究 QED 仓库中的具体 cross-verifier。它的价值是展示“在系统 A 中重演系统 B verifier”的完整边界,不应被理解为 Plonky2 与当前 Plonky3 之间的通用升级器。

第五组:从固定系统到 Plonky3 toolkit

编号文档记录的核心问题
12Plonky3 模块化架构Field、Domain、Matrix、MMCS、PCS、Challenger、AIR 如何经类型组合成 concrete proof system?
13Plonky3 的 FRI、LogUp 与原生递归动态高元 FRI、Batch-STARK、LogUp bus、multi-chip recursive verifier 如何工作?
14Circle STARK 与现代哈希型 PCSCircle FRI、STIR、WHIR 等新后端改变了哪些域与验证成本假设?

第六组:比较、迁移与审计

编号文档记录的核心问题
15递归、累积与折叠方案recursive verification、accumulation、Nova-style folding 为什么不是同一件事?
16Plonky 系列对照与迁移2、2.5、3 哪些层能类比,哪些 proof identity 和 wire format 必须重建?
17系统对比、参数与安全清单如何区分 proven/conjectured soundness、ZK、安全位、审计与性能声明?
18论文与官方资料索引每一个关键公式和当前实现状态应回到哪份一手资料?

3. 三组快速索引

关注 Plonky2

01 → 02 → 03 → 04 → 05 → 06 → 07 → 08 → 09 → 10

其中 04、06 给出宽门与 permutation 的语言,07、08 给出 FRI 后端所需的编码与低度测试语言。

关注当前 Plonky3 / zkVM

01 → 02 → 03 → 06 → 07 → 08 → 12 → 13 → 14 → 17

06 的 LogUp 与 07 的 AIR 是理解后续约束与 soundness 的必要背景。

关注从 Plonky2 到 Plonky3 的迁移

09 → 10 → 11 → 12 → 13 → 15 → 16 → 17

这条路线假定已经掌握 02–08。迁移对象是 relation、public-input schema、security parameters 与 recursion semantics,不是 crate major version。

4. 贯穿这些笔记的四层模型

任何具体系统都拆成四层:

核心对象Plonky2 例子Plonky3 例子
关系与算术化witness、trace、约束宽 PLONKish gates + permutationAIR / chips / buses
多项式 IOPquotient、随机线性组合gate/permutation quotientUni-STARK / Batch-STARK quotient
承诺与低度测试commit、open、proximityMerkle + FRI可组合 MMCS + PCS + FRI/WHIR
transcript 与封装challenges、ZK、recursionPoseidon challenger + recursive circuitChallenger trait + ZK PCS + native recursion

阅读任何公式时,先问它属于哪一层。许多错误都来自把“算术化名称”“承诺后端”和“最终 proof system”混成一个名词。

5. 先纠正四个常见误解

  • PLONK 不等于 KZG。 PLONK 首先是一套算术化与多项式 IOP;Plonky2 正是把 PLONKish 前端接到 FRI,而不是 KZG。
  • STARK 与 SNARK 不是严格反义词。 STARK 强调透明性、可扩展性与常见的哈希/编码路线;SNARK 描述 succinct argument 的性质。
  • Plonky3 不是 Plonky2 proof format 的第三版。 它是可组合 polynomial-IOP toolkit;不同类型参数可以产生不同 proof schema。
  • “证明系统”不自动意味着 zero-knowledge。 soundness、knowledge soundness、succinctness 与 witness privacy 是独立性质;ZK 必须有明确 hiding 机制与模拟论证。

6. 统一记号

  • $\mathbb F$:有限域;$q=\lvert\mathbb F\rvert$;
  • $H={1,\omega,\ldots,\omega^{n-1}}$:大小为 $n$ 的 evaluation domain;
  • $Z_H(X)$:$H$ 的消失多项式;
  • $L_i(X)$:第 $i$ 个 Lagrange 基多项式;
  • $\alpha,\beta,\gamma,\zeta$:Fiat–Shamir transcript 导出的随机挑战;
  • $\operatorname{Com}(f)$:多项式或 evaluation matrix 的承诺;
  • $x$:公开输入,$w$:私有 witness,$\pi$:证明。

不同论文的 challenge 名称、grand-product 方向和行下标可能相反;笔记保持内部一致,并在涉及源码时注明映射。

7. 阅读与渲染

  • 数学公式使用 LaTeX delimiters:行内 $…$、块级 \(...\)。
  • 图使用 Mermaid,并经过渲染级校验。
  • 每篇结尾按新编号提供唯一的上一篇、下一篇和总目录链接。
  • 这些笔记解释原理,不是 wire-format specification 或可直接部署的参数文件。生产系统必须重新核对 release、参数生成代码、安全证明与审计报告。

下一篇:技术全景与知识脉络

本文由作者按照 CC BY 4.0 进行授权