什么是 Sumcheck?
Sumcheck 是一种交互式证明协议(Interactive Proof Protocol, IOP),用于让证明者(Prover)向验证者(Verifier)证明一个多元多项式求和结果的正确性,而无需直接计算所有项。它的核心思想是通过分轮次(rounds)的挑战-响应,将高维求和问题逐步简化为单点验证。
核心应用场景
- 零知识证明(ZKP):如 GKR 协议、SNARKs 的底层优化。
- 计算验证:验证大规模矩阵/多项式运算(如 Tensor 计算、ML 推理)。
- 区块链:轻节点验证链上计算的正确性(如 Rollups)。
协议流程(以二元多项式为例)
对于一个列表 $L=[y_0, y_1, ..., y_{n-1}]$,$n=2^m$,构造一个多项式 $g(x_m, ..., x_2, x_1)$,是一个 multilinear extension,计算结果为列表 $L$ 中的值:
$$ \begin{align} & g(0, ..., 0, 0)=y_0 \\ & ... \\ & g(1, ..., 1, 1)=y_{n-1} \end{align} $$
例如,$L=[1, 2, 3, 5]$,prover 需要向 verifier 证明 $Sum(L) = 11$。因为列表长度 $n=4=2^2$,所以 $m = 2$。有
$$ \begin{align} & g(0,0)=1\\ & g(0, 1)=2\\ & g(1,0)=3\\ & g(1,1)=5\\ \end{align} $$
所以 $g(x_2,x_1)=1(1-x_2)(1-x_1) + 2(1-x_2)x_1+3x_2(1-x_1)+5x_2x_1=1+2x_2+x_1+x_2x_1$
问题变为 prover 向 verifier 证明 $\sum_{x_2 \in \{0,1\}}\sum_{x_1 \in \{0,1\}}g(x_2, x_1) = 11$
步骤:
第一轮(对 $x_1$ 求和)
prover 发送一个关于 $x_1$ 的单变量多项式:
$$ g_1(x_1)=\sum_{x_2 \in \{0,1\}}g(x_2,x_1) = g(0, x_1) + g(1, x_1) = 4 + 3x_1 $$
verifier 检查 $11 = g_1(0) + g_1(1) = 4 + 7$,并随机选择 一个挑战值 $r_1=3 \in \text{F}$
第二轮(对 $x_2$ 求和)
prover 发送一个关于 $x_2$ 的单变量多项式:
$$ g_2(x_2)=g(x_2,r_1)=4 + 5x_2 $$
verifier 检查 ${g_1(r_1)=g_2(0) + g_2(1)}$,并随机选择 一个挑战值 $r_2=7 \in \text{F}$
$g_1(r_1)=g_1(3) = 13$
$g_2(0)+g_2(1) = 4 + 9 = 13$
最终验证
verifier 检查 $g(r_2,r_1)=g_2(r_2)$
$g(r_2,r_1) = g(7,3)= 1 + 14 + 3 + 21 = 39$
$g_2(r_2)=g_2(7)=4 + 35 = 39$
关键数学原理
- 多项式分解:将多元多项式逐变量分解为单变量多项式。
- Schwartz-Zippel 引理:若 $g_1(x)$ 是正确的多项式,则随机采样 $r_1$ 时,作弊概率 $≤ \frac{deg(g)}{∣F∣}$
- 递归简化:每轮将问题维度降低一阶。
复杂度分析
指标 | 成本 |
---|---|
证明者计算 | O(2^n)(初始计算) |
验证者计算 | O(n) 次域运算 |
通信轮次 | n 轮(变量数) |
通信量 | O(n⋅deg(g)) |
应用
应用
下面里例子展示了如何将一般计算映射到 Sumcheck,也称算术化(Arithmetization)。
prover 希望证明以上输入输出关系,而无需 verifier 进行实际的计算。
prover 可以构造以下 3 个多项式:
$$ \begin{align} & in_1(x) = in_{11} \cdot (1-x) + in_{12} \cdot x \\ & in_2(x) = in_{21} \cdot (1-x) + in_{22} \cdot x \\ & out(x) = out_{1} \cdot (1-x) + out_{2} \cdot x \\ \end{align} $$
并构造另外两个辅助多项式:
$$ \begin{align} & add(x) = 1 \cdot (1-x) + 0 \cdot x \space \space \space \space\text{Addition Indicatior} \\ & mult(x) = 0 \cdot (1-x) + 1 \cdot x \space \space \text{Multiplication Indicatior} \\ \end{align} $$
以上 5 个多项式组合为如下 prover 想要证明的等式:
$$ add(x) \cdot (in_1(x) + in_2(x)) + mult(x) \cdot (in_1(x) \cdot in_2(x)) = out(x) $$
将以上等式重排列:
$$ add(x) \cdot in_1(x) + add(x) \cdot in_2(x) + mult(x) \cdot in_1(x) \cdot in_2(x) - out(x) = 0 $$
这是一个 Sumcheck 实例,和为 0,也称为 Zerocheck
参考
DeepSeek
没有评论