Abstract

基于Caulk和Caulk+的研究继续改进

本文的方案需要$O(N\log ^2 N)$的预处理步骤,并将Prover Time进一步优化至拟线性阶$O(m\log ^2 m)$

1 Introduction

查找表是最近几年的zk-SNARK研究热点之一,简单来说就是构造一个协议,证明一个承诺多项式$\phi(X)$包含在大小为$N$的查找表$T$中,该查找表包含了预定义的所有的(或者大部分的)合法值

若查找表对应的运算不包含域上的有效低度算术运算时,查找表可以显著节省协议的开销

最早的方案应该是基于plook构建的plookup,在多项式IOP中构造了一个查找表的解决方案,Prover复杂度与$m$和$N$均呈拟线性关系

plookup的研究还引出了一个问题:对表$T$执行预处理步骤后,是否可以使得对$N$的依赖变为亚线性的,Caulk利用双线性配对解决了这个问题,将复杂度优化到了$O(m^2+m\log N)$,Caulk+进一步优化到了$O(m^2)$

但是Caulk和Caulk+还是包含一个与$m$相关的平方项,如果用这两个算法处理具有许多查找门的电路来说非常不友好,本文提出了flookup方案来解决这个问题,方案的复杂度与$m$呈拟线性关系,且在预处理步骤后与表的大小$N$无关
image-20221211163702-qznhhjt.png

1.1 Usefulness of the result

从宏观角度对比一下flookup和plookup算法,plookup算法的Prover Time为$O(N\log N)$,flookup的Prover Time为$O(m\cdot \log^2 m)$,且$O$的常数因子很小,因此flookup非常适用于$m\ll N/\log N$的情况

不过flookup也有缺点,与Caulk和Caulk+相同,flookup的验证需要一次由Prover定义的配对,这导致递归聚合证明不那么平滑

此外,flookup不具备plookup和Caulk中优良的线性性质,线性性质可以将多个查表聚合成一个,flookup这一点做的不这么好,相对而言,flookup在查找单表的时候,尤其是范围检查的情况下具有比较好的性能(比如对表$T=\{0,...,2^t-1\}$进行范围检查)

flookup更好的应用场景是一些范围较大的SNARK unfriendly操作,比如各种按位与,按位异或,移位,循环移位等等

比如SHA-256中有一个32bit的位操作,可以定义一个映射$f$,并构造所有$2^{32}$种可能的表$A+2^{32}\cdot f(A)$,比如输入和输出分别为$w_1,w_2$,满足$f(w_1)=w_2$,可以利用flookup检查$w_1+2^{32}\cdot w_2$是否在这个表中来完成验证

2 Terminology and Conventions

本文用到的符号和记法与之前几篇相同

本文的协议需要用到通用可更新的单项式SRS,形式为$\{[x^i]_1\}_{a\leq i\leq b},\{[x^i]_2\}_{c\leq i\leq d}$,其中$x\in \mathbb F$为随机选择的元素,$a,b,c,d$为以$poly(\lambda)$为上界的整数

其他用到的密码学原语和组件如下

  • 密码学假设:q-DLOG
  • 代数群模型(AGM)
  • KZG多项式承诺及其变体(d-PCS)

3 Bi-linear polynomial IOPs

介绍一个新的概念,双线性多项式IOP

对于正整数$d\in \mathbb F$,d-BLIOP为一个P,V与理想可信方$I$的协议,如下

  • 协议包含两个预计算的多项式集合$P_1,P_2\sub \mathbb F_{<d}[X]$
  • Prover发送给$I$的多项式为$(f,i)$,其中$f\in \mathbb F_{<d}[X],i=1,2$,若P发送的多项式不符合这个形式,则协议终止
  • P和V都是随机掷币
  • 对于$i=1,2$,记$F_i$表示P发送给$I$的多项式集合,记$A_i=F_i\cup P_i$
  • V可以向$I$发起连个请求

    1. 求值查询$(f,x)$:其中$f\in A_1,x\in \mathbb F$,$I$返回$f(x)$
    2. 双线性恒等式查询:查询$\sum_{j\in [k] }c_j\cdot f_j(X)\cdot h_j(X)\equiv 0$是否成立,其中$k$为随机正整数,$c_j\in \mathbb F,f_j\in A_1,h_j\in A_2$,对于每个恒等式查询,$I$返回true或false

协议结束后,V根据查询结果输出接受或拒绝

根据上述协议定义完整性和知识合理性,具体可以看原文的Def 3.2

