Lec 18GKR 协议
Lec 18 GKR 协议
MIT 6.5610 · Lecture 18 · 关键词:GKR、可验证计算、电路求值、逐层 sumcheck、多线性扩展、对数空间验证者 说明:以标准处理撰写(Goldwasser–Kalai–Rothblum 2008),要点与本课"GKR Protocol"一致。
TL;DR
- GKR 把分层算术电路的输出正确性,逐层归约为输入层上的少量随机点求值。
- 每一层借助 Sumcheck 与布线多项式压缩声明,避免验证者重做整个计算。
- 它改善验证复杂度,但是否零知识、是否需要预处理仍取决于具体协议组合。
0. 目标
把一个分层算术电路的求值结果交给验证者,让其以远低于重新计算的代价确信结果正确——"委托计算(delegating computation)"。GKR 让验证者工作量近似与电路深度成正比、而非电路规模,且无需密码假设(信息论安全的交互证明)。
1. 设置:分层算术电路
电路有 层,每层是 上的加法/乘法门。第 层的值由第 层决定。把每层的值看成函数 (输入是门的二进制编号),取其多线性扩展(multilinear extension, MLE) 延拓到整个 。
🔎 MLE 唯一性:布尔超立方上的任意函数有唯一的多线性扩展。把"层的值表"提升为低次多项式,正是为了能用 sumcheck(L15)这类多项式工具去验证。
2. 核心:逐层归约 + Sumcheck
定理
GKR 主循环 对每一层 ,相邻层之间满足一条 "布线恒等式": 其中 是描述布线(哪个门连哪两个门)的"布线谓词"多项式。
- 对该求和跑一次 sumcheck:把"验证第 层在随机点 的值"归约为"验证第 层在两个随机点 的值"。 :::
🔎 逐层下推:验证者从输出层(它能直接看到声称的输出)开始,用 sumcheck 把对第 层的信任,转化为对更靠近输入的第 层在某随机点取值的信任;一层层推到输入层,验证者对输入有完整访问,可自行单点求值 完成最终核对。每层一次 sumcheck,可靠性由 Schwartz–Zippel 累积控制。
(两点 通常用一条直线 + "reduce-to-one-point"技巧合并成单点,避免点数指数膨胀。)
3. 复杂度与意义
- 验证者: —— 与电路深度 、对数规模成正比,远小于 。
- 证明者:(精心实现可做到线性)。
- 轮数:。
- 信息论安全:无需任何密码假设(可用 Fiat–Shamir 去交互后再变成密码假设下的非交互论证)。
完备性:诚实证明者必通过。 可靠性:错误结果通过概率 ,大域下可忽略。
4. 工程视角
- GKR 是"结构化计算的高效可验证外包"代表:把可表示为浅而规则电路的计算(如某些 ML 推理、数据并行任务)委托给不可信方并廉价验证。
- 是许多现代 SNARK(如基于 sumcheck 的 Spartan/Hyrax/Libra)的骨架;配合多项式承诺即得简洁论证。
- 局限:要求电路分层、规则(布线谓词可低次表示);非结构化电路 GKR 优势减弱。
5. GKR 协议小结
- GKR 验证分层算术电路求值,验证者代价 ~ 深度而非规模。
- 每层一条 add/mult 布线恒等式 → 一次 sumcheck,把"信任本层"下推为"信任下一层随机点"。
- 推到输入层时验证者自行求值收尾;信息论安全。
- 现代 sumcheck 系 SNARK 的核心。
我的理解
GKR 的关键不是一次证明整个电路,而是递归压缩“这一层算对了”的声明,直到验证者能自行检查输入层。