文章系统梳理了现代零知识证明中三类核心多项式承诺方案:KZG、IPA/Halo 与 FRI。KZG 以常数大小证明和极低验证成本取胜,但依赖可信设置与配对曲线;IPA/Halo 无需可信设置,且适合递归,但验证和证明尺寸更大;FRI 完全透明、具备后量子潜力,适合 STARK 体系,但证明体积最大、链上 calldata 成本高。文章还结合桌面、服务器和移动设备的基准测试,以及以太坊链上验证成本,给出了不同场景下的选择建议。
为现代零知识证明系统提供动力的三大多项式承诺家族之间取舍的实用指南。

这篇博文由意大利帕多瓦大学的 Matteo Campagnaro、Leonardo Callegari、Mattia Galassi 和 Mauro Conti 教授,以及来自 zkSecurity 的 Martín Ochoa 共同撰写。
零知识证明系统让一方(证明者)能够说服另一方(验证者)某个陈述为真,同时不泄露除该陈述有效性之外的任何信息。如今,它们已被用于区块链扩容(rollups)、私密交易和可验证计算。大多数现代证明系统的核心都依赖一个共同的原语:多项式承诺方案(PCS)。
为什么是多项式?因为现代证明系统中的大多数计算都可以编码为多项式恒等式。一旦以这种方式表达,证明者就会对一个多项式进行承诺(在不泄露其内容的情况下将其绑定),并随后在选定点将其打开,以说服验证者。PCS 使这种先承诺、后打开的工作流程既高效又安全。
在实际构造中,当一个 SNARK 验证一次计算,或一个 STARK 证明一条执行轨迹时,底层承担核心工作的正是多项式承诺方案。但并非所有 PCS 都相同。如今在实践中占主导地位的三大家族是 KZG、IPA/Halo 和 FRI,它们各自作出了根本不同的设计取舍。本文将拆解这些取舍分别是什么,以及每种方案在什么场景下表现最佳。
KZG 承诺由 Kate、Zaverucha 和 Goldberg 于 2010 年提出,建立在一个优雅而简单的代数思想之上。要证明一个多项式 ϕ(x) 在点 z 处的取值为 y,证明者需要表明 (x−z) 整除 ϕ(x)−y。也就是说:
ϕ(z)=y⟺(x−z)∣(ϕ(x)−y)
等价地,存在一个商多项式 q(x),使得:
ϕ(x)−y=q(x)⋅(x−z)
这个整除性检查通过椭圆曲线配对来实现。证明者在嵌入公共参数中的秘密点 α 处承诺 ϕ(α) 和 q(α),验证者则通过一个双线性配对方程来检查该关系:
e(C/gy,g)=?e(w,gα−z)
其中,C=gϕ(α) 是承诺,w=gq(α) 是打开见证。这使验证者无论多项式有多大,都只需 两次配对操作 就能确认该声明。
结果是:**常数大小的打开证明(一个群元素,在 BLS12-381 上约为 48 字节)**以及 O(1) 验证。
问题在于:KZG 需要一个 可信设置,即一个生成结构化参考字符串(SRS)的仪式,其形式为 (g,gα,gα2,…,gαt)。如果任何人得知 α,就可以伪造证明。在实践中,这通常通过多方计算仪式(如以太坊的 “Powers of Tau”)来缓解:只要有一个参与者是诚实的,安全性就成立。
Inner Product Argument(IPA)方案走的是另一条路径。它们不依赖配对和 toxic waste,而是依赖标准椭圆曲线群上的 Pedersen 向量承诺——无需结构化参考字符串。
核心思想是:假设证明者想让验证者相信两个向量 a,b∈Zqd 的内积为 z=⟨a,b⟩,其中 d 是被承诺多项式的度。给定独立生成元 G、H 和一个生成元 U,证明者承诺:
C=⟨a,G⟩+⟨b,H⟩+z⋅U
朴素的打开方式需要发送两个完整向量,也就是 O(d) 的通信量。突破点在于一种 folding 技术:证明者将每个向量分成左右两半,计算交叉项承诺 L 和 R,然后验证者给出一个随机挑战 u。利用 u,双方将向量和生成元折叠为长度减半的版本:
a′=aL+u−1⋅aR,b′=bL+u⋅bR
新的承诺 C′=u−1⋅L+C+u⋅R 在代数上与原始承诺一致,但现在只涉及长度减半的向量。经过 logd 轮 folding 后,向量会缩减为可以直接检查的单个标量。这将通信量从 O(d) 降低到 O(logd)。
Halo 在此基础上更进一步,实现了 无需可信设置的递归证明组合,这是构建能够验证自身证明的证明系统的一项突破。Halo 还引入了一项优化,使验证者可以在 O(d) 总时间内直接从原始生成元推导出最终折叠后的生成元,从而避免逐轮重新计算。
其取舍在于:证明大小增长到 O(logd)(通常为 1.5–3 KB),并且验证需要一次线性规模的 multi-scalar multiplication,因此比 KZG 的两次配对更重。但消除了可信设置,并且原生支持递归,使基于 IPA 的方案对于长期运行且可升级的系统非常有吸引力。
FRI(Fast Reed-Solomon Interactive Oracle Proof of Proximity) 完全抛弃了椭圆曲线。证明者在一个大型求值域上对一个 d 次多项式求值,通过 Merkle 树对这些求值结果进行承诺,然后递归地折叠求值表。在每一轮 i 中,使用一个随机挑战 αi 来组合成对的求值:
fi+1(y)=fi(x)+fi(−x)2+αi⋅fi(x)−fi(−x)2x
其中 y=x2。直观地说,这会将 fi 分解为偶部和奇部,并利用随机挑战 αi 将它们重新组合。每一步都会将域大小和度上界都减半。经过 log2d 轮后,验证者会沿着折叠层中的随机路径抽查一致性。
可靠性依赖于 Reed-Solomon 码的距离性质:两个不同的、次数至多为 d 的多项式,最多只能在 d 个求值点上相同,因此任何作弊证明者都会以高概率被随机抽样抓住。
FRI 的安全性建立在 抗碰撞哈希函数和编码理论距离 之上,没有代数困难性假设。这使它 有理由被认为具备后量子安全性,并且完全 透明(完全不需要设置仪式)。
代价是:证明显著更大,按 O(log2d) 缩放,通常落在 40–200 KB 范围。
| KZG | IPA / Halo | FRI | |
|---|---|---|---|
| 证明大小 | O(1) — ≈48 B | O(logd) — 1.5–3 KB | O(log2d) — 40–200 KB |
| 验证者复杂度 | O(1) — 2 次配对 | O(logd) 轮 + MSM * | O(log2d) — 哈希检查 |
| 证明者复杂度 | O(d) — MSM 主导 | O(d) — MSM 主导 | O(dlogd) — FFT + 哈希 |
| 设置 | 可信(SRS) | 透明 / 无 | 透明 |
| 假设 | 配对,双线性群 | 离散对数(EC) | 哈希函数,编码理论 |
| 后量子 | 否 | 否 | 是 |
\* IPA 验证涉及 O(logd) 轮,但每轮的 MSM 工作和最终检查可能使朴素实现的总成本达到 O(d)。像 Halo 这样的现代实现会在递归验证层之间摊销这一成本。
从这张表中可以得到一个关键洞见:不存在普遍最优的方案。KZG 在简洁性上胜出,FRI 在信任假设和量子抗性上胜出,而 IPA 则凭借透明设置和递归支持开辟了一个中间地带。
理论是一回事,但这些方案在真实硬件上的实际表现如何?使用 Remco Bloemen 的多项式承诺基准测试,我们可以比较笔记本、服务器和移动设备上的证明者侧承诺吞吐量。