上述只是定义了双线性多项式IOP,但并未提供抗代数敌手的能力,原文的3.1节定义一些术语来实现这一点,这里介绍一些记法

  • $\mathcal P$:表示多项式协议,输入为$(x,w)$
  • $D_1(\mathcal P,x,w)=\sum_{f\in F_1}(def(f)+1)$
  • $D_2(\mathcal P,x,w)$:表示为所有的$f\in F_2$计算$[f]_2$所需要的群$\mathbb G_2$上的标量乘法的次数
  • $\mathcal O=([f]_1,z,f(z);f)$
  • $E(\mathcal P,x,w)$表示V发起的双线性查询中被求和数的总数(total number of summands in all bi-linear queries)

相关概念及其证明可以看原文,这里略过

3.2节介绍了一些描述BLIOP和PIOP的惯例,如下

  1. 若d-BLIOP不包含双线性检查($A_2$为空),此时称为d-PIOP,并将P发送的消息$(f,1)$简写为$f$
  2. 若V请求检查恒等式$P(f_1(X),...,f_k(X)),f_i\in A_1$,此时表示V选择随机值$\alpha\in \mathbb F$并请求$f_1(\alpha),...,f_k(\alpha)$,计算$z=P(f_1(\alpha),...,f_k(\alpha))$,若$z\neq 0$则V拒绝
    在分析d-BLIOP的合理性(知识合理性)时,可以假设$g(X)=P(f_1(X),...,f_k(X))$为非零多项式
  3. 若V在$H\sub \mathbb F$上请求$P(f_1(X),...,f_k(X)),f_i\in A_1$,,此时表示P发送一个商多项式$T(X)=P(f_1(X),...,f_k(X))/Z_H(X)$,V检查等式$P(f_1(X),...,f_k(X))=Z_H(X)\cdot T(X)$

4 Protocol for subtable extraction

Caulk+采用分数分解来从$Z_T$中抽取子集$I\sub T$对应的消失多项式$Z_I$,$[PK22]$中的表$T$同时还是一个乘法子群,因为$T$代表表值的索引,而非表值本身,本文通过计算大小为$|T|-1$的所有子表的承诺来完成协议,这确保了当$T$是任意集合时,可以确保预处理过程的复杂度为拟线性的而非平方阶

这里先介绍一个引理

Lemma 4.1:给定大小为$N$的集合$T\sub \mathbb F$和集合$\{[x^i]_2\}_{i\in \{0,...,N-1\}}$,存在一个算法计算集合元素$\mathcal T$,需要$O(N\cdot \log ^2N)$次$\mathbb G_2$中标量乘法和域$\mathbb F$上操作

$$ \mathcal T=\big \{ [Z_{T\backslash\{i\}}(x)] _2 \big \}_{i\in T} $$

证明如下,看一下如何在$O(N\cdot \log ^2N)$内完成计算


Proof:用下面这个表示多项式 $Z_{T\backslash \{i\}}(X)$的系数向量

然后让所有的系数向量组成一个矩阵

我们的目标是计算$\mathcal T={Z_{T\backslash *}}\times SRS$

$$ SRS=\Big [ [1]_2,[x]_2,...,[x^{N-2}] _2,[x^{N-1}]_2 \Big ]^T $$

这里介绍一个小技巧,对于两个度为$N/2$的多项式$a(X),b(X)$,若有多项式$c(X)=a(X)\cdot b(X)$,则可以用矩阵与向量的积表示这个乘法,记三个多项式的系数向量分别为$\bar a,\bar b,\bar c$,此时可以将这个多项式乘法写成下面这个向量与矩阵的乘积

记后面那个矩阵为$A_b$,该矩阵共有$N/2+1$行,$N+1$列

这个矩阵$A_b$有个学名,叫做托普利兹矩阵,又称为长对角矩阵/T型阵/次对称阵,特点是主对角线及与之平行的线上的元素均相等,矩阵中各元素关于次对角线对称

此时多项式乘法$c(X)=a(X)\cdot b(X)$可以简记为$\bar c=\bar a\times A_b$

回到原来的计算,我们将集合$T$拆分为前半部分$T_1=\{v_1,v_2,...,v_{N/2}\}$和后半部分$T_2=\{v_{N/2+1},v_{N/2+2},...,v_{N}\}$,此时我们有

