如今,证明递归几乎是零知识证明证明庞大复杂程序的唯一方法。 此外,ZKML 将可验证的 AI 引入区块链。
撰文:Maggie,Foresight Ventures

PPT 链接: https://img.foresightnews.pro/file/ProofRecursion.pdf
大家下午好, 欢迎来到 zkDay Tech Talk。
我叫 Maggie,我是 Foresight Ventures 的技术总监。
我很高兴 Dr. Cathie 作为我们这个话题的共同演讲者。Dr. Cathie 是以太坊基金会 Privacy & Scaling Explorations 团队的 ZKML 研究员。
我们很高兴向您介绍一个前沿主题:「证明递归及其在 ZKML 中的应用。」
如今,证明递归几乎是零知识证明证明庞大复杂程序的唯一方法。 此外,ZKML 将可验证的 AI 引入区块链。

现在,我想先简要介绍一下我们公司。
如果您想了解更多关于我们的信息,请随时访问我们的官方网站或在社交媒体渠道上与我们建立联系。

现在,让我们开始今天的议程。
我们的讨论将分为两个部分:证明递归部分和 ZKML 部分。
我将用前半个小时来解释为什么证明递归很重要,理论的演变以及基于折叠的证明递归。
然后,Cathie 博士将接过话题,介绍证明递归在实际 ZKML 中的应用。

这是因为我们在使用零知识证明(ZKP)来证明程序正确执行时面临了两个挑战:
首先,将非常庞大且复杂的程序在单个整体 ZKP 中进行证明是低效且不切实际的。从幻灯片上的图表可以看出,我们首先需要将目标程序转换为 ZKP 能理解的算术电路(arithmetic circuits)或约束(constraints)。然后,我们将这些电路和见证(Witness)输入到 ZKP 证明系统中生成证明。之后再进行验证。包含大量计算和复杂算法的程序可能会生成庞大的电路和大量的约束。这增加了生成证明所需的计算资源。有的时候,由于证明者的内存限制,证明生成可能都无法成功执行。
此外,一些证明不适合在区块链上验证,因为区块链上有 Gas 限制。因此,控制证明的大小和证明验证过程的复杂性也是至关重要的。

为了解决这些挑战,我们通常采用三种方法:证明组合(proof composition)、证明聚合(proof aggregation)和证明递归(proof recursion)。


证明递归可以用于实现增量可验证计算 Incrementally Verifiable Computation (IVC)。
当我们有一个很长的计算,这个计算是循环执行函数F。比如,我们有一个初始状态S0,在执行F后,我们得到S1,然后重复此过程直到得到最终输出Sn。我们希望证明输出Sn是正确的结果。
证明递归在这里的作用是可以逐步更新一个证明 i 到一个证明 i +1。证明可以逐步更新,最终,我们只需验证一个证明,以确保整个执行链是有效的。
因此,它最适用于长计算和不断演化的计算。
总之,由于证明者的内存和时间限制,证明递归几乎是我们能够证明非常复杂的陈述的唯一方法。而且,IVC 已经在简洁区块链 Mina、VDF 函数、ZKML 等中得到了应用。

在过去的几年中,IVC 经历了三个阶段的演变。
今天,我们将简要回顾前两种类型,然后将重点放在最后一种基于折叠 IVC 方案上。



现在,让我们尝试将两个 R1CS 实例折叠在一起,看看是否能满足上一张幻灯片中提到的条件。
我们有两个原始见证,z1和z2(实际上是w1和w2)。z1满足方程Az1 * Bz1 = Dz1,表示它是一个有效的见证。同样,z2也是一个满足条件的见证。
然后,我们使用一个随机线性组合将它们折叠在一起,设定z = z1 + 随机数 r * z2。我们希望折叠后的见证z也是一个有效的实例。也就是说,我们希望Az * Bz = Dz。

但是,当我们展开Az * Bz时,会生成许多交叉项,且结果并不等于Dz。因此,z不是有效的。我们未能成功将两个 R1CS 实例折叠在一起。

然而,如果我们允许方程中存在一些噪声,它可能是相等的。Nova 引入了一个误差向量(error vector)E,它吸收了折叠时生成的交叉项。还有一个标量c,用于吸收Dz的额外因子。

这个 R1CS 变体被称为 relaxed R1CS。relaxed R1CS 的实例包括x,标量c,和误差向量E。一个有效的见证z满足Az * Bz = C * Dz + E(实际上是说如果等式满足则w是有效的见证)。
我们有两个实例:*(x1, c1, E1),其见证为w1*,和 (x2, c2, E2),其见证为w2。两个见证都是有效的。现在,让我们看看是否可以将它们一起折叠。
我们展开方程Az * Bz。最后,我们得到c * Dz + E。所以z满足了这个方程,是一个有效的见证。
现在,我们可以将z1和z2折叠在一起,得到一个新的折叠见证z,该见证对于ABD是有效的。

然而,值得注意的是,E是由E1, E2和T计算得到的,其中T包含了那些交叉项,是从见证算出来的。因此,折叠的证明者(folding prover)必须向验证者(folding verifier)提供见证以计算E。这使得折叠方案不是 non-trivial 的,也不是零知识的。
Not non-trivial 意味着验证折叠实例可能不比验证原始的两个实例更高效,或者通信成本太大。不是零知识的,是因为在这种情况下,验证者得知了 witnesses。

