风险提示:央行等十部委发布《关于进一步防范和处置虚拟货币交易炒作风险的通知》, 请读者提高风险意识。

Foresight Ventures: 证明递归及其在ZKML中的应用(证明递归部分)

证明递归几乎是零知识证明证明庞大复杂程序的唯一方法。

Maggie
Maggie
热度 ...

原文作者:Maggie

原文来源:Foresight Research

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引入区块链。

递归证明现在,我想先简要介绍一下我们公司。

  • Foresight Ventures 是一家以研究驱动的专注于区块链技术与加密行业的投资机构。我们的产品矩阵包括几个关键组成部分。
  • 首先,Foresight News 是亚太地区最大的多语种web3媒体平台。
  • 其次,我们运营着 Foresight X,Foresight X是我们的加速器,目前同步在巴黎举办hacker house活动。
  • 最后,我们拥有蓬勃发展的全球开发者社区 OpenBuild。

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

递归证明现在,让我们开始今天的议程。

我们的讨论将分为两个部分:证明递归部分和ZKML部分。

我将用前半个小时来解释为什么证明递归很重要,理论的演变以及基于折叠的证明递归。

然后,Cathie博士将接过话题,介绍证明递归在实际ZKML中的应用。

递归证明递归证明为什么我们要关注证明递归呢?

这是因为我们在使用零知识证明(ZKP)来证明程序正确执行时面临了两个挑战:

首先,将非常庞大且复杂的程序在单个整体ZKP中进行证明是低效且不切实际的。从幻灯片上的图表可以看出,我们首先需要将目标程序转换为ZKP能理解的算术电路(arithmetic circuits)或约束(constraints)。然后,我们将这些电路和见证(Witness)输入到ZKP证明系统中生成证明。之后再进行验证。包含大量计算和复杂算法的程序可能会生成庞大的电路和大量的约束。这增加了生成证明所需的计算资源。有的时候,由于证明者的内存限制,证明生成可能都无法成功执行。

此外,一些证明不适合在区块链上验证,因为区块链上有Gas限制。因此,控制证明的大小和证明验证过程的复杂性也是至关重要的。

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

  • 证明组合使用不同的证明系统依次生成最终证明。第一个证明系统是一个快的证明系统,但可能会生成一个较大的证明。为了减小证明的大小,我们可以运行第二个系统,该系统可能是一个较慢的证明系统,但会生成一个较短的证明。第二个证明系统将证明第一个系统的验证者会接受见证。因此,通过证明组合,我们可以构建一个快的证明系统,并且证明也较小。
  • 第二种方法是证明聚合。证明聚合是将多个证明聚合成一个单一的证明。例如,zkEVM包含了许多不同的电路,如EVM电路、RAM电路、存储电路等。在实践中,验证所有这些证明在区块链上是非常昂贵的。因此,我们使用证明聚合,即使用一个证明来证明这些多个子电路证明是有效的。这个单一的证明在区块链上更容易被验证。
  • 递归证明第三种强大的方法是证明递归。证明递归的概念是构建一连串的验证者电路,在每一步中,我们可以生成一个比前一个证明更容易验证的证明。最终,我们只需要用最低的复杂度来验证最终的证明。

递归证明证明递归可以用于实现增量可验证计算Incrementally Verifiable Computation (IVC)。

当我们有一个很长的计算,这个计算是循环执行函数F。比如,我们有一个初始状态S0,在执行F后,我们得到S1,然后重复此过程直到得到最终输出Sn。我们希望证明输出Sn是正确的结果。

证明递归在这里的作用是可以逐步更新一个证明i到一个证明i +1。证明可以逐步更新,最终,我们只需验证一个证明,以确保整个执行链是有效的。

因此,它最适用于长计算和不断演化的计算。

  • 对于长时间计算,我们可以将其分解为多步,并使用IVC来证明这些步骤,从而降低了证明者所需的内存大小。
  • 当将这种方法应用于区块链时,它也是非常有价值的。由于区块链的状态不断增长,通过IVC证明,我们可以通过检查最新的递归证明来验证当前状态。如果该证明有效,我们可以相信整个执行历史是正确的。

总之,由于证明者的内存和时间限制,证明递归几乎是我们能够证明非常复杂的陈述的唯一方法。而且,IVC已经在简洁区块链Mina、VDF函数、ZKML等中得到了应用。

递归证明

递归证明IVC技术的演变

在过去的几年中,IVC经历了三个阶段的演变。

  • 第一个阶段是基于SNARKS的IVC。
  • 第二个阶段基于带累加的SNARKS或NARKS的IVC。
  • 最新阶段是基于折叠的IVC。这引起了当今的广泛关注。

今天,我们将简要回顾前两种类型,然后将重点放在最后一种基于折叠IVC方案上。

  • 递归证明基于SNARK的IVC原理简单。在每一步中,IVC证明者需要证明两件事情:
  • 因此,IVC递归电路中嵌入了一个SNARK验证电路,并需要完全验证前一步生成的证明。这个电路庞大且昂贵。
  • 函数F正确执行了,生成了状态S。
  • 前一步生成的ZKP证明π是有效的。
  • 第二类IVC是基于带累加的SNARKs,例如halo和halo2。它们不需要在IVC递归电路中嵌入SNARK验证电路。而是,它们引入了累加方案,将验证的昂贵部分延迟到一个累加器中,只在递归电路中保留一个小的累加验证者。累加验证者的成本远低于完整的SNARK验证者。
  • 递归证明IVC 的最新阶段是基于折叠(folding schemes)的。 折叠方案最初由Nova引入。 它是一种将两个待证明的实例压缩为一个实例的方法。 假设我们有一个电路 C 和两个实例(x1,w1) (x2,w2)。 我们想将它们折叠在一起并输出一个新的折叠实例(x, w)。 如果两个原始实例是有效的,我们将得到一个有效的折叠实例。如果折叠实例是有效的,证明者必须知道原始实例x1和x2的有效见证w1和w2。

