【译】SNARKs讲解「第五部分」:从计算到多项式

原文链接

<<< 第四部分

在前面三个部分里,我们开发了一个机器来处理多项式。在本文中,我们将看到如何把我们想证明和验证的陈述翻译成多项式的表达。如此使用多项式的想法可以追溯到Lund,Fortnow,karloff,和Nisan的开创性工作。

在2013年,Gennaro, Gentry, Parno 和 Raykova的另一个开创性工作定义了一个非常有用的从计算到多项式的翻译,叫做二次算术程序(QAP)。QAP已经成为现代zk-SNARK构造的基础,特别是Zcash用到的那些。

在本文中我们将用例子来解释QAP翻译。即使我们只是专注一个小的例子而不是更广泛的定义,我们在一开始的时候也不可避免地需要消化理解很多知识。做好准备,我们要烧脑了 ?。

假定Alice想让Bob相信自己知道 c 1 , c 2 , c 3 ∈ F p c_1,c_2,c_3 \in \textbf F_p c1,c2,c3Fp,使得 ( c 1 ⋅ c 2 ) ⋅ ( c 1 + c 3 ) = 7 (c_1 \cdot c_2) \cdot (c_1 + c_3) = 7 (c1c2)(c1+c3)=7。第一步是用算术电路来呈现这个计算的表达式。

算术电路

一个算术电路由计算加法和乘法这类算术操作的门和连接它们的线组成。在我们的例子里,这个电路看起来像这样:

在这里插入图片描述

在底部的线是输入线,顶部的线是输出线,输出线给出电路计算在这些输入上的结果。

图中可以发现,我们用一种很独特的方式标注电路里的线和门。下一步我们把电路翻译成QAP的时候会需要用到这些标注。

  1. 当一根线从一个点出发走进一个以上的门的那些线,我们仍然认为是一根线,例如图中的w1
  2. 我们定义乘法门刚好有2条输入线,我们称之为左线和右线。
  3. 我们不标注从加法门到乘法门的线,也不标注到另一个加法门的线;我们认为加法门的输入直接进入了乘法门。因此在这个例子中我们认为w1和w3都是g2的右输入。

一个电路的合法分配是给电路中已标注的线分配一个值,其中每个乘法门的输出值实际上是对应输入值的乘积。

因此对于我们这个电路,一个合法的分配是这个形式: ( c 1 , . . . , c 5 ) (c_1,...,c_5) (c1,...,c5) ,其中 c 4 = c 1 ⋅ c 2 c_4=c_1 \cdot c_2 c4=c1c2 c 5 = c 4 ⋅ ( c 1 + c 3 ) c_5=c_4 \cdot (c_1 + c_3) c5=c4(c1+c3)

在这套术语里,Alice想去证明的是她知道一个合法分配 ( c 1 , . . . , c 5 ) (c_1,...,c_5) (c1,...,c5) 使得 c 5 = 7 c_5=7 c5=7

下一步工作是用QAPs把这个陈述翻译成多项式。

缩减到一个QAP

我们把每个乘法门跟一个域元素关联起来:g1 1 ∈ F p 1 \in \textbf F_p 1Fp 关联,g2 2 ∈ F p 2 \in \textbf F_p 2Fp 关联。我们把点 { 1 , 2 } \{1,2\} {1,2} 称作我们的目标点。现在我们需要定义一组“左线多项式” L 1 , . . . , L 5 L_1,...,L_5 L1,...,L5,“右线多项式” R 1 , . . . , R 5 R_1,...,R_5 R1,...,R5 和“输出线多项式” O 1 , . . . , O 5 O_1,...,O_5 O1,...,O5

这个定义背后的想法是:多项式通常在目标点上求值为零,除非这些多项式涉及目标点对应的乘法门。

具体地,由于 w1, w2, w4 分别是 g1 的左,右,和输出线;我们定义 L 1 = R 2 = O 4 = 2 − X L_1=R_2=O_4=2-X L1=R2=O4=2X,由于多项式 2 − X 2-X 2X 在对应 g1的点1处是1,在对于g2的点2处是0。

注意w1和w3都是g2的右输入。因此 ,我们类似地定义 L 4 = R 1 = R 3 = O 5 = X − 1 L_4=R_1=R_3=O_5=X-1 L4=R1=R3=O5=X1。这是因为 X − 1 X-1 X1 在对应 g2 的目标点2处是1,在其他点上是 0。

我们把剩下的多项式设置为0多项式。

给定固定的值 ( c 1 , . . . , c 5 ) (c_1,...,c_5) (c1,...,c5),我们用它们作为系数来定义一个左,右,和输出“和”多项式。也就是,我们定义