为了解决这个问题,我们可以用 E 和 T 的承诺 (commitment) 來替换 E 和 T。证明者不再向验证者发送见证,而是发送承诺以帮助验证者计算折叠的实例。

因此,我们将实例中的E替换为E的承诺,并将E移动到见证中。这被称为 commited relaxed R1CS。请注意,为了更容易理解,这里展示的方法是从 Nova 的论文简化而来的。
现在,让我们来看一下折叠方法。我们有一个折叠证明者和一个验证者。证明者有两个 commited relaxed R1CS 实例 I1 和 I2,以及这两个实例的见证 z1 和 z2。验证者只有实例 I1 和 I2。
如果两个原始见证 z1 和 z2 是满足条件的见证,那么折叠见证 z 将是折叠实例 I 的满足条件的见证。我们需要注意的是,承诺方案必须是加同态的。

在 IVC 中,我们可以使用折叠方案来折叠在每一步中生成的 committed relaxed R1CS 实例。
我们可以将实例 I0 和 I1 折叠在一起,生成一个折叠实例 I 0 到 1,我们也称之为运行实例。然后,将新实例 I2 与该运行实例折叠在一起,得到 I 0 到 2。我们重复这些步骤,得到最终实例 I 0 到 n-1。
最后,使用折叠后的见证,我们可以为最终的折叠实例生成 ZKP 证明,然后进行验证。
然而,这个证明是不完美的,因为在这里的 SNARK 验证者只知道折叠见证是有效的,但无法保证折叠过程是正确完成的。

因此,我们必须在每一步中验证折叠过程。
我们描述一个方法 F',即 IVC 递归方法。它既包括迭代方法 F,也包括能够验证折叠过程的方法。
为了验证折叠过程,我们首先验证hi,它是上一步折叠结果的哈希。然后我们验证折叠过程,即将实例 i 与运行实例 0 到 i-1折 叠,生成一个新实例 0 到 i,验证着是否正确。然后输出hi+1,即折叠结果的哈希。因此,我们通过执行一些哈希和乘法运算,以非常低的成本在每一步中验证了折叠过程。

总结一下,正如我们之前提到的,基于 SNARK 的 IVC 成本高昂,因为我们需要读取整个证明并在 IVC 递归方法中完整的验证方法。
当涉及到基于 SNARK with accumulation 类型的 IVC 时,我们仍然需要每一步都读取整个证明。但有所改进的是,我们可以将验证分为一个复杂的部分和一个简单的部分,将简单的部分在 IVC 链上运行,延迟复杂部分的验证。
而对于基于折叠的 IVC,我们所需做的就是读取未证明的实例,并将它们折叠到一个运行实例中。折叠过程的验证很简单,就是进行一些基本的哈希和乘法运算。我们甚至可以将证明部分推迟到最后一步。与前两种方法相比,基于折叠的 IVC 产生的递归开销最低。因此,它们是目前最优的方法。

在 Nova 的折叠方案引入后,自去年以来,我们看到了许多不同基于折叠的 IVC 方法。
其中之一是 SuperNova,它支持 IVC 链中存在多种方法。
给定若干非确定性方法,例如F1到F3,以及一个ϕ函数在每一步中选择其中一个F。因此,这个例子中,在 IVC 链中我们有 3 种类型的方法,而每种方法可能会出现多次。
为了折叠这些 non-uniform 的 IVC 电路实例,SuperNova 将 Nova 应用于每组 F。使用 ϕ 函数来选出运行实例,并将当前实例折叠到运行实例中。通过这种方式,我们单独折叠每组 F。

Sangria 是 Plonk 的折叠方案,或者更准确地说,是 PLONKish 的折叠方案。
PLONKish 在定义约束和门行为方面提供了很大的灵活性。 它不仅支持加法和乘法约束 (addition and multiplication constraints),还支持复制约束 (copy constraints) 和自定义门约束,例如查找约束 (lookup constraints)。查找约束使得 zk 不友好的方法能够被预先计算以获得更好的性能。
PLONKish 功能强大,加速了各种程序的 zk 算数化。 Sangria 发现折叠方案可以轻松扩展到 PLONKish 约束系统。 支持加法和乘法约束、复制约束和 2 阶自定义约束。

总之,证明递归是一种非常聪明的技术,它使我们能够证明大而复杂的陈述。
基于折叠的 IVC 方案如今引起了极大的关注,并且比基于 SNARK 的 IVC 更高效。 我们相信它们将在业界得到广泛采用。
这里的图表列出了基于折叠的 IVC 的重要创新,让我们快速回顾一下。
在结束演讲之前,我想强调,如果在座的任何人都有出色的想法,并需要资源将其付诸实践,请务必不要犹豫,随时联系我们 Foresight Ventures。
此外,我们邀请您加入我们的 Foresight X 第二届的孵化计划。我们在这里支持并培养您的创业之路。借助我们深厚的行业知识和丰富的资源,我们将确保您的项目蓬勃发展。
此外,如果您从事学术或研究领域,Foresight X 提供竞争力的 Grants 来支持您的研究之路。
我们在这里提供一个 QR 码,其中包含您可能感兴趣的所有链接,包括研究报告。请随时拍照或扫描该二维码,了解更多信息。如果演讲结束后您有任何问题,您可以在 Twitter 上找到我。
再次感谢您参与我们的 Tech Talk。现在,我将把舞台交给 Cathie 博士进行下一部分的演讲。
感谢 Mr. Keep 对内容进行校对。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