Apple M1 Max 上,证明者侧承诺吞吐量(field elements/sec)与多项式大小的关系。基于 FRI 的实现(Winterfell、Plonky2)在大多数规模下占据主导,Winterfell 维持约 107 elements/sec。基于 MSM 的方案(KZG、IPA)在约 106 elements/sec 处进入平台期。图来自 Remco Bloemen,CC-BY-4.0。
在笔记本上,基于 FRI 的方案明显胜出。哈希操作和域算术速度快且缓存友好,使 Winterfell(FRI/Blake3)在中等多项式规模下的吞吐量大约比最佳 KZG 实现高 10 倍。

服务器硬件上的相同测量。在 96 核下,基于 MSM 的方案(尤其是 gnark-KZG)扩展性显著提升,并缩小了与 FRI 的差距。更大的内存也支持规模大得多的多项式。图来自 Remco Bloemen,CC-BY-4.0。
在高性能服务器上,情况发生了变化。multi-scalar multiplication 能很好地在多核间并行化,因此像 gnark 这样的 KZG 实现显著缩小了差距。FRI 仍然领先,但优势从 10 倍缩小到约 2–3 倍。

在移动硬件上,内存限制将多项式规模限制在约 224。FRI 方案(Winterfell、Plonky2)在资源受限环境下保持了明显的吞吐量优势。图来自 Remco Bloemen,CC-BY-4.0。
在受限的移动硬件上,FRI 的优势更加明显。内存限制和热降频会严重影响基于 MSM 的方案,而 FRI 的基于哈希的操作仍保持高效。这使 FRI 对隐私保护型移动应用中的 客户端证明 尤其有吸引力。
对于区块链应用来说,证明者速度只是故事的一半。链上验证成本,以 Gas 衡量,往往才是真正的约束。下表估算了在以太坊 L1 上验证每种 PCS 的链上成本;实际成本会因实现和 calldata 定价而异。
| Scheme | Dominant Cost | Approx. Gas |
|---|---|---|
| KZG | 配对预编译 | ∼100k–200k |
| IPA / Halo | VM 中的 EC 操作 | O(d) — 线性缩放 |
| FRI | 哈希 + calldata | ∼700k–3M |
KZG 验证只需要两次配对操作。在 EIP-1108 之后,ecPairing 预编译的成本为 34,000×k+45,000 gas(其中 k 是配对数量),因此一次 KZG 打开检查约为 113k gas。
对于 IPA/Halo 风格的多项式承诺,我们不给出固定的 Gas 估计,因为其验证成本取决于多项式次数,主要由随次数线性缩放的大型 multi-scalar multiplication 主导。以太坊没有针对该操作的预编译,这使得直接在链上进行 IPA 验证在实践中成本高到不可接受。内部使用基于 IPA 证明的系统,在面向链上验证时,通常依赖递归、聚合,或像 KZG 这样的替代后端。
FRI 验证涉及沿着 Merkle 认证路径进行哈希检查,这些检查相对便宜,约为 50k–100k gas。然而,FRI 证明很大(40–200 KB),并且 calldata 成本占主导:按每个非零字节 16 gas 计算,仅证明数据就需要 640k–3.2M gas。这与独立估算一致,即在以太坊上原始 STARK 验证处于数百万 Gas 的范围。在实践中,像 StarkEx 这样的系统会将其摊销到数千笔交易上,或将 STARK 包装在 SNARK 内部以降低成本,但代价是重新引入基于配对的假设。
在以下情况下选择 KZG:
在以下情况下选择 IPA/Halo:
在以下情况下选择 FRI:
多项式承诺方案并不是可以互换的组件。它们体现了证明大小、验证成本、信任假设和面向未来能力之间的深层取舍。“正确”的选择取决于你的部署环境:目标硬件、是否进行链上验证、你对后量子安全性的重视程度,以及可信设置是否可行。
除了 KZG、IPA 和 FRI 之外,新兴替代方案还包括基于 code/folding 的 PCS(Brakedown、BaseFold、Binius)、透明的基于配对的 PCS(Dory),以及 hidden-order-group PCS(DARK)。这些方案都很有前景,但如今在生产环境中的部署广泛程度仍不如这三大方案。随着证明系统不断成熟,以及这些较新构造获得更多采用,相关取舍也将继续变化。但就目前而言,理解 KZG/IPA/FRI 这三者之间的关系,对于任何使用零知识证明进行构建的人来说都至关重要。
感谢 Nicolas Mohnblatt 对这篇博文提出的宝贵反馈。
zkSecurity 为密码学系统提供审计、研究和开发服务,包括零知识证明、MPC、FHE 和共识协议。
- 原文链接: blog.zksecurity.xyz/post...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码