递归证明

递归证明基于折叠的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是有效的。

关于【Foresight Ventures: 证明递归及其在ZKML中的应用(证明递归部分)】的延伸阅读

  • 递归 STARK 证明:首个通用计算递归证明上线以太坊主网

    递归证明指的是通过生成一个证明来验证多个「上游」证明的有效性,不仅适用于硬编码逻辑,而且适用于通用计算,直接优势包括降低链上成本,降低延迟以及催生 L3 和应用递归等新机会。

  • 长推:EVM性能提升的关键

    通过使用零知识证明机制,如zkVM和zk Co-processor,可以将EVM的性能提升问题解决。这些机制可以在链下进行计算,并使用zk-SNARKs和zk-STARKs来证明知道一个秘密而不透露。类似于GPU和云服务的协处理器可以用来进行额外的特定计算。以太坊的zkVM可以处理更复杂的计算,并将结果和证明提交到链上。BitVM和AVM也有类似的设计。

递归证明然而,值得注意的是,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。

  • 首先,证明者将计算交叉项T,并将T的承诺发送给验证者,以帮助其计算折叠实例。
  • 然后,验证者选择一个随机数r并将其发送给证明者,我们可以使用Fiat-Shamir变换使其成为非交互式的。
  • 折叠证明者计算折叠实例I和见证Z。
  • 验证者使用承诺T和原始实例I1和I2,轻松计算出折叠实例I。

如果两个原始见证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产生的递归开销最低。因此,它们是目前最优的方法。

递归证明

递归证明更多的基于折叠的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的重要创新,让我们快速回顾一下。

  • Nova,R1CS 的折叠方案,允许我们对于同一个方法的循环执行用到IVC。
  • 如果我们可以在每一步执行不同的功能,那就更好了。 所以SuperNova将Nova推广到non-uniform IVC上,我们在IVC链上能运行多个方法,并且每个方法都可能在IVC上出现多次。
  • Sangria 发现到 Nova 的折叠方案可以应用于 PLONKish 约束系统。 它支持复制约束(copy constraints)和2 阶的自定义约束(degree-2 custom constraints),但不支持高阶自定义约束(high degree custom constraints)和查找约束(lookup constraints)。
  • HyperNova 引入了Customizable Constraint Systems(CCS)的折叠方案。 HyperNova 支持高阶自定义约束和查找约束,并使用sum-check protocol来避免执行大量的FFT(快速傅里叶变换)。
  • ProtoStar 进一步增强了折叠方案,支持高阶自定义约束、查找约束和non-uniform IVC。

在结束演讲之前,我想强调,如果在座的任何人都有出色的想法,并需要资源将其付诸实践,请务必不要犹豫,随时联系我们Foresight Ventures。

此外,我们邀请您加入我们的Foresight X第二届的孵化计划。我们在这里支持并培养您的创业之路。借助我们深厚的行业知识和丰富的资源,我们将确保您的项目蓬勃发展。

此外,如果您从事学术或研究领域,Foresight X提供竞争力的Grants来支持您的研究之路。

我们在这里提供一个QR码,其中包含您可能感兴趣的所有链接,包括研究报告。请随时拍照或扫描该二维码,了解更多信息。如果演讲结束后您有任何问题,您可以在Twitter上找到我。

再次感谢您参与我们的Tech Talk。现在,我将把舞台交给Cathie博士进行下一部分的演讲。

免责声明:本文仅代表作者个人观点,不代表链观CHAINLOOK立场,不承担法律责任。文章及观点也不构成投资意见。请用户理性看待市场风险,以及遵守所在国家和地区的相关法律法规。
图文来源:Maggie,如有侵权请联系删除。转载或引用请注明文章出处!

标签:

分享至
https://www.chainlook.cn/toutiao/1691143954.html

下一篇:

牛熊转换迷茫之际,我们找头部VC聊了聊

“我们对区块链的未来充满信心,监管最佳途径正在形成,我们也会积极参与讨论,努力成为带头人之一。”

免责声明:
链观CHAINLOOK作为区块链技术应用与Web3行业研究的智库媒体,旨在为中国区块链专家、学者们提供最新的行业资讯信息与数据样本,用于区块链技术研究与创新。本站所发布的文章仅代表作者的个人观点,不代表链观CHAINLOOK官方立场,本站所发布的区块链行业研究报告与数据分析成果是通过人工智能算法对数据内容进行分析与归纳生成,不代表任何投资暗示与建议,链观CHAINLOOK不承担法律责任。

风险提示:
虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险,链观CHAINLOOK坚决反对各类代币炒作,请读者提高风险意识,理性看待区块链技术应用及市场风险。

© 链观CHAINLOOK All Rights Reserved. 京ICP备18054193号-5