Skip to content

第 7 课 补充讲义

算术化是将计算编码为代数约束满足问题的过程。这将检验其正确性的复杂性降低到少量概率代数检查。在证明系统中,算术化的选择会影响IOP的选择范围(见图1)。

图1:证明系统的组成部分。请回顾第5讲(承诺方案)中,承诺方案可用于将交互式预言机证明(IOP)编译成证明系统。

英文原文

Arithmetisation is the encoding of a computation as an algebraic constraint satisfaction problem. This reduces the complexity of verifying its correctness to a few probabilistic algebraic checks. In a proof system, the choice of arithmetisation limits the corresponding range of IOPs that can be used to check it (see Figure 1).

Figure 1: The components of a proof system. Recall from Lecture 3 (Commitment Schemes) that a commitment scheme can be used to compile an interactive oracle proof (IOP) into a proof system.

二次算术程序 (QAPs)

二次算术程序(Quadratic Arithmetic Program,QAP) [9] 是一种将语句转换为多项式上二次方程组的方式。它们可以通过线性交互式证明(LIPs)[10],代数IOPs [6],多线性IOPs ([14],[15]) 进行检验。任何具有乘性复杂度n的电路都可以转换为一个 n次多项式的QAP。

定义1.1. 二次算术程序(QAP)

一个度数为 d 、大小为 m 的二次算术程序Q由多项式 {Lj(X)},{Rj(X)},{Oj(X)},j[0,,m1] 和一个目标多项式T(X):=(Xi)i=0d1 组成。当赋值(1,x1,,xm1)满足 Q时,

T(X)P(X),P(X):=L(X)R(X)O(X)

其中 L(X):=j=0m1xjLj(X),R(X):=j=0m1xjRj(X),O(X):=j=0m1xjOj(X)

英文原文

The Quadratic Arithmetic Program (QAP) [9] is a way to translate statements into a system of quadratic equations over polynomials. They can be checked by linear interactive proofs (LIPs) [10], algebraic IOPs [6], multilinear IOPs ([14], [15]). Any circuit with multiplicative complexity n can be translated to a QAP over degree- n polynomials.

Definition 1.1. [Quadratic Arithmetic Program (QAP)]

A Quadratic Arithmetic Program Q of degree d and size m consists of polynomials {Lj(X)},{Rj(X)},{Oj(X)},j[0,,m1], and a target polynomial T(X):=(Xi)0=1d1 of degree d. An assignment (1,x1,,xm1) satisfies Q if

T(X)P(X),P(X):=L(X)R(X)O(X)

where L(X):=j=0m1xjLj(X),R(X):=j=0m1xjRj(X),O(X):=j=0m1xjOj(X).

一阶约束系统 (R1CS)

算术电路可以用简化形式的一阶约束系统(R1CS)表示,而R1CS则可以转换为QAP。

参数系统算术化信息理论协议密码编译器
Groth16 [10]R1CS线性交互证明 (LIP)双线性配对
Marlin [6]R1CS代数全息证明 (AHP)改进的KZG承诺
Spartan [15]R1CS变体的sumcheck协议SPARK
Dory [14]R1CS多线性IOP双线性配对
Nova [13]放宽的R1CS多线性IOP多线性PCS

表1:使用R1CS算术化的证明系统的示例。

在第二讲(Circom 1)中,我们看到了IsZero电路,它检查给定值是否为零的声明。让我们将IsZero转换为一个R1CS电路,然后将其转换为QAP。

c
template IsZero(){
    signal input in;
    signal output out;

    signal inv;

    inv <−− in != 0 ? 1 / in : 0;

    out <== −in * inv + 1;
    in * out === 0;
}
template IsZero(){
    signal input in;
    signal output out;

    signal inv;

    inv <−− in != 0 ? 1 / in : 0;

    out <== −in * inv + 1;
    in * out === 0;
}

代码1:从comparators.circom中获取的IsZero电路。

circom的IsZero程序可以“展平”为四个约束条件,每个都采用 左侧 o 右侧 = output 的形式:

w1(1)=w2w2w3=w4w4+1=w5w1w5=w6

在算术电路表示中(左图),每个约束条件对应于一个加法或乘法门。

