Archipelago

Lec 15Sumcheck 协议

讲义完成更新于 2026-09-16

Lec 15 Sumcheck 协议

MIT 6.5610 · Lecture 15 · 关键词:sumcheck、多元多项式、交互式证明、可靠性、Schwartz–Zippel、复杂度 说明:以标准处理撰写(LFKN 1992),要点与本课"Sumcheck Protocol"一致。


TL;DR

  • Sumcheck 把多元多项式在布尔超立方体上的大规模求和,逐轮归约为一个随机点上的求值。
  • 可靠性来自低度多项式在随机点碰巧相等的概率很低,即 Schwartz–Zippel 引理。
  • 验证者工作量很小,但最终仍需获得或验证目标多项式在随机点的值。

0. 目标

证明者 PP 想让验证者 VV 相信一个多元低次多项式在布尔超立方上的求和值: H=∑b1∈{0,1}∑b2∈{0,1}⋯∑bn∈{0,1}g(b1,…,bn).H = \sum_{b_1\in\{0,1\}}\sum_{b_2\in\{0,1\}}\cdots\sum_{b_n\in\{0,1\}} g(b_1,\dots,b_n). 直接算需 2n2^n 项;sumcheck 让 VV 只用 O(n)O(n) 轮、每轮收一个单变量低次多项式就能高可信地验证 HH,无需自己遍历指数项。这是 GKR(L18)、zk-SNARK(L19)的核心引擎。


1. 协议(逐变量"剥皮")

设 gg 在每个变量上次数 ≤d\le d。

定理

Sumcheck 第 ii 轮

  • PP 发单变量多项式 gi(Xi)=∑bi+1,…,bn∈{0,1}g(r1,…,ri−1,Xi,bi+1,…,bn),g_i(X_i) = \sum_{b_{i+1},\dots,b_n\in\{0,1\}} g(r_1,\dots,r_{i-1}, X_i, b_{i+1},\dots,b_n), 即固定前 i−1i-1 个变量为已抽取的随机 rr、第 ii 个为自由变量、其余求和。
  • VV 检查 gi(0)+gi(1)g_i(0)+g_i(1) 是否等于上一轮约定的值(第 1 轮检查 g1(0)+g1(1)=Hg_1(0)+g_1(1)=H)。
  • VV 抽随机 ri←RFr_i\xleftarrow{R}\mathbb{F},把约定值更新为 gi(ri)g_i(r_i),进入下一轮。
  • 末轮:所有变量定为随机点 r\mathbf{r},VV 自行单点求值 g(r)g(\mathbf{r}) 与最后约定值比对(这一次求值 VV 可独立完成,或借助预言机)。 :::

2. 可靠性(为何作弊会被抓)

🔎 核心论证:若 PP 一开始谎报 H′≠HH'\ne H,则它在某轮必须发一个错误的 gig_i。VV 在随机点 rir_i 处求值时,两个不同的次数 ≤d\le d 多项式至多在 dd 个点相等(Schwartz–Zippel / 多项式恒等检验),故 VV 抽到"恰好相等"的坏点概率 ≤d/∣F∣\le d/|\mathbb{F}|。错误像滚雪球一样被推到下一轮,最终在末轮单点求值处几乎必然暴露。总作弊成功率 ≤nd/∣F∣\le nd/|\mathbb{F}|,取大域即可忽略。

完备性:诚实 PP 必通过。 可靠性:谎报者通过概率 ≤nd/∣F∣\le nd/|\mathbb{F}|。


3. 复杂度

  • 轮数:nn(变量数)。
  • VV 工作量:每轮收一个 ≤d\le d 次多项式(d+1d+1 个系数)+ 一次域运算;末轮一次 gg 单点求值。总计 O(nd)O(nd) —— 远小于 2n2^n。
  • PP 工作量:需对每轮的和式求值,朴素 O(2n)O(2^n),但对结构化 gg 可优化。

🔎 威力所在:把"验证一个指数大求和"压成"验证 nn 个单变量低次多项式 + 一次单点求值"。验证者几乎不干活,却能高可信地相信一个它无法独立计算的巨型求和——这正是可验证计算/简洁证明的灵魂。


4. 工程视角

  • Sumcheck 是现代证明系统的"瑞士军刀":GKR(L18)用它逐层验证电路;许多 zk-SNARK/STARK(L19)的算术化最终归结为 sumcheck。
  • 与 Fiat–Shamir(L11)结合可去交互 → 非交互简洁证明。
  • 实践框架:将"计算正确性"编码为多项式恒等,再用 sumcheck 让验证者以亚线性代价检验。

5. Sumcheck 协议小结

  • Sumcheck 验证 2n2^n 项求和,仅需 O(n)O(n) 轮、验证者 O(nd)O(nd)。
  • 每轮"剥"一个变量:PP 发单变量多项式,VV 查一致性并随机降维。
  • 可靠性靠 Schwartz–Zippel:错误多项式在随机点几乎必露馅。
  • 是 GKR / SNARK 的核心引擎。

我的理解

Sumcheck 压缩了巨大求和声明,但不会免费解决最终求值;验证者如何获得最后一个点值决定协议如何继续组合。