L : = Σ i = 1 5 c i ⋅ L i L:=\Sigma_{i=1}^5 c_i \cdot L_i L:=Σi=15ciLi
R : = Σ i = 1 5 c i ⋅ R i R:=\Sigma_{i=1}^5 c_i \cdot R_i R:=Σi=15ciRi
O : = Σ i = 1 5 c i ⋅ O i O:=\Sigma_{i=1}^5 c_i \cdot O_i O:=Σi=15ciOi

然后我们 定义多项式

P : = L ⋅ R − O P:=L \cdot R - O P:=LRO

在完成上面这些定义后,中心要点是这个:当且仅当 P P P在所有目标点上为零的时候, ( c 1 , . . . , c 5 ) (c_1,...,c_5) (c1,...,c5) 是该电路的一个合法分配。

让我们用例子来检验一下。假设在给定某些 c 1 , . . . , c 5 c_1,...,c_5 c1,...,c5的条件下,我们像上面那样定义 L,R,O,P。让我们在目标点 1上对所有这些多项式求值:

在所有这些 L i L_i Li 中,只用 L 1 L_1 L1 在1上面非零。因此我们有 L ( 1 ) = c 1 ⋅ L 1 ( 1 ) = c 1 L(1)=c_1 \cdot L_1(1) = c_1 L(1)=c1L1(1)=c1。 相似地,我们得到 R ( 1 ) = c 2 R(1)=c_2 R(1)=c2 O ( 1 ) = c 4 O(1)=c_4 O(1)=c4

因此 , P ( 1 ) = c 1 ⋅ c 2 − c 4 P(1)=c_1⋅c_2−c_4 P(1)=c1c2c4。一个 相似的计算 显示 P ( 2 ) = c 4 ⋅ ( c 1 + c 3 ) – c 5 P(2)=c4⋅(c_1+c_3)–c_5 P(2)=c4(c1+c3)c5

换句话说,当且仅当 ( c 1 , . . . , c 5 ) (c_1,...,c_5) (c1,...,c5) 是一个合法分配的时候, P P P在目标点上为零。

现在我们使用下面的代数事实:对于一个多项式 P P P 和一个 点 a ∈ F p a \in \textbf F_p aFp,当且仅当多项式 X − a X-a Xa 能除 P P P 的时候,我们有 P ( a ) = 0 P(a)=0 P(a)=0, 也就是 P = ( X − a ) ⋅ H P=(X-a) \cdot H P=(Xa)H, 其中 H H H 是某个多项式。

我们这样定义一个目标多项式: T ( X ) : = ( X − 1 ) ⋅ ( X − 2 ) T(X):=(X-1) \cdot (X-2) T(X):=(X1)(X2)。那么,当且仅当 ( c 1 , . . . , c 5 ) (c_1,...,c_5) (c1,...,c5) 是一个合法分配的时候, T T T 能除 P P P

在上面的讨论之后,我们接着定义QAP如下:

一个大小为 m m m d d d 阶二次算术程序Q由多项式 L 1 , . . . , L m , R 1 , . . . , R m , O 1 , . . . , O m L_1,...,L_m, R_1,...,R_m, O_1,...,O_m L1,...,Lm,R1,...,Rm,O1,...,Om 和一个 d d d 阶的目标多项式 T T T 组成。

我们 定义 L : Σ i = 1 m c i ⋅ L i , R : = Σ i = 1 m c i ⋅ R i , O : = Σ i = 1 m c i ⋅ O i L: \Sigma_{i=1}^m c_i \cdot L_i, R:=\Sigma_{i=1}^m c_i \cdot R_i, O:=\Sigma_{i=1}^m c_i \cdot O_i L:Σi=1mciLi,R:=Σi=1mciRi,O:=Σi=1mciOi P : = L ⋅ R − O P:=L \cdot R−O P:=LRO,如果分配 ( c 1 , . . . , c m ) (c_1,...,c_m) (c1,...,cm) 满足 Q,我们有 T T T 能除 P P P,。

在这套术语里,Alice想去证明她知道一个其中 c 5 = 7 c_5 = 7 c5=7 的分配 ( c 1 , . . . , c 5 ) (c_1,...,c_5) (c1,...,c5) 满足如上描述的QAP。

总结一下,我们已经看见一个像 “我知道 c 1 , c 2 , c 3 c_1, c_2, c_3 c1,c2,c3 使得 ( c 1 ⋅ c 2 ) ⋅ ( c 1 + c 3 ) = 7 (c_1 \cdot c_2) \cdot (c_1+c_3)=7 (c1c2)(c1+c3)=7“ 这样的陈述如何用QAP来翻译成等价的多项式陈述。 在下一部分里,我们将看到一种高效的协议。这个协议将证明一个满意分配变换到QAP的知识。

>>> 第六部分

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值