证明人声称知道一些合法的赋值 x=(x1,x2,x3,x4,x5,x6),使得当将每个值 ai 赋给对应的线路 wi,并且 w6=0 时,电路是满足的。对于每个门 gi,我们创建三个线路向量 li,ri,oi,其中包含门中每个变量 wj 的系数。线路向量还包括一个常数项 w0

g0:w1(1)=w2|w0w1w2w3w4w5w6l0=(0100000)r0=(1000000)o0=(0010000),g1:w2w3=w4|w0w1w2w3w4w5w6l1=(0010000)r1=(0001000)o1=(0000100),g2:w4+1=w5(w4+1)1=w5|w0w1w2w3w4w5w6l2=(1000100)r2=(1000000)o2=(0000010),g3:w1w5=w6|w0w1w2w3w4w5w6l3=(0100000)r3=(0000010)o3=(0000001).

现在,我们将每个左边的li线向量收集到矩阵L=(l0,l1,l2,l3)中,对于右边的ri线向量同样如此,而输出oi向量也是如此:R=(r0,r1,r2,r3)O=(o0,o1,o2,o3)

L=w0w1w2w3w4w5w6(0100000001000010001000100000)l0l1l2l3,R=w0w1w2w3w4w5w6(1000000000100010000000000010)r0r1r2r3,O=w0w1w2w3w4w5w6(0010000000010000000100000001)o0o1o2o3.

矩阵L,R,O和见证向量x=(1,x1,x2,x3,x4,x5,x6)一起构成了IsZero电路的R1CS形式。满足条件的向量x可以实现方程Lx+RxOx=0

英文原文

Arithmetic circuits can be expressed a simplified form known as Rank-1 Constraint System (R1CS), which can in turn be transformed into a QAP.

Argument systemArithmetizationInformation-theoretic protocolCryptographic compiler
Groth16 [10]R1CSlinear interactive proof (LIP)bilinear pairings
Marlin [6]R1CSalgebraic holographic proof (AHP)adapted KZG commitment
Spartan [15]R1CSvariant of sumcheck protocolSPARK
Dory [14]R1CSmultilinear IOPbilinear pairings
Nova [13]Relaxed R1CSmultilinear IOPmultilinear PCS

Table 1: Examples of proof systems which make use of R1CS arithmetisation.

In Lecture 2 (Circom 1), we saw the Is Zero circuit, which checks a claim about whether a given value is zero. Let's convert Is eero into an R1CS circuit, and then transform it into a QAP.

c
template IsZero(){
    signal input in;
    signal output out;

    signal inv;

    inv <−− in != 0 ? 1 / in : 0;

    out <== −in * inv + 1;
    in * out === 0;
}
template IsZero(){
    signal input in;
    signal output out;

    signal inv;

    inv <−− in != 0 ? 1 / in : 0;

    out <== −in * inv + 1;
    in * out === 0;
}

Listing 1: The Iszero circuit, taken from comparators. circom in circomlib.

The circom Iszero program can be "flattened" into four constraints, each of the form left o right = output:

w1(1)=w2w2w3=w4w4+1=w5w1w5=w6

In the arithmetic circuit representation (left), each of these constraints corresponds to an addition or multiplication gate.

The prover is claiming to know some legal assignment x=(x1,x2,x3,x4,x5,x6), so that when each value ai is assigned to corresponding wire wi, and w6=0, the circuit is satisfied. For each gate gi, we create three wire vectors li,ri,oi, containing the coefficients of each variable wj at the gate. The wire vectors also include a constant term w0 :

g0:w1(1)=w2|w0w1w2w3w4w5w6l0=(0100000)r0=(1000000)o0=(0010000),g1:w2w3=w4|w0w1w2w3w4w5w6l1=(0010000)r1=(0001000)o1=(0000100),g2:w4+1=w5(w4+1)1=w5|w0w1w2w3w4w5w6l2=(1000100)r2=(1000000)o2=(0000010),g3:w1w5=w6|w0w1w2w3w4w5w6l3=(0100000)r3=(0000010)o3=(0000001),

Now, we collect each of the left li wire vectors into a matrix L=(l0,l1,l2,l3), and likewise for the right R=(r0,r1,r2,r3) and output O=(o0,o1,o2,o3) vectors:

