本文是Circle STARK系列文章的第四部分,旨在将前三部分介绍的Mersenne素数域、Circle曲线、域定义、Circle FFT算法及维度间隙等概念整合,构建一个完整的Circle STARK协议。

这篇收官文章将我们在 Part I–III 中构建的所有内容串联起来。我们的目标是展示这些要素如何组合成一个完整的 Circle STARK。
我们首先描述 circle curve 上的 arithmetization。接着介绍 Circle FRI,这是一种用于确保多项式满足 degree bound 的 low-degree test。最后,我们完整讲解 Circle STARK 的构造。
执行 trace 本质上就是计算过程的记录:每一行对应一个 step 或一个 clock cycle,每一列记录一个 register 的演化,而每个条目都位于 Mersenne prime field $F_p$ 中。如果计算有 $N$ 个 cycle,并涉及 $w$ 个 register,那么 trace table 的大小就是 $N \times w$。Arithmetization 就是把这个表中的局部 transition rules 编码为在整个 domain 上成立的 polynomial identities,从而把对计算过程的推理归约为对多项式 evaluations 的检查。
我们用一个包含 $N=2^n$ 行和 $w$ 列的 trace table 来定义计算。这个表中的每个单元都是 $F_p$ 中的一个元素。我们可以用 $w$ 个 column vectors 来表示整个 trace:
$$ t_1,\dots,t_w \in F_p^N $$
假设 $H$ 是一个大小为 $N=2^n$ 的 standard position coset。我们将使用 Circle FFT 在 trace domain $H$ 上对每个 trace 列 $t_i$ 进行插值,从而得到定义在 circle curve 上的 bivariate polynomials $p_i$。这些多项式属于 circle curve 上的二元多项式空间,即 $p_i \in L_N(F_p), i=1,\dots,w$
Prover 通过对这些列多项式 $p_i$ 在一个 evaluation domain $D$ 上的 evaluations 进行承诺来提交它们,而 $D$ 的大小比 trace domain $H$ 大 $2^B$ 倍,即
$$ \frac{|D|}{|H|}=2^B, |D|=2^{B+n} $$
其中 $B \ge 1$。多项式 $p_i$ 在 evaluation domain $D$ 上的 evaluations 通过 Merkle tree 进行承诺。
现在我们要在 trace table 上加入约束。假设我们总共加入了 $C$ 个约束。为简便起见,这里只描述关于相邻行的约束:
$$ P_j(s_j,p_1,\dots,p_w,p_1 \circ T_G,\dots,p_w \circ T_G)=0, j=1,\dots,C $$
这里,$p_i \circ T_G$ 表示对列多项式 $p_i$ 进行由生成元 $G$ 诱导的平移,其中 $T_G(P)=G \cdot P$。trace domain 是一个 coset $H=Q \cdot G_n$,其中 $G_n$ 是一个大小为 $N=2^n$ 的子群,而 $Q$ 是一个 offset。每一列 $p_i$ 都是在 trace domain $H$ 上插值得到的,可表示为:
$$ H=Q \cdot G_n={Q,Q \cdot G,Q \cdot G^2,\dots,Q \cdot G^{2^n-1}} $$
因此,$p_i \circ T_G$ 对应于 trace 的“下一行”。约束 $P_j$ 是根据列多项式 $p_i$ 和预定义的 selector polynomial $s_j$ 定义的,其中 $s_j$ 用来决定约束 $P_j$ 应该作用于哪些行。
注意
这些 selector polynomials $s_j$ 具体是什么样的?
它们属于哪个 polynomial space?
假设我们希望将约束 $P_j$ 应用于子 domain $H_j \subset H$。那么 selector polynomial $s_j$ 应该在 $H_j$ 中的点上取某个非零值,而在 $H \setminus H_j$ 中的点上取零值。换一种说法,$s_j$ 应该在 $H_j$ 之外 vanish。它们定义如下: $$ s_j=\frac{v_H}{v_{H_j}} $$ 其中 $v_H$ 和 $v_{H_j}$ 分别是 $H$ 和 $H_j$ 的 vanishing polynomials。
尽管 $s_j$ 被定义为一个 rational function,但在 circle curve 上它实际上是一个多项式。原因在于,全局 vanishing polynomial $v_H$ 在更小的 domain $H_j$ 上 vanish,因此 $v_H$ 可被 $v_{H_j}$ 整除。于是,比例 $v_H/v_{H_j}$ 不会出现 pole。更多细节请参见 Lemma 10, Circle STARKs。
我们知道 $\deg(v_H)=2^{n-1}=N/2$ 且 $v_H \in L_N(F_p)$(参见 Dimension Gap, Part III)。因此,$s_j$ 也属于多项式空间 $L_N(F_p)$。
现在,我们不再分别证明这 $C$ 个约束,而是将它们批量合并成一个。Verifier 从 $F_p$ 的 extension field $F$ 中选择一个随机的 $\beta$。Prover 计算:
$$ \sum_{j=1}^C \beta^{j-1} P_j(s_j,p_1,\dots,p_w,p_1 \circ T_G,\dots,p_w \circ T_G)=0 $$
为了证明上述恒等式在整个 trace domain $H$ 上成立,prover 计算 quotient polynomial $q$:
$$ \sum_{j=1}^C \beta^{j-1} P_j(s_j,p_1,\dots,p_w,p_1 \circ T_G,\dots,p_w \circ T_G)=q \cdot v_H $$
这样的 quotient $q$ 必然存在,因为如果所有约束在整个 $H$ 上都成立,那么左边在 $H$ 上 vanish,因此可被 $v_H$ 整除。
注意
quotient polynomial $q$ 的 degree 是多少?
它属于哪个 polynomial space?
设每个 $P_j$ 的 degree 至多为 $d$。多项式 $s_j,p_i,\dots,p_w,p_i \circ T,\dots,p_w \circ T$ 都属于最大 degree 为 $N/2$ 的空间 $L_N(F_p)$。因此,下面表达式左边的最大 degree 是 $dN/2$。 $$ \sum_{j=1}^C \beta^{j-1} P_j(s_j,p_1,\dots,p_w,p_1 \circ T_G,\dots,p_w \circ T_G)=q \cdot v_H $$ 而 $v_H$ 的 degree 是 $N/2$。因此,$q$ 的 degree 是 $(d-1)N/2$,且 $q$ 属于多项式空间 $q \in L_{(d-1)N}(F)$。注意,$q$ 定义在 extension field $F$ 上,因为 $\beta$ 是从 $F$ 中采样的。
现在 prover 需要证明列多项式 $p_i$ 的 degree $\le N/2$,以及 quotient polynomial $q$ 的 degree $\le (d-1)N/2$。为了让所有多项式的 degree bound 统一为 $\le N/2$,我们将 quotient polynomial $q \in L_{(d-1)N}(F)$ 分解成多项式 $q_1,\dots,q_{d-1} \in L_N(F)$,如下:
$$ q=\lambda \cdot v_{\bar{H}}+\sum_{k=1}^{d-1}\frac{v_{\bar{H}}}{v_{H_k}}\cdot q_k $$
其中 $\bar{H}=\bigcup_{k=1}^{d-1}H_k$ 是由若干个大小为 $|H_k|=N$ 的 twin-cosets 构成的不相交并集。
注意
关于 quotient polynomial $q$ 分解的直观理解
quotient polynomial $q$ 属于空间 $L_{(d-1)N}(F)$,其维度为 $(d-1)N+1$。$q$ 的分解来自于对多项式空间 $L_{(d-1)N}(F)$ 的分解,其形式如下: $$ L_{(d-1)N}(F)=\langle v_{\bar{H}} \rangle+L_{(d-1)N}'(F) $$ 其中空间 $L_{(d-1)N}'(F)$ 的维度为 $(d-1)N$。
上述分解与 Dimension Gap, Part III 中 $L_N(F)$ 的分解非常相似: $$ L_N(F)=\langle v_n \rangle+L_N'(F) $$
现在我们可以进一步将空间 $L_{(d-1)N}'(F)$ 中的多项式分解为 $(d-1)$ 个来自空间 $L_N'(F)$ 的多项式,并结合 $L_{(d-1)N}'(F)$ 相对于 $L_N'(F)$ 的某组 basis。也就是说,$q_k$ 是来自空间 $L_N'(F)$ 的这 $(d-1)$ 个多项式,而 $v_{\bar{H}}/v_{H_k}$ 则是 $L_{(d-1)N}'(F)$ 相对于 $L_N'(F)$ 的 basis。
这为 quotient polynomial $q$ 的分解提供了直观理解。完整证明请参见 Lemma 12, Circle STARKs。
因此,prover 必须证明下面这个等式成立:
$$ (1)\sum_{j=1}^C \beta^{j-1} P_j(s_j,p_1,\dots,p_w,p_1 \circ T_G,\dots,p_w \circ T_G) \stackrel{?}{=} \left(\lambda \cdot v_{\bar{H}}+\sum_{k=1}^{d-1}\frac{v_{\bar{H}}}{v_{H_k}}\cdot q_k\right) \cdot v_H $$
并证明多项式 $p_i, q_k$ 的 degree 都满足 $\le N/2$。下面我们将介绍 Circle FRI 来证明后者。
Circle FRI 用于测试定义在 evaluation domain $D$ 上、大小为 $|D|=2^{n+B}$ 的函数 $f \in F^D$,是否接近多项式空间 $L_N(F)$ 中的某个多项式 $p(x,y)$。函数 $f \in F^D$ 被表示为它在 domain $D$ 上的 evaluations 向量。
这里:
$$ L_N(F)=L_N'(F)+\langle v_n \rangle $$
注意
为什么要检查与某个多项式的 proximity?
Prover 会向 verifier 发送某个函数的 evaluations。然而,verifier 并不知道这个函数是否真的是一个多项式,或者它是否满足预先指定的 degree bound。FRI 使 verifier 能够检查 prover 发送的这些 evaluations 是否确实“接近”某个 degree 有界的多项式。这里 verifier 检查的只是 proximity;也就是说,即使 prover 发送的 evaluations 只是“足够接近”某个 degree 有界多项式的 evaluations,verifier 也会接受。
Circle FRI 采用了与 Circle FFT 算法类似的 divide-and-conquer 策略。Prover 递归地分解函数,并利用 verifier 发送的 randomness 将 odd 和 even 两部分折叠起来。这个归约过程会持续进行,直到折叠后函数到 polynomial space 的 proximity claim 足够小,小到 verifier 可以直接检查;在这种情况下,prover 会直接将折叠后的函数发送给 verifier。
下图展示了 Circle FRI 算法在使用一条 2-to-1 映射链时,经过 $r$ 轮 folding 后得到的 domain 序列。
如上图所示,我们像在 circle FFT 算法中那样使用两种不同的映射:projection map $\pi_x$ 和 squaring map $\pi$。协议从一个大小为 $2^m$ 的 standard position coset $D_m$ 开始,其中 $m=B+n$,然后通过映射 $\pi_x$ 投影到 x-axis 上,以计算 quotient $D_m/J$。之后再应用映射 $\pi$ 进行 $(r-1)$ 轮,得到包含 $2^{m-r}$ 个元素的 quotient $D_{m-r+1}/J$。关于这些映射的更多信息,请参见 Sequence of Domains for Circle FFT, Part III。为了记号方便,我们将第 $j$ 轮的 domain 和 map 分别记为 $S_j$ 和 $\pi_j$。
在 Circle FRI 的每一步中,prover 都会按照上述 domain 序列对函数进行分解和折叠。不过在 folding 之前,prover 会先将 $f \in L_N(F)$ 分解为:
$$ f=g+\lambda \cdot v_n, $$
其中 $g$ 来自 FFT space $L_N'(F)$,$\lambda \in F$,而 $v_n$ 是大小为 $N=2^n$ 的 standard position coset 的 vanishing polynomial。这样就把 $f$ 到 $L_N(F)$ 的 proximity claim 归约为 $g$ 到 FFT space $L_N'(F)$ 的 proximity claim,而后者会通过对 $g$ 的重复 folding 来进行检查。
我们从 $g=g_0 \in F^{S_0}$ 到 FFT space $L^{(0)}=L_N'(F)$ 的 proximity claim 开始。在每一轮 $j=1,\dots,r$ 中,我们把前一轮中 $g_{j-1} \in F^{S_{j-1}}$ 到 $L^{(j-1)}$ 的 proximity claim,归约为新的 $g_j \in F^{S_j}$ 到 FFT space $L^{(j)}$ 的 proximity claim,其中
$$ L^{(j)}=F[X]_{<N/2^j} $$
下面我们将详细解释完整协议以及上述归约。Prover 拥有一个函数 $f \in F^D$,而 verifier 获得了一个访问 $f$ 的 oracle。该协议由一个 commit phase 和一个 query phase 组成。
在 query phase 中,verifier 使用 prover 发送的 oracles 来检查 prover 是否正确执行了 folding。它包含 $s \ge 1$ 轮。在每一轮中:
Verifier 从 $D$ 中采样 $(x_0,y_0) \in D$,并将每个 map 作用到元素 $(x_0,y_0)$ 上,从而得到 projection trace 上每个 domain 中的一个元素,如下所示: $$ x_j=\pi_j(x_{j-1}),\text{for } j \in {1,\dots,r} $$ 然后 verifier 查询上述 projection trace 上各点处的 $f$ 和 $g_j$ 的 oracle 值。
Verifier 按如下方式检查第一轮 folding,即在 $(x_0,y_0)$ 处检查等式 (2)。注意这里 $X_1=\pi_1(x_0)=x_0$,因为 $\pi_1$ 是 projection map $\pi_x$。 $$ g_1(x_0) \stackrel{?}{=} \left(\frac{g_0(x_0,y_0)+g_0(x_0,-y_0)}{2}\right)+\lambda_1 \cdot \left(\frac{g_0(x_0,y_0)-g_0(x_0,-y_0)}{2 \cdot y_0}\right) $$
Verifier 检查后续 folding 轮次中的等式 (3),即对所有 $j \in {2,\dots,r}$ 检查: $$ g_j(x_j) \stackrel{?}{=} \left(\frac{g_{j-1}(x_{j-1})+g_{j-1}(-x_{j-1})}{2}\right)+\lambda_j \cdot \left(\frac{g_{j-1}(x_{j-1})-g_{j-1}(-x_{j-1})}{2 \cdot x_{j-1}}\right) $$
如果上述所有检查在全部 $s$ 轮中都通过,则 verifier 接受;否则拒绝。
在本节中,我们给出一些关于 FRI 协议安全性的直观理解。Prover 大致有两种作弊方式:
在本节中,我们将把本系列迄今为止介绍的所有想法结合起来,构造 Circle STARK 协议。给定长度为 $N=2^n$ 的 trace table,将其表示为 $w$ 列,即
$$ t_1,\dots,t_w \in F_p^N $$
协议流程如下:
Trace Commitment:Prover 使用 circle FFT 将每个 trace 列 $t_i$ 插值为 trace domain $H$ 上的 bivariate polynomial $p_i$。然后在 evaluation domain $D$ 上对这些多项式 $p_i$ 求值,并用 Merkle tree 对得到的 evaluation vector 进行承诺。Prover 将每个 $p_i$ 的 evaluations 对应的 Merkle commitment 发送给 verifier。
Arithmetization:Verifier 发送随机的 $\beta$,用于将所有约束批处理为一个。Prover 计算 $q$,并将其分解得到 $\lambda$ 和各个 $q_k$ 多项式。每个 $q_k$ 都像 trace 多项式一样在 $D$ 上进行承诺。Prover 将每个 $q_k$ 的 evaluations 对应的 Merkle commitment 以及 $\lambda$ 发送给 verifier。此时 prover 必须证明等式 (1) 成立,即
$$ \sum_{j=1}^C \beta^{j-1} P_j(s_j,p_1,\dots,p_w,p_1 \circ T_G,\dots,p_w \circ T_G) \stackrel{?}{=} \left(\lambda \cdot v_{\bar{H}}+\sum_{k=1}^{d-1}\frac{v_{\bar{H}}}{v_{H_k}}\cdot q_k\right) \cdot v_H $$
Opening:上述恒等式会在 extension field 上、circle 上的一个 out-of-domain point 处进行检查。Verifier 从 $C(F) \setminus (D \cup H)$ 中采样 $\gamma$,并请求 prover 打开 $p_i$ 和 $q_k$。对于每个 $i=1,\dots,w$,Prover 返回 $p_i$ 在点 $\gamma$ 和 $T_G(\gamma)$ 处的 claimed values $v_{i,0},v_{i,1}$,以及 $q_1,\dots,q_{d-1}$ 在 $\gamma$ 处的值 $v_1,\dots,v_{d-1}$。Verifier 使用这些 claimed values 检查该恒等式。注意,其他值,例如 vanishing polynomials 的 evaluations,都可以由 verifier 简洁地计算出来。
Low-Degree Test:Prover 和 verifier 使用 Circle FRI 协议对以下 quotient 进行 low-degree test。
$$ \frac{p_i-v_{i,0}}{v_\gamma}, \quad \frac{p_i-v_{i,1}}{v_{T_G(\gamma)}}, \quad \frac{q_k-v_k}{v_\gamma} $$
其中 $v_\gamma$ 和 $v_{T_G(\gamma)}$ 分别是点 $\gamma$ 和 $T_G(\gamma)$ 上的 vanishing polynomials。上述所有 proximity tests 都可以利用 verifier 的 randomness 批量合并为一个单独的 proximity test。如果 proximity test 通过,并且这些 claimed values 满足整体恒等式,则 verifier 接受。
这篇收官文章将 arithmetization、quotienting 和 Circle FRI low-degree test 的所有思想串联起来,描述了 Circle STARK 的构造。这也为 Circle STARKs 四篇系列文章画上了句号。
zkSecurity 提供密码学系统的审计、研究和开发服务,包括零知识证明、MPC、FHE 和 consensus protocols。
- 原文链接: blog.zksecurity.xyz/post...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码