DEEP-FEI理论与分析
FRI协议是一种通过交互证明多项式低阶性(degree constraint)的证明系统。证明者(Prover)向验证者(Verifier)承诺一个多项式的形式,验证者通过采样该多项式的若干点,并进行多次随机线性组合和多项式折叠,来确保承诺的多项式确实是低阶的。这种交互式证明系统在零知识证明中尤其重要,因为它允许在不暴露多项式本身的情况下,验证其性质。
FRI基于Reed-Solomon编码和多项式评估,通过采样和折叠逐步减少多项式的阶数,直至其低阶性质显而易见。该过程中的折叠操作(Polynomial Folding)可以有效减少证明者和验证者之间的通信量,使得它在大规模的证明系统中尤其高效,其通信复杂度和通信轮数(交互式证明系统)与多项式的阶呈对数关系,即 $O(logd)$ ,其中 $d$ 是多项式的最高阶。
FRI是由Commit, Folding和Query三块算法构成的,其算法定义如下:
1. Commit: 给定一个 $ d $ 阶多项式 $ p(X) $ ,一个预定义大小为 $ n (n=qd, q>2) $ 的集合domain $ \Omega={w_1, w_2, \dots, w_n} $ 和一个抗碰撞的哈希函数 $ H $ ,计算以下信息:
2. Folding: 这里使用二分法将问题规模减半,即将阶为 $ d $ 的多项式转换为两个阶为 $ d/2 $ 的多项式,并采用随机线性组合(Random Linear Combination)来生成一个新的阶为d/2的多项式,直到最终生成的多项式为一个常数或达到规定的阶,其计算过程如下: 对于第i轮的FRI folding(直到压缩为一个常数为止,即 $ i $ 最大为 $ \log d $ ):
3. Query: 这里需要验证方发起若干个随机挑战,以检查证明方在折叠过程中的正确性(可以认为是重新执行一次折叠过程),证明方需要提交对应随机挑战的所有评估值,及评估值对应的Merkle path,其中所有评估值用于检查折叠过程,Merkle path用于检查该评估值确实在Merkle root中,其具体交互逻辑如下(需要执行多次,这里目前仅考虑一轮的验证,因为每轮的验证方式都是一样的):
特别注意的是,计算 $ p_e(X) $ 和 $ p_o(X) $ 只需要问询 $ p(X) $ 在 $ X=t $ 和 $ X=-t $ 位置的值即可,因为有以下等式成立(Prover在responds时需要同步提交对应的Merkle path): $$ p(X)=p_e(X)+X p_o(X). $$ 对于 $ p(X) $ 而言,提取所有偶数项 $ p_e(X)=[p(X)+p(-X)]/2 $ ,提取所有奇数项 $ p_o(X)=[p(X)-p(-X)]/2 $。
我们通过一个具体的三阶多项式来演示FRI的Commit阶段流程。假设我们有一个三阶的多项式: $$ f(x) = 2x^3 + 3x^2 + x + 5. $$ 根据FRI的定义,则需要 $ \log 4=2 $ 轮的交互,来完成多项式的规约。
首先,Prover 将这个三阶多项式 $ f(x) $ 分解成两个二阶多项式的形式: $$ f(x) = g_0(x^2) + xh_0(x^2). $$ 其中, $ g_0(x^2) $ 和 $ h_0(x^2) $ 是关于 $ x^2 $ 的多项式。因此,我们可以将 $ f(x) $ 重写为: $$ f(x) = (2x^2 + 5) + x(3x + 1). $$ 因此:
接下来,Verifier 发送一个随机值 $ \alpha_0 $ 。
Prover 根据收到的随机值 $ \alpha_0 $ ,计算 $ f_1(x) = g_0(x) + \alpha_0 h_0(x) $ 。假设 $ \alpha_0 = 1 $ ,那么: $$ f_1(x) = (2x^2 + 5) + 1 \cdot (3x + 1) = 2x^2 + 5 + 3x + 1 = 2x^2 + 3x + 6. $$ 接下来,Prover 将这个二阶多项式 $ f_1(x) $ 再次分解成两个更低阶的多项式: $$ f_1(x) = g_1(x^2) + xh_1(x^2). $$ 因此:
在 Prover 完成了对 $ f_1(x) $ 的分解后,Verifier 继续发送一个新的随机值 $ \alpha_1 $ 供下一步使用。
Prover 根据收到的随机值 $ \alpha_1 $ ,计算 $ f_2(x) = g_1(x) + \alpha_1 h_1(x) $ 。假设 $ \alpha_1 = 1 $ ,则有: $$ f_2(x) = (2x^2 + 6) + 1 \cdot 3 = 2x^2 + 6 + 3 = 2x^2 + 9. $$ 接下来,Prover 再次将这个二阶多项式 $ f_2(x) $ 分解为两个一阶多项式: $$ f_2(x) = g_2(x^2) + xh_2(x^2). $$ 因为 $ f_2(x) = 2x^2 + 9 $ ,所以:
接着,Verifier 发送随机值 $ \alpha_2 $ ,Prover 计算 $ f_3(x) = g_2(x) + \alpha_2 h_2(x) $ 。因为 $ h_2(x) = 0 $ ,所以此时: $$ f_3(x) = 2x^2 + 9. $$
此时已经得到一个常数多项式 $ f_3(x) = 9 $ ,这表明多项式的阶数已经降低到了零,证明过程结束。
尽管FRI本身已经具有较高的效率,但在处理复杂约束条件或更大规模的证明时,仍然存在进一步优化的空间。DEEP-FRI通过引入深度代数结构,优化了多项式折叠和随机线性组合的策略,能够在不显著增加通信成本的情况下,进一步提高证明效率。
与此同时,DEEP-FRI支持在域之外的点进行问询,极大地提升了原始FRI协议的soundness,同时问询的次数可以相应减少,以减小证明大小 (Proof Size)。
这个操作通常在一些证明或算法中用于调整函数的形态,消除某个特定点 $ z $ 处的值,或者在多项式构造中用于简化和归约,其具体流程如下:
首先,定义多项式 $ Z(Y) = Y - z $ 。这是一个简单的线性多项式,它的根为 $ z $ 。
接着定义一个新的函数 $ g \colon L \to \mathbb{F}_q $ ,其公式为: $$ g(y) = \frac{f(y) - b}{Z(y)} = \frac{f(y) - b}{y - z}. $$ 1. 输入参数 :
DEEP-FRI是由Commit, Folding和Query三块算法构成的,在这里我们考虑交互式证明系统,如果需要转换为非交互式系统,对于验证方发送的每个挑战值而言,使用Fiat-Shamir转换的方式替换每个挑战值,DEEP-FRI的交互式证明算法定义如下:
假设给定一个 $ d $ 阶多项式 $ p(X) $ ,以及一个预先定义大小为 $ n = qd $ (其中 $ q > 2 $ )的集合域 $ \Omega = { w_1, w_2, \dots, w_n } $ 和一个抗碰撞的哈希函数 $ H $ 。在这个阶段,需要进行以下步骤:
Folding阶段是通过递归的方式,继续将多项式 $ f^{(i)}(x) $ 的查询域折叠,并且生成一个新的多项式,使得下一个迭代过程中的多项式的阶数递减,其具体过程如下:
对于第i轮的folding ( $ i < \log d $ )
1. 多项式查询:
2. 随机挑战和多项式降阶
折叠方式如下:
我们有一个函数 $ f^{(i+1)} \colon L^{(i+1)} \to \mathbb{F}q $,这个函数的定义是基于商操作(QUOTIENT)。在给定 $ y $ 作为输入时,函数 $ f^{(i+1)} $ 被定义为: $$ f^{(i+1)}(y) = \frac{H{x(i)}[f^{(i)}] - B^{(i)}_{z^{(i)}}(x)}{y - z^{(i)}}. $$ 其具体说明如下:
以上的步骤执行结束,如果折叠后的多项式是一个常数C,或者多项式达到了一个预定义的阶。
Query阶段主要用于验证多项式的最终计算结果是否正确,其具体过程如下:
1. 重复查询 $ \ell $ 次:
1.1. 验证者从域 $ D $ 中选择一个随机点 $ s^{(0)} $ ,并根据每个 $ i $ 定义对应的点 $ s^{(i+1)} $ ,其 中:$s^{(i+1)} = q^{(i)}(s^{(i)})$ 偶数项公式为: $$ f{even}(X)=\frac{f(X)+f(-X)}{2}. $$ 奇数项公式为: $$ f{odd}(X)=\frac{f(X)-f(-X)}{2}. $$
1.2. 证明者向验证者提供 $ f^{(i+1)}(s^{(i+1)}) $ 和 $ H_x(i)[f(i)]$ 的值(对 $ f^{(i+1)}(X) $ 多项式在 $ X=s^{(i+1)}和X=-s^{(i+1)} $ 中进行问询),及对应的Merkle path。
1.3. 验证者验证对应值是否在对应的Merkle Tree中,同时验证以下等式: $$ Hx \left [f^{(i)} \right] = f^{(i+1)}(s^{(i+1)}) \cdot (s^{(i+1)} - z^{(i)}) + B^{(i)}{z^{(i)}}(x^{(i)}). $$ 2. 最终结果验证 :检查最终的多项式计算结果是否与事先承诺的值 $ C $ 一致,若不一致则拒绝,否则接受。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!