接下来看一下计算$\mathcal T$的算法

  1. 计算$Z_T(X)$的系数及其子积树(tree of subproducts),开销为$O(N\log ^2N)$
  2. 将$T$拆分为两个部分$T_1,T_2$,消失多项式分别为$Z_{T_2}(X),Z_{T_1}(X)$
  3. 计算托普利兹矩阵向量$a_1=A_{Z_{T_1}}\times SRS,a_2=A_{Z_{T_2}}\times SRS$,开销为$O(N\log N)$
  4. 递归计算$b_1=Z_{T_1\backslash*}\times a_2,b_2=Z_{T_2\backslash*}\times a_1$,跳转至步骤2
  5. 输出$b_1,b_2$的串联

这里细说一下步骤1的计算过程,用到的是vzGG$[2]$这篇资料中的算法10.3

  1. 将$T$拆分为两个部分$T_1,T_2$​
  2. 分别令$T=T_1,T=T_2$,递归步骤1并计算$Z_{T_1},Z_{T_2}$
  3. 利用FFT算法,聚合得到$Z_{T_1},Z_{T_2}$,开销为$O(N\log N)$

引理证毕


接下来继续描述子表提取协议$IsVanishingSubtable_T(g(X))$


  • 预处理多项式:$P_1,P_2$,其中$P_1=\{Z_T\}$,对于所有的$i\in T$,在$P_2$中插入多项式$Z_{T\backslash\{i\}}$
  • 输入:$g(X)\in \mathbb F_{<d}[X]$

协议分为两步

  1. P向$I$发送$(Z_{T\backslash S},2)$​
  2. V发起一次双线性查询,验证等式$g\cdot Z_{T\backslash S}\equiv Z_T$,当且仅当等式成立时接受P

这里有个引理

Lemma 4.2:$IsVanishingSubtable_T$是关于语言$L=\{g(X)\in \mathbb F_{<d}[X]|g(X)=Z_S(X),S\sube T\}$的d-BLIOP,输入为$g=Z_S$,Prover复杂度为$O(m\log ^2m)$次域运算,$O(m)$次$\mathbb G_1,\mathbb G_2$上的标量乘法($m=|S|$),预处理需要$O(N\log^2N)$次$\mathbb G_2$标量乘法和域运算($N=|T|$)

这个引理证明可以看原文

5 A PIOP for lookups when given the table in vanishing form

上一节介绍了一种抽取子表消失多项式的方式,可以用grand-product论证来将子表转换为拉氏多项式的形式,然后利用一个查找协议(比如plookup)来证明表具有预期的格式

不过本文给出另一种方案,通过直接同时处理表的消失多项式,可以优化plookup的效率,当witness和表的大小都为$m$时,本文的方案大约需要$3m$次群$\mathbb G_1$的标量乘法(plookup需要$5m$次)

在介绍方案之前,先介绍一个概念,非正规有理拉格朗日函数(Unnormalized rational Lagrange functions)

分析的主要内容是有理拉格朗日函数在相关集合之外的点的定义,简单来说这个过程可以让我们检查集合中的包含情况

对于一个集合$T\sub \mathbb F$,令$v\in \mathbb F$,记一个有理函数如下

$$ \Gamma^T_v(X)=\frac{Z_T(X)}{X-v} $$

不难看出这个函数也是一个多项式(定义域除了$v\in T$)

接下来介绍一个引理,这个引理允许我们在区分多项式和有理函数时减少查找的次数


Lemma 5.1:对于任意向量$v,a\in \mathbb F^m$,任意的集合$T\sub \mathbb F$,定义一个有理函数$R(X)=\sum_{j\in [m]}a_j\cdot \Gamma^T_{v_j}(X)$

  1. 若对于所有的$j\in [m]$,都有$v_j\in T$,则$R(X)\in \mathbb F[X]$
  2. 令$S\sub [m]$表示所有的$j\in [m],v_j\notin T$构成的子集,假设$S\neq \emptyset$,若$\sum_{j\in S}a_j\neq 0$,则$R(X)\notin \mathbb F[X]$
    具体而言,当$\forall j\in [m],a_j=1$,若$|char(\mathbb F)|>m$,则$R(X)\notin \mathbb F[X]$

接下来证明一下

第一条显然成立,因为多个多项式相加的结果显然也是多项式,这里用反证法证明第二条

假设集合$S$非空,通过证明有理函数无法被消去来证明第二条,假设向量$a_j\in \mathbb F^m$,满足$\sum_{j\in S}a_j\neq 0$,我们可以将$R(X)$拆分成两个部分$R(X)=R_1(X)+R_2(X)$