L=w0w1w2w3w4w5w6(0100000001000010001000100000)l0l1l2l3,R=w0w1w2w3w4w5w6(1000000000100010000000000010)r0r1r2r3,O=w0w1w2w3w4w5w6(0010000000010000000100000001)o0o1o2o3.

The L,R,O matrices, along with our witness vector x=(1,x1,x2,x3,x4,x5,x6), gives the R1CS form of the Iszero circuit. A satisfying x fulfils the equation Lx+RxOx=0.

R1CS 至 QAP

回顾一下对于度数为d,规模为m的QAP的定义1.1。我们可以将度数d视为约束的数量,将规模m视为变量的数量。在我们的例子中,有d=4,m=7。通过将R1CS形式转换为QAP形式,我们将我们的检查从三次矩阵乘法降低到了单项式恒等式。

为了将我们的L,R,O矩阵转换为L(X),R(X),O(X)多项式,让我们检查这些多项式应该具有的属性。在每个变量j和门i处,我们希望Lj(i)选择门gi的左导线的变量wj的系数;Rj(i)Oj(i)同理。换句话说:

Lj(i)=Lij=li[j],Rj(i)=Rij=ri[j],Oj(i)=Oij=oi[j]

让我们看一下g2(i=2):w4+1=w5的门:

L(2)=x0L0(2)+x1L1(2)+x2L2(2)+x3L3(2)+x4L4(2)+x5L5(2)+x6L6(2)=x01+x10+x20+x30+x41+x50+x60=x0+x4=1+x4.

L(2)返回g2的左导线值。同样地:

R(2)=x0R0(2)+x1R1(2)+x2R2(2)+x3R3(2)+x4R4(2)+x5R5(2)+x6R6(2)=x01+x10+x20+x30+x40+x50+x60=x0=1,O(2)=x0O0(2)+x1O1(2)+x2O2(2)+x3O3(2)+x4O4(2)+x5O5(2)+x6O6(2)=x00+x10+x20+x30+x40+x51+x60=x5

因此,P(2)=L(2)R(2)O(2)=(1+x4)1x5=0x0,,x6满足门g2。注意,目标多项式T(X)的构造是为了在门索引j{0,,d1}处为零。换句话说,如果T(X)P(X),那么我们的见证信息x=(1,x1,,x6)在每个门处都满足P(X)

(注意:构造Lj,我们将每个Lj设置为在评估点(0,,d1)L[j]中的值的插值多项式; RjOj同理。)

数学基础知识:拉格朗日插值

给定点和评估{(xi,yi)}i=0d1,我们可以构造一个插值多项式I(X),使I(xi)=yi:

I(X):=i=0d1yiLi(X)

其中,Li(X)是穿过评估值 {x0,,xd1}的拉格朗日基本多项式:

Li(X):=xjxiXxjxixj={1 if X=xi0 otherwise 

当评估域为{0,,d1}时,当X=i,我们得到Li(X)=1,否则为0。

当评估域为{ω0,,ωn1}时,当X=ωi,我们得到Li(X)=1,否则为0。

QAP算术化引出了验证指数中的等式的协议。由于我们目前只有k=2的密码学k-线性映射(通过椭圆曲线Pairings实现),因此二次约束是这些协议可以使用的最一般形式。然而,一类单独的算术化使得更灵活的约束格式成为可能,这些约束的次数高于二。下面的三个小节摘自[7]。

参数系统算术化信息论协议密码编译器
STARK [2]AIR代数链接IOP
(使用FRI作为RS-IOPP)
Merkle树
PlonK [8]RAP多项式IOPKZG承诺
Halo 2 ([3],[4])RAP多项式IOP内积证明

表2: 例子证明系统使用AIR、PAIR和RAP算术化。

英文原文

Recall the definition 1.1 of a QAP of degree d and size m. We can think of the degree d as the number of constraints, and the size m as the number of variables. In our example, we have d=4,m=7. By converting the R1CS form to a QAP, we have reduced our check from three matrix multiplications to a single polynomial identity.

To convert our L,R,O matrices into L(X),R(X),O(X) polynomials, let's examine the properties these polynomials should have. At each variable j and gate i, we want Lj(i) to select the coefficient of variable wj at the left wire of gate gi; and similarly for Rj(i),Oj(i). In other words:

Lj(i)=Lij=li[j],Rj(i)=Rij=ri[j],Oj(i)=Oij=oi[j]

Let's take a look at gate g2(i=2):w4+1=w5.

L(2)=x0L0(2)+x1L1(2)+x2L2(2)+x3L3(2)+x4L4(2)+x5L5(2)+x6L6(2)=x01+x10+x20+x30+x41+x50+x60=x0+x4=1+x4.

L(2) returns us the left wire value of g2. Similarly:

R(2)=x0R0(2)+x1R1(2)+x2R2(2)+x3R3(2)+x4R4(2)+x5R5(2)+x6R6(2)=x01+x10+x20+x30+x40+x50+x60=x0=1,O(2)=x0O0(2)+x1O1(2)+x2O2(2)+x3O3(2)+x4O4(2)+x5O5(2)+x6O6(2)=x00+x10+x20+x30+x40+x51+x60=x5

So P(2)=L(2)R(2)O(2)=(1+x4)1x5=0x0,,x6 fulfil gate g2. Notice that the target polynomial T(X) is constructed to evaluate to vanish at the gate indices j{0,,d1}. In other words, if T(X)P(X), then our witness x=(1,x1,,x6) fulfils P(X) at every gate.

(NB: To construct the Lj 's, we set each Lj to be the interpolation polynomial of the values in column L[j] at the evaluation points (0,,d1); and similarly for the Rj 's and Oj 's.)

Math building block: Lagrange interpolation

Given points and evaluations {(xi,yi)}i=0d1, we can construct an interpolation polynomial I(X) such that I(xi)=yi :

I(X):=i=0d1yiLi(X)

where Li(X) is the Lagrange basis polynomial over the evaluation domain {x0,,xd1} :

Li(X):=xjxiXxjxixj={1 if X=xi0 otherwise 

When the evaluation domain is {0,,d1}, we get Li(X)=1 if X=i, and 0 otherwise.

When the evaluation domain is {ω0,,ωn1}, we get Li(X)=1 if X=ωi, and 0 otherwise.

The QAP arithmetisation induces protocols that verify equations on a secret element in the exponent. Since we currently only have cryptographic k-linear maps for k=2 (via elliptic curve pairings), quadratic constraints are the most general form that these protocols can work with. However, a separate class of arithmetisations enables a more flexible constraint format, with constraints of degree higher than two. The following three sections are adapted from [7].

Argument systemArithmetizationInformation-theoretic protocolCryptographic compiler
STARK [2]AIRalgebraic linking IOP
(uses FRI as RS-IOPP)
Merkle trees
PlonK [8]RAPpolynomial IOPKZG commitment
Halo 2 ([3],[4])RAPpolynomial IOPinner product argument

Table 2: Examples of proof systems which make use of AIR, PAIR, and RAP arithmetisations.

代数中间表示 (AIR)

代数中间表示(Algebraic Intermediate Representation,AIR)是由一组均匀计算(uniform computations)组成的程序表示。一个在域 F 上的 AIR P 由一组含有多个变量的约束多项式 {fi(X1,,X2w)}Fd[X1,,X2w] 定义。AIR P 的一个执行轨迹 Tn 行宽为 w 的元素组成;当且仅当对于任意 j{1,,n} 都有 fi(T[j],T[j+1])=0,则称 T 为有效执行轨迹。在虚拟机的上下文中,AIR P 验证了 w 个寄存器的 n 个状态转换函数步骤。

Fibonacci 数列的 AIR

我们可以使用两个状态转换多项式来指定 Fibonacci 数列的 AIR 程序:

f1(X1,X2,X1next ,X2next )=Anext (B+A);f2(X1,X2,X1next ,X2next )=Bnext (B+Anext ).

例如,我们可以检查在第 i=2 行状态转换是否成立:

f1(X1,X2,X1next ,X2next )=5(3+2)=0;f2(X1,X2,X1next ,X2next )=8(5+3)=0.
stepab
i=111
i=223
i=358
i=41321

练习:你能修改这个程序,使其成为宽度为 3 的 AIR 吗?

数学基础

单位根。AIR 将值列 v=(v1,,vn) 编码为其在求值域 {ω,,ωn} 上的拉格朗日插值多项式,其中 ω 是阶为 n 的乘法子群中的 n 次单位根:

V(X)={v[i] when X=ωi0 otherwise. 

这让我们通过乘以 ω 的因子上下移动行。例如:

Vnext (X)=V(ωX),Vprev (X)=V(ω1X)
英文原文

An Algebraic Intermediate Representation (AIR) [16] is a representation of a program consisting of uniform computations. An AIR P over a field F is defined by a set of multivariate constraint polynomials {fi(X1,,X2w)}Fd[X1,,X2w]. An execution trace T for P consists of n rows of width w;T is a valid execution trace if all fi(T[j],T[j+1])=0 for any j{1,,n}. In the context of a virtual machine, P verifies n steps of a state transition function over w registers.

AIR for Fibonacci sequence

We can specify an AIR program for the Fibonacci sequence using two state transition polynomials:

f1(X1,X2,X1next ,X2next )=Anext (B+A);f2(X1,X2,X1next ,X2next )=Bnext (B+Anext ).

As an example, let's check that the state transition holds on row i=2 :

f1(X1,X2,X1next ,X2next )=5(3+2)=0;f2(X1,X2,X1next ,X2next )=8(5+3)=0.
stepab
i=111
i=223
i=358
i=41321

Exercise: can you modify this program to make an AIR of width 3?

Math building block

Roots of unity. AIR encodes a column of values v=(v1,,vn) as its Lagrange interpolation polynomial over the evaluation domain {ω,,ωn}, where ω is an n-th root of unity in a multiplicative subgroup of order n :

V(X)={v[i] when X=ωi0 otherwise. 

This lets us "shift" up and down rows by multiplying by a factor of ω. For instance:

Vnext (X)=V(ωX),Vprev (X)=V(ω1X)

预处理的 AIR (PAIR)

在预处理的AIR(PAIR)中,我们引入了t个预定义的列{ci}i=1tFn到执行轨迹中,除了由证明者提供的w个证明列之外。这些用于向AIR引入非一致性约束条件,通常被称为“选择器”。

PAIR加法和乘法

让我们构建一个PAIR,在其中对某些行执行加法,对其他行执行乘法。为此,我们定义“加法选择器”s1和“乘法选择器”s2。约束多项式为:

f(X1,X2,X1next ,X2next )=S1(Anext (A+B))+S2(Anext AB).

让我们在i=1的行上检查约束条件,仅启用加法操作:

f(X1,X2,X1next ,X2next )=1(1(0+1))+0(1(01))=0

以及在i=3的行上,启用了两个操作:

f(X1,X2,X1next ,X2next )=1(4(2+2))+1(4(22))=0
steps1s2ab
i=11001
i=20112
i=31122
i=40140
英文原文

In a Preprocessed AIR, or PAIR, we introduce t predefined columns {ci}i=1tFn to the execution trace, in addition to the w witness columns supplied by the prover. These are used to introduce non-uniform constraints to the AIR, and are often referred to as "selectors".

PAIR for addition and multiplication

Let's construct a PAIR where we perform an addition on some rows, and a multiplication on other rows. For this purpose, we define the "addition selector" s1, and the "multiplication selector" s2. The constraint polynomial is:

f(X1,X2,X1next ,X2next )=S1(Anext (A+B))+S2(Anext AB).

Let's check the constraint on row i=1, where only the addition operation is enabled:

f(X1,X2,X1next ,X2next )=1(1(0+1))+0(1(01))=0

and row row=3, where both operations are enabled:

f(X1,X2,X1next ,X2next )=1(4(2+2))+1(4(22))=0
steps12ab
i=11001
i=20112
i=31122
i=40140

带预处理的随机化 AIR (RAP)

具有预处理的随机AIR(RAP)允许交互轮次引入验证器随机性。在稍后的轮次中,可以将较早轮次的随机性用作约束中的变量。这使得本地约束(相邻行之间)可以检查全局属性。

RAP用于多重集合相等性

假设我们有一个宽度为2的AIR,并且想要检查一列中的值(a1,,an)是否是另一列(b1,,bn)的完整排列。这称为多重集合相等性检查。仅检查对于均匀随机选择的γF

i[n](ai+γ)=i[n](bi+γ)i[n](ai+γ)/(bi+γ)=1

为了在两列所有行上检查这个“大乘积”,证明者使用验证器挑战γ构建运行乘积z=(1,z1,,zn),其中

zi=1ji(aj+γ)/(bj+γ)

在最后一行i=n,我们所要做的就是检查zn=i[n](ai+γ)/(bi+γ)=1。我们还必须在第一行i=1上执行一个约束来确保z1=1

练习题:你能写一个仅在行i=1上应用的约束吗?(提示:当i=1时,L1(X)=1,否则为0; 因此只有在行i=1上强制执行一个形如 L1(X)f(X) 的约束。)

为了说明多重集合相等性检查,让我们考虑一个b只包含a中元素移位的示例。为了检查z是否作为一个运行乘积正确构建,我们将引入一个列z到执行跟踪中:

abz
i=1a1a21
i=2a2a3(a1+γ)(a2+γ)
i=3a3a1(a1+γ)(a2+γ)(a2+γ)(a3+γ)
i=400(a1+γ)(a2+γ)(a3+γ)(a2+γ)(a3+γ)(a1+γ)

在每个步骤中,我们检查约束

Znext (B+γ)Z(A+γ)=0

例如,将其应用于第i=2行检查

(a1+γ)(a2+γ)(a2+γ)(a3+γ)(a3+γ)(a1+γ)(a2+γ)(a2+γ)=0.

这个检查归纳地检查了z是否根据期望积累了a,b的乘积。

英文原文

A Randomised AIR with Preprocessing (RAP) allows for rounds of interaction to introduce verifier randomness. In a later round, randomness from the earlier rounds can be used as variables in constraints. This enables local constraints (between adjacent rows) to check global properties.

RAP for multiset equality

Suppose that we had a width-2 AIR and wanted to check that the values in one column (a1,,an) was a complete permutation of the other (b1,,bn). This is called a multiset equality check. It suffices to check that, for a uniformly randomly chosen γF

i[n](ai+γ)=i[n](bi+γ)i[n](ai+γ)/(bi+γ)=1

To check this "grand product" over all rows of both columns, the prover uses the verifier challenge γ to construct a running product z=(1,z1,,zn), such that

zi=1ji(aj+γ)/(bj+γ)

At the final row i=n, we are left to check that zn=i[n](ai+γ)/(bi+γ)=1. We also have to enforce on the first row i=1 that z1=1.

Exercise: can you write a constraint that applies only on the row i=1 ? (Hint: L1(X)=1 when i=1, 0 otherwise; so a constraint L1(X)f(X) is enforced only on the row i=1.)

To illustrate the multiset equality check, let us consider an example where b simply contains a shift of the elements in a. To check that z was correctly constructed as a running product, we introduce a column z to the execution trace:

stepabz
i=1a1a21
i=2a2a3(a1+γ)(a2+γ)
i=3a3a1(a1+γ)(a2+γ)(a2+γ)(a3+γ)
i=400(a1+γ)(a2+γ)(a3+γ)(a2+γ)(a3+γ)(a1+γ)

At each step, we check the constraint

Znext (B+γ)Z(A+γ)=0

As an example, applying this on the row i=2 checks

(a1+γ)(a2+γ)(a2+γ)(a3+γ)(a3+γ)(a1+γ)(a2+γ)(a2+γ)=0.

This inductively checks that z is accumulating the products of a,b as expected.

其他算术化技术

这里未涵盖的一些算术化方法包括:分层算术电路、布尔电路和布尔超立方体。这些方法有时会超出IOP等的信息理论模型,例如“头脑中的多方计算”[12]。在第9讲中,我们将分析选择适当的算术化方法的一些因素。

参数系统算术化信息理论协议密码编译器
Virgo [17]分层算术电路GKR协议IOPMerkle树
Ligero [1]算术电路头脑中MPC,ZKIPCPMerkle树
BooLigero [11]布尔电路头脑中MPC,IOPLigero
HyperPlonK [5]布尔超立方体sumcheck协议
(多线性IOP)
多线性PCS

表3:其他算术化方法的一些示例。

英文原文

Some arithmetisations not covered here include: layered arithmetic circuits, Boolean circuits, and the Boolean hypercube. These sometimes lend themselves to information-theoretic models beyond the IOP, such as MPC-in-the-head [12]. In Lecture 9 (Proving Systems Stack; Recursion and Proof Composition), we will analyse some of the factors that go into picking a suitable arithmetisation.

Argument systemArithmetizationInformation-theoretic protocolCryptographic compiler
Virgo [17]layered arithmetic circuitsGKR protocol IOPMerkle tree
Ligero [1]arithmetic circuitsMPC-in-the-head, ZKIPCPMerkle tree
BooLigero [11]Boolean circuitsMPC-in-the-head, IOPLigero
HyperPlonK [5]Boolean hypercubesumcheck protocol
(multilinear IOP)
multilinear PCS

Table 3: Some examples of other arithmetisations.

参考文献

[1] S. Ames, C. Hazay, Y. Ishai, and M. Venkitasubramaniam. Ligero: Lightweight sublinear arguments without a trusted setup. In Proceedings of the 2017 acm sigsac conference on computer and communications security, pages 2087–2104, 2017.

[2] E. Ben-Sasson, I. Bentov, Y. Horesh, and M. Riabzev. Scalable, transparent, and postquantum secure computational integrity. Cryptology ePrint Archive, 2018. [3] S. Bowe, J. Grigg, and D. Hopwood. Recursive proof composition without a trusted setup. Cryptology ePrint Archive, 2019.

[4] S. Bowe, D. Hopwood, and J. Grigg. The halo2 Book: Protocol Description. https://zcash.github.io/halo2/design/protocol.html, 2020.

[5] B. Chen, B. Bünz, D. Boneh, and Z. Zhang. Hyperplonk: Plonk with linear-time prover and high-degree custom gates. Cryptology ePrint Archive, 2022.

[6] A. Chiesa, Y. Hu, M. Maller, P. Mishra, N. Vesely, and N. Ward. Marlin: preprocessing zkSNARKs with universal and updatable SRS. In Annual International Conference on the Theory and Applications of Cryptographic Techniques, pages 738–768. Springer, 2020.

[7] A. Gabizon. From AIRs to RAPs - how PLONK-style arithmetization works. https://hackmd.io/@aztec-network/plonk-arithmetiization-air, 2020.

[8] A. Gabizon, Z. J. Williamson, and O. Ciobotaru. Plonk: Permutations over lagrange-bases for oecumenical noninteractive arguments of knowledge. Cryptology ePrint Archive, 2019.

[9] R. Gennaro, C. Gentry, B. Parno, and M. Raykova. Quadratic span programs and succinct NIZKs without PCPs. In Annual International Conference on the Theory and Applications of Cryptographic Techniques, pages 626–645. Springer, 2013.

[10] J. Groth. On the size of pairing-based non-interactive arguments. In Annual international conference on the theory and applications of cryptographic techniques, pages 305–326. Springer, 2016.

[11] Y. Gvili, S. Scheffler, and M. Varia. Booligero: improved sublinear zero knowledge proofs for boolean circuits. In International Conference on Financial Cryptography and Data Security, pages 476–496. Springer, 2021.

[12] Y. Ishai, E. Kushilevitz, R. Ostrovsky, and A. Sahai. Zero-knowledge from secure multiparty computation. In Proceedings of the thirty-ninth annual ACM symposium on Theory of computing, pages 21–30, 2007.

[13] A. Kothapalli, S. Setty, and I. Tzialla. Nova: Recursive zero-knowledge arguments from folding schemes. In Advances in Cryptology–CRYPTO 2022: 42nd Annual International Cryptology Conference, CRYPTO 2022, Santa Barbara, CA, USA, August 15–18, 2022, Proceedings, Part IV, pages 359–388. Springer, 2022.

[14] J. Lee. Dory: Efficient, transparent arguments for generalised inner products and polynomial commitments. In Theory of Cryptography Conference, pages 1–34. Springer, 2021.

[15] S. Setty. Spartan: Efficient and general-purpose zkSNARKs without trusted setup. In Annual International Cryptology Conference, pages 704–737. Springer, 2020.

[16] StarkWare. ethSTARK Documentation. Cryptology ePrint Archive, Paper 2021/582, 2021. https://eprint.iacr.org/2021/582.

[17] J. Zhang, T. Xie, Y. Zhang, and D. Song. Transparent polynomial delegation and its applications to zero knowledge proof. In 2020 IEEE Symposium on Security and Privacy (SP), pages 859–876. IEEE, 2020.