IVC 是一种强大的密码原语,它使我们能够以增量方式证明计算的完整性。 该策略非常适合虚拟机执行和具有动态控制流的通用程序.
<!--StartFragment-->
- 原文:Champagne SuperNova, incrementally verifiable computation
- 作者:Not a Monad Tutorial
- 译者:Kurt Pan
增量证明系统相比于传统证明系统具有如下优势:
增量可验证计算 (IVC) 提供了一种证明机器执行完整性的方法。 要使用 IVC,我们需要设计一个可以执行任何机器支持指令的通用电路。 在每一步,我们都必须调用这个电路。 这很不方便,因为证明每一步的开销都与通用电路的大小成正比,即使程序仅以低得多的开销执行其中一个受支持的指令时也是如此。 解决该缺点的一种方法是通过构造具有最小指令集的虚拟机来限制通用电路的大小。
SuperNova 提供了一个基于虚拟机的密码证明系统(包括证明者和验证者)和设计用于在该虚拟机上运行的程序,满足以下性质:
SuperNova 利用折叠方案(之前Nova 使用的密码原语),使用松弛承诺的 R1CS 来实现非均匀 IVC。 SuperNova 是 Nova 的扩展,支持具有丰富指令集的机器(Nova 仅限于一条指令)。 以下部分中,我们将分别叙述 SuperNova 所需的不同组件以及如何实现非均匀 IVC。
一个对向量的承诺方案是三个有效算法的集合:
承诺方案必须满足以下性质:
一些承诺方案还满足下面两个性质,例如 Pedersen 方案,在我们的场景中很有用:
SuperNova 可以用任何满足上述四个性质的承诺方案来实例化,例如 Pedersen 、KZG 或 Dory。
我们可以将程序视为$ n+1$ 个非确定性多项式时间可计算函数的集合,$f1,f2,…,fn,ϕ$,其中每个函数$f_j$接收$k$个输入变量,产生 $k$个输出变量;每个$ f_j$ 也会额外有非确定性输入。 函数$ ϕ$ 可以接收$k$个输入和非确定性输入,输出元素$ j=ϕ(z=(x,w))$,起到选择 $fi $之一的作用。 每个函数都表示为二次秩一约束系统 (R1CS),这是一个 NP 完全问题。
在 IVC 中,证明者第k步的输入为(k,x0,x)以及证明见证$(w_0,w1,…,w{k−1})$知识的证明$Πk$,使得对所有$j=0,1,…,k,( x=x{k+1})$,
$$ x_{j+1}=F(x_j,w_j)\qquad\qquad\qquad\qquad(2) $$
换句话说,给定一个表明前一步计算正确的证明和当前状态$ xk$,我们得到下一个状态 $x{k+1}$ 和一个表明我们正确计算了步骤 k的证明 $Π_{k+1}$ 。
在 NIVC 场景中,用$ϕ$ 来选择我们要使用的函数,
$$ x_{j+1}=Fϕ(x_j,w_j)(x_j,w_j)\qquad\qquad\quad(3) $$ 每一步中,SuperNova 折叠一个代表程序执行的上一步的R1CS实例及其见证,将其变成一个正在运行的实例(将两个$ N$ 大小的 NP 实例变成单个 $N$ 大小的 NP 实例)。 证明者使用包含验证者电路和与正在执行的函数 $f_j$ 对应的电路的增强电路。 验证者电路包括非交互式折叠方案和用于计算$ ϕ$ 的电路。 我们将增强函数表示为 $f^′_j$。
折叠方案的一个问题是我们会有多个指令,每个指令都有其 R1CS 表示。 可以走通用电路的方式,但这会使我们为许多廉价指令也付出高昂的开销。 Nova中避开了这个问题,因为只有一种指令。 为处理多条指令,SuperNova 使用 $n$ 个运行实例 $Ui$,其中 $U{i(j)}$ 证明 $f^′_j$ 的所有先前执行,直至第 $i−1 $步。 因此,检查所有 $U_i $等价于检查所有$i−1$ 步。 每个$ f^′_j$ ,对应于第$i$步 ,$u_i$ 作为输入,并将其折叠到相应的 $U_i$ 实例。 可以理解为是查看我们要执行的函数,并与之前执行的相关函数进行实例折叠。 通过这样做,我们只在每条指令被使用时才支付开销,代价是维持更多运行实例和相应更新。
$f^′_j$对应的验证者电路做以下步骤:
IVC 是一种强大的密码原语,它使我们能够以增量方式证明计算的完整性。 该策略非常适合虚拟机执行和具有动态控制流的通用程序。 当然可以通过使用通用(universal)电路来实现这一点,但代价是每条指令(无论多快)都会有相当大的开销。 Nova 引入了折叠方案,允许为单个指令实现 IVC。 SuperNova 通过添加选择每一步要执行指令的选择函数ϕ将 Nova 扩展为多条指令。 为了支持多条指令,SuperNova需要为每个函数的执行维护单独的记录。 该构造有许多令人兴奋的应用,因为我们可以在不需要昂贵的任意电路的情况下实现 IVC。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!