$$ \begin{aligned} R_1(X)&=\sum_{j\in [m]\backslash S}a_j\cdot \Gamma^T_{v_j}(X)\\ R_2(X)&=\sum_{j\in S}a_j\cdot \Gamma^T_{v_j}(X) \end{aligned} $$

不难看出$R_1$是多项式,而且当且仅当$R_2$是多项式时,$R$才是多项式

现在假设有$R_2\in \mathbb F[X]$,则有下列等式成立

$$ Z_T(X)\sum_{j\in S}\frac{a_j}{X-v_j}=R_2(X) \tag 1 $$

令两个多项式$Q,Q'$如下

$$ \begin{aligned} Q(X)&=\prod_{j\in S}(X-v_j)\\ Q'(X)&=\sum_{j\in S}a_j \prod_{i\in S\backslash\{j\}}(X-v_i) \end{aligned} $$

式1两侧同时乘$\prod_{j\in S}(X-v_j)$,得到

$$ Z_T(X)\cdot Q'(X)=R_2(X)\cdot Q(X) \tag 2 $$

排除$R_2(X)\equiv0$的情况(如若$R_2(X)\equiv0$,由于$Z_T(X)\neq 0$,则必然有$Q'(X)\equiv 0$,显然$Q'\not\equiv 0$,矛盾),此时$Q'$中$X^{|S|-1}$的系数为$\sum_{j\in S}a_j$(前面假设了这个求和结果非零)

由于$R_2(X)\not\equiv0$,且$Q$没有整除$Z_T$的因子,若式2等号两侧相等,则必然有$Q|Q'$,但是$deg(Q)=|S|,deg(Q')<|S|$,因此$Q\nmid Q'$,因此假设$R_2\in \mathbb F[X]$不成立,故$R_2\notin \mathbb F[X]$

综上,得到$R\notin \mathbb F[X]$,证毕


利用上述引理,接下来看一下如何构造本文的核心协议

令$\mathbb H=\{g,g^2,...,g^m=1\}\sub \mathbb F$,$g$为生成元,给定多项式$\phi(X)\in \mathbb F_{<d}[X]$,给定集合$T\sub \mathbb F$,定义一个多项式如下

$$ R_{T,\phi}(X)=\sum_{v\in \mathbb H}\Gamma^T_{\phi(v)}(X) $$

协议的目的是对该多项式$R_{T,\phi}(X)$承诺并证明承诺正确,这个过程表明了两件事

  1. $R_{T,\phi}$是多项式
  2. $\phi|_\mathbb H\sub T$

为了证明承诺对应于$R_{T,\phi}$,通过在一个随机点$\beta \in \mathbb F$求值$R_{T,\phi}(\beta)$的方式验证,这里用到了Justin Drake提出的grand sum argument的方式验证(这个方法算是$[GWC19]$提出的grand product argument的一种变体)

Justin Drake - grand sum argument:Youtube - Link,链接视频无法播放,尝试找一下其他的参考文献

记$\mathbb H$的拉氏基多项式为$\{L_i(X)\}_{i\in [m]}$,对于给定的子集$\mathbb H,T\sub \mathbb F$,构造下列协议$IsInVanishing_{\mathbb H,T}(\phi)$


  • 预处理多项式$P_1=\{Z_T\}$
  • 输入:多项式$\phi\in \mathbb F_{<d}[X]$

协议如下

  1. P发送多项式$g(X)=R_{T,\phi}(X)$
  2. V发送随机挑战$\beta \in \mathbb F$,同时查询值$z=g(\beta)$
  3. P计算并发送多项式$Z(X)\in \mathbb F_{<m}[X]$,这里$\forall i\in [m],Z(\omega^i)=\sum^i_{j=1}\Gamma^T_{\phi(g^i)}(\beta)$
  4. V查询$Z_T(\beta)$
  5. V在$\mathbb H$上检查下列三个等式

$$ \begin{aligned} (a) \ &L_1(X)\cdot\big (Z(X)\cdot (\beta-\phi(X))-Z_T(\beta)\big )=0\\ (b) \ &(X-g)\cdot \big( Z(X)-Z(X/g)\cdot \frac{Z_T(\beta)}{\beta-\phi(X)} \big)=0\\ (c) \ &L_m(X)\cdot (Z(X)-z)=0 \end{aligned} $$


这里给一个定理

Thm 5.2:上述协议是关于语言$L=\{\phi(X)\in \mathbb F_{<d}[X] \ | \ \phi|_\mathbb H\sub T\}$的d-PIOP,其中$deg(\phi),|T|=O(m)$,Prover Time为$O(m\cdot \log^2 m)$,协议在预处理阶段需要取决于表$T$的$O(m\cdot\log^2m)$次$\mathbb G_1$标量乘法,此后Prover只需要$O(m\cdot \log m)$次域运算和$O(m)$次$\mathbb G_1$标量乘法

证明如下


假设$\phi\notin L$,令事件$E$表示$g(\beta)=R_{T,\phi}(\beta)$,若有$\phi(X)\notin L$,则根据引理5.1,有$R_{T,\phi(X)}\notin \mathbb F[X]$,由于$g\in \mathbb F_{<d}[X]$,则有事件$E$发生的概率为可忽略

注意到上述协议中的步骤五的三个验证等式

  • 式a表明$Z(g)=\Gamma^T_{\phi(g)}(\beta)$
  • 式b表明,对于所有的$i\in \{2,...,m\}$,有$Z(g^i)=Z(g^{i-1})+\Gamma^T_{\phi(g^i)}(\beta)$,联合式a和式b,可以得到$Z(g^m)=\sum_{i\in [m]}\Gamma^T_{\phi(g^i)}(\beta)=R_{T_\phi}(\beta)$
  • 式c表明$Z(g^m)=z=g(\beta)$​

若三个等式均通过验证则表明$g(\beta)=R_{T,\phi}(\beta)$,根据假设,若有$\phi(X)\notin L$,则此时V接受的概率为可忽略

语言归属部分证明完毕,接下来看复杂度分析部分

在Prover Time中,最复杂的部分是计算$R_{T,\phi}(\beta)$,可以通过系数插值将开销降低至$O(m\cdot \log^2m)$,Prover首先在$O(m\cdot \log m)$内计算$\{a_v\}_{v\in T}$,其中$a_v$由$x\in \mathbb H$定义,满足$\phi(x)=v$,此时有

$$ R_{T,\phi}(X)=\sum_{v\in T}a_v\cdot \Gamma^T_v(X) $$

令$\{\tau_v(X)\}_{v\in T}$表示$T$的拉氏基多项式,对于所有的$v\in T$,都有$\Gamma^T_v(X)=c_v\cdot \tau_v(X)$,其中系数项$c_v=\prod_{v\neq i \in T}(v-i)$,此时有

$$ R_{T,\phi}(X)=\sum_{v\in T}a_v\cdot c_v\cdot \tau_v(X) $$

此时对于$\forall v\in T$,有$R_{T,\phi}(v)=a_v\cdot c_v$,因此如果我们有$\{a_v\cdot c_v\}_{v\in T}$,我们可以利用插值法得到$R_{T,\phi}(X)$的系数

注意到$\{c_v\}_{v\in T}$是$Z_T(X)$的导数$Z_T'(X)$在$T$处的求值,因此可以在有限的时间内计算

观察给定的表$T$,我们可以利用引理4.1预计算$S_v=[\Gamma^T_v(x)]_1$,并利用这些值计算$\sum_{v\in T}a_v\cdot S_v$的KZG承诺$[R_{T,\phi}(x)]_1$(需要$O(m)$次群$\mathbb G_1$标量乘法和$O(m\cdot \log m)$次域运算)

此外,预计算阶段还需要计算$\{c_v\}_{v\in T}$,给定这些值,可以计算$R_{T,\phi}$的KZG承诺在$r\in \mathbb F\backslash T$处的揭示$z=R_{T,\phi}(r)$

$$ \Big [\frac{R_{T,\phi}(x)-z}{x-r}\Big ]_1=\sum_{v\in T}\frac{a_v-z/c_v}{v-r}\cdot S_v $$

证毕


6 Putting it all together

最后就是把上面这些缝在一起,构成最后的协议


  • 预处理多项式:$P_1=\{Z_T\}$
  • 输入:多项式$\phi\in \mathbb F_{<d}[X]$

协议如下

  1. P计算集合$I\sube T$,满足$I=\phi|\mathbb H$
  2. P计算并向V发送$Z_I$
  3. P和V运行协议$IsVanishingSubtable_T(Z_I)$
  4. P和V运行协议$IsVanishingSubtable_{\mathbb H,Z_I}(\phi)$

这里有个定理其实就是将上面的引理4.2和定理5.2结合在一起,可以看原文

References

$[1]$ Flookup: Fractional decomposition-based lookups in quasi-linear time independent of table size

$[2]$ J. von zur Gathen and J. Gerhard. Fast polynomial evaluation and interpolation. Modern Computer Algebra, chapter 10, pages 295–310.