零知识证明正逐渐成为未来十年的一项根本性的变革技术。在Web3中,该技术已经解决了可扩展性和隐私方面的主要瓶颈;这是令人兴奋的区块链的两个主要痛点。在可扩展性方面,几个zkrollup,又称有效性rollup,正在推出,将以太坊的规模扩大10-100倍,同时通过降低交易成本改善用户体验。在隐私方面,ZKP正在超越私人交易和交易混合时代,扩展到更复杂和有用的领域,如私人链上交易、身份和验证证书。
有很多关于ZKP的内容,包括我们自己的愿景,即ZKP空间在未来将如何发展,以及为实现这一未来需要哪些初创企业。但是,在如何从ZKP中获益以及从哪里开始的问题上,对建设者的教育仍然存在空白。本文努力填补这一空白,汇总重要资源,引导开发者了解ZKP在实践中如何运作,以及如何在其应用中使用ZKP.
在Alliance,我们对ZKP带来的新用例特别兴奋。我们鼓励这一领域的建设者与我们联系,讨论他们的想法,并申请加入Alliance计划。
ZKP如何在实践中运作
ZKP的标准定义是:它是一个被称为证明者的一方向另一方证明他们知道特定信息而不透露该特定信息的过程。在实践中,至少在Web3中,ZKP的使用方式往往不同。大多数应用程序不使用ZKP来显示专有数据的所有权。相反,ZKP被用来通过可验证性来提高信任。我们期望ZKP在未来成为实体之间的标准信任模型。原因是,ZKP的两个主要组成部分,即证明和验证,以一种能够在寻求信任的实体和其用户之间实现独特的互动方案的方式被分开。
运行ZKP的主要组成部分是证明生成和证明验证。证明生成包括运行繁重的计算以生成执行过程的证明。这个证明的作用是消除对验证者的信任。相反,任何人都可以在证明上运行一个简单的过程,以验证验证人所运行的过程的完整性。这种心理模型允许企业运行一个过程,通常是一个复杂的过程,并允许客户信任上述过程的执行,而不需要重复它。我们来思考一个例子。假设你订阅了OpenAI的付费计划,以使用他们的一个大型语言模型,如chatGPT.你必须相信OpenAI确实会运行你要求的特定模型,而不是用更简单的低效模型来替代它。如果OpenAI可以向你发送少量的数据,证明它确实运行了你要求的特定模型,那会怎么样呢?此外,想象一下,如果每个专有的SaaS产品都能为其消费者提供这样的保证。
山东省人力资源和社会保障厅:利用区块链技术 实现电子档案材料的分散式存储:山东省人力资源和社会保障厅探索实现退休审核由“现场面对面”到“掌上不见面”转型,推动“掌上办”“零跑腿”“不见面”“无纸化”变革,并运用区块链技术实现电子档案材料的分散式存储,经技术识别后导入核心平台,审核业务随时可查询、永久可回溯。(齐鲁网)[2020/5/8]
这种信任的最小化是ZKP的承诺。例如,在Web2中,ZKP可以保证公平的信用评估或公平的保险索赔处理,只需保证对所有客户使用相同的算法。ZK技术还没有出现,因为运行一个ZKP程序仍然相对昂贵。然而,我们看到ModulusLabs?等公司正在构建一种使用ZKP来证明AI推理的技术。
高效ZKP的技术要求
在技术层面上,一个高效的ZKP系统需要同时实现以下目标:
1.?减少证明系统的计算复杂性和延迟,即使证明者能够有效地生成证明,并以最小的延迟将其传达给验证者
2.?实现较小的证明规模
3.?实现高效的验证,即最小的验证成本
除了这些主要目标外,根据用例可能还需要一些次要目标,例如:
·?注重隐私的应用中的数据隐私,这意味着证明系统可以处理私人输入,在生成的证明中不被泄露
·?尽可能避免信任设置,以简化安全假设
·?实现证明递归以进一步降低验证成本,即一个验证可以验证多个证明,并在不同的证明之间摊销成本
要同时实现所有这些目标是很有挑战性的。根据不同的用例,ZKP系统会优先考虑这些目标中的一些。例如,SNARK证明系统可以产生简洁的证明,但证明的复杂性会增加。另一方面,STRAK有高效的证明器,但证明规模可能比SNARK大100倍。ZK的研究人员不断努力推进技术前沿,通过发明新的证明机制同时改善这三个指标。
不同证明系统的比较
对于构建ZKP相关产品的开发者来说,需要考虑的一个重要问题是如何选择底层证明系统。目前有几个ZKP验证器的实现,还有更多处于研发阶段。ZKP后端选择不仅取决于技术方面,也取决于目标产品。以选择rollup的证明系统为例。rollup的关键特征,如提款时间、交易成本,甚至是去中心化,将主要由ZKP证明架构决定,如下表所述。
声音 | 中国传媒大学郑宁:暗网能够生存得益于隐匿性,主要表现包括用户交易利用数字货币:据法制日报8月17日报道,中国传媒大学政法学院法律系副主任郑宁表示,暗网复杂隐蔽,承载着大量的信息资源且鱼龙混杂,成为助长网络犯罪的重要工具。暗网能够生存得益于隐匿性,主要表现为用户难以追查、沟通隐蔽、交易利用数字货币。[2019/8/19]
证明系统特性如何影响ZKProllup的性能。
在rollup中,证明发生在业务方面,即由rollup运营商进行。现有的zkrollup,如Starknet和zksync目前使用中心化的证明者。因此,他们可以将证明工作委托给专门的证明者,即证明即服务的公司,以提高证明者的性能。通过专业化和利用优化的SW/HW,以太坊兼容的zkEVM的证明时间可以减少到几分钟。例如,PolygonzkEVM的证明时间目前约为2分钟。几分钟的证明时间,也就是提款延迟,对于一个rollup来说是可以接受的。
另一方面,一些用例要求证明发生在用户端,例如,生成私人交易,如TornadoCash交易。为了确保合理的用户体验,证明的时间不能超过几秒钟。此外,随着用户在资源有限的设备上使用钱包在浏览器中进行这些计算,选择一个具有快速验证器的证明系统非常重要。这里的一个很好的例子是Zcash在2018年的Sapling升级中将其证明系统改为Groth16,这是提高屏蔽交易速度的一个主要因素。
证明系统的比较
一般来说,很难对不同证明系统的性能进行准确的比较,尤其是证明和验证速度,因为它们取决于库的实现、所选择的加密曲线和使用的硬件。Mina团队在本文中提供了一个很好的高维度的比较。还有人在努力为不同的zk系统创建基准测试工具。
主要证明技术的性能比较。来源:?O(1)Lbas
该表提供了SNARK实施的良好比较,以及它们在速度方面从Groth16到Plonk到Halo的进展。尽管有进步,STARK仍然在证明速度方面胜出,代价是证明规模更大。该表还讨论了证明系统的两个重要特征:设置不可信性和电路可编程性。
设置不可信的部分讨论了电路创建的预处理阶段。一些证明技术要求在预处理阶段通过多个实体的参与来生成秘密随机性,即多方计算。如果一个参与者是诚实的,那么生成的随机性确实是秘密的,预处理部分是安全的。这个过程被称为“可信设置”,因为它相信在预处理阶段至少有一个参与者是诚实的。要求一个可信的设置被认为是一个弱点。在这个意义上,STARK和新的SNARK系统,如Halo2,具有优势。然而,一些项目将可信设置作为吸引社区的工具,Aztec?和Manta?就是这种情况。
动态 | 区块链初创公司推出允许用户利用手机休眠时间开采门罗币并捐赠的软件:据bitcoinist消息,区块链初创公司Honeycomb推出一款软件,可以让用户的手机在处于休眠状态并在夜间充电时开采门罗币,然后用户可通过Honeycomb向新闻出版商捐赠收益。此举可为独立的媒体和优秀的新闻报道提供支持,并且能够鼓励更多的新闻应用不需安放广告或者收集用户信息来定制其阅读内容。[2018/10/7]
可编程性部分讨论了证明系统是否可以证明任意的计算。SNARK通常对任何计算都是可编程的。然而,证明效率取决于正在进行的计算的类型。某些类型的STARK系统则不是这样,它们更难适应不同类型的计算。
用于不同ZKP相关项目的证明系统
如何利用ZKP为你的产品服务
从哪里开始建立一个受益于这种创新技术的产品,这样的心理模型实际上很难建立。本节试图为开发者提供一个框架,以选择将ZKP整合到其产品中的最佳方法。基于产品需求、生态系统的一致性和性能要求,开发人员将有几种工具可供选择。一些开发人员将能够重新使用他们现有的代码,而另一些人将不得不学习新的特定领域语言来创建他们的应用程序。
以性能为重点的zk应用
开发者可以使用ZKP来实现更高的吞吐量,或者通过在链外进行大部分应用计算,只在链上发布证明来降低费用。在这种情况下,有多种框架可供选择。这些框架中的每一个都提供了一个流程,将一个用高级语言编写的应用程序编译成适合于证明生成的等效表示,即zk电路。它们提供了一套工具来编译应用程序代码,生成zk电路,实现zk验证器,并为目标生态系统生成验证器代码。我们可以把这些框架分为两个主要的篮子:以EVM为重点的和非EVM.
以EVM为重点的zk框架
这组zk框架通过在以太坊之上构建rollup,与以太坊保持一致。交易和应用程序在rollup的zk虚拟机上执行。证明由专门的验证器生成,并发布到L1,由智能合约进行验证。
该组的第一个子集实现了与EVM兼容的zkVM,因此称为zkEVM.这些目标是通过允许Ethereum开发者使用solidity和熟悉的工具,如Hardhat?和Foundry?而不做改变,从而最大限度地减少摩擦。他们通过创建一个对EVM开箱即用的电路和验证器来抽象出zk的复杂性。这个篮包括PolygonzkEVM?和Scroll.
动态 | 美国大型托管银行State Street正寻求利用区块链简化证券借贷业务:据Coindesk消息,美国美国大型托管银行State Street(道富银行)正寻求利用区块链简化证券借贷业务。具体方式是使用分布式总账技术(DLT),简化借贷流程和减少人员参加。[2018/8/8]
这组的第二个子集是不与EVM本身兼容的zkVM.尽管不兼容,该组通过创建中间层来减少摩擦,使开发者能够使用Solidity.Vitalik称这组为4型zkEVM.zkSyncEra?和Starknet?是这组的好例子。使用4型zkEVM的好处是,它可以提供比EVM兼容型更高的吞吐量和更低的费用。这使得它们适合建立高吞吐量的应用,如链上游戏,或高性能的金融产品,如订单簿DEX.
为4型zkEVM构建应用程序需要更多的开发者努力,因为可以使用的Solidity代码是有限的。另外,开发者可以决定学习一种不同的语言,例如Cairo,来为这些框架开发本地应用程序。
来源:?zkNode、Scroll、zksync-solc、zkSyncSDKs、Protostar、StarknetHardhat插件、Warp
非EVM的zk框架
另一种类型的框架是那些不针对EVM架构的框架,因为它们针对的是竞争性的L1或通用计算。尽管如此,它们仍然可以通过专门的SDK,如Sovereign,用于在以太坊上构建特定应用的zkRU.
这里有两种方法
1.?开发人员用高级语言编写代码,以特定的虚拟机架构为目标,然后将其编译为zk电路。
2.?开发人员使用特定领域语言编写代码,例如Circom,直接生成zk电路。
前一种方法对开发者更友好,但往往导致更大的电路,需要更长的证明时间。
来源:Risc0、zkWasm、Circom、Snarkjs、MinazkAppCLI、zkLLVM
以隐私为重点的zk应用
中共镇平县委书记李显庆:利用区块链分布式电商平台,盘活农村资源:5月24日,中共镇平县委书记李显庆发表文章《坚持问题导向促进县域转型发展》。文中指出,在脱贫攻坚工作中,要积极探索消费扶贫新模式,成立社会化扶贫企业。利用区块链分布式电商平台,统一收集、销售贫困户农产品,并通过分析电商平台信息,得出消费者消费习惯、农产品销售情况,引导贫困户调整产业项目和种植养殖结构,盘活农村资源,链接城市消费。[2018/5/24]
使用ZKP开发以隐私为重点的应用程序,对开发者来说往往是一项更苛刻的任务。与注重扩展性的解决方案相比,使用ZKP开发注重隐私的解决方案的工作较少,使得学习曲线更加陡峭。现有的隐私应用主要集中在支付隐私上,不允许有太多的可编程性。要把隐私和可编程性结合起来是一项具有挑战性的任务。注重隐私的应用主要遵循两种实施方案中的一种。
1.建立在通用的L1之上
为了在L1上启用私人支付应用程序,需要将ZKP逻辑构建为一个智能合约。应用程序通常使用ZKP来创建私人资金池。用户使用这些私人资金池作为混合器,为新的钱包提供资金,而这些钱包与他们原来的钱包没有联系。这里著名的例子是TornadoCash.对于这些应用,证明是由用户进行的,而验证是在链上进行的。因此,使用具有快速证明、简单验证计算、并且在生成的证明中不泄露任何用户信息的ZKP系统是至关重要的。
由于通用链没有为昂贵的加密计算进行优化,对于主流用户来说,验证成本往往很高,限制了这些应用的采用。将私人交易应用转移到rollup中以减少gas成本的直观解决方案可能具有挑战性。在这种情况下,私人交易证明需要包括在rollup证明中,即证明递归,这在以太坊的通用zkrollup中目前是不可能的。
2.建立一个新的以隐私为重点的L1/L2
为了使私人交易和应用的成本降低,开发者被迫要么建立一个新的隐私强制L1,如MantaNetwork?和Penumbra,要么建立一个专门的rollup,如Aztec.大多数以隐私为重点的链还不能支持通用计算,而是专注于专门的用例。例如,Penumbra和Renegade?专注于私人交易。Aleo?正在建立一个私人应用的框架,通过创建专用语言Leo,将用高级语言编写的程序与相应的zk电路兼容。应用程序的互动是在链外进行的,只有证明作为私人交易发布在链上。Aztec正朝着类似的方向发展,但是是作为EthereumL2.他们最近宣布,他们专注于创建一个通用的私有化rollup,使用Noir?作为默认的智能合约语言。
zk加速
在开发者为其应用程序选择合适的zk开发框架并选择底层证明系统后,接下来的步骤是优化应用程序的性能,并找到改善用户体验的方法。这往往可以归结为改善验证人的性能和延迟。如前所述,对于rollup,减少证明者的时间意味着缩短向L1提交证明的延迟,从而缩短撤回延迟。对于用户生成的证明,即隐私应用,更快的证明意味着更短的交易生成时间和更好的用户体验。
正如我们在之前的文章中所讨论的,加速证明过程往往需要软件优化和专用硬件。在过去的几个月里,随着多家公司的加入,专用硬件的竞争已经白热化。在这一节中,我们将讨论目前zk加速的情况以及开发者如何从这场竞争中获益。
证明作为一种服务
到目前为止,执行zk证明工作的标准模式是使用具有多核CPU和/或GPU的强大服务器,并利用优化的开源库,例如Filecoin的Bellperson,以提高证明性能。这种模式给需要维护证明基础设施的开发者增加了操作的复杂性。解决这种复杂性并允许更好的专业化的更好的模式是证明即服务模式。在这种模式下,需要为某个zk电路或某个用例生成证明的实体连接到一个运行专有软件的供应商,以进行证明计算。一些公司可以专门为特定用例生成证明。?例如,Axiom?已经建立了一个系统,为以太坊的历史数据生成Halo2证明。其他玩家可以专注于特定的ZKP后端,例如Plonk或Halo2,并建立专有的优化,从而使证明的计算更快、更有效。=nilFoundation通过建立一个ZKP计算的市场,将这一概念向前推进了一步。在这个证明市场中,证明买家提交出价以生成ZKP,由证明生成者进行匹配和履行。Mina有一个类似的概念,叫做Snarketplace,但它只限于Mina网络所需的SNARK证明。
硬件加速
随着几个依赖于高效生成zk证明的L1和rollup的推出,生成这些证明并获得相关奖励的竞争将升温。如果这些链和L2成功地吸引了大量的用户群,那么证明生成就会发展成类似于比特币挖矿竞争的军备竞赛。有不同的ZKP加速方法,即GPU和FPGA和ASIC.AmberGroup的这篇文章很好地讨论了这些不同的选择以及每种实施方案所面临的挑战。然而,从长远来看,生产证明生成的最有效的AISC的公司将在以ZK为重点的产业链上具有显著的经济优势。
值得注意的是,zk证明竞争和比特币挖矿之间有一个重大区别,值得强调。在比特币中,采矿过程是基于一个简单的计算,即SHA256散列。这种计算是固定的,不可能改变,这使竞争的焦点围绕着芯片设计创新和获得最先进的半导体节点。在ZKP领域,不同的证明协议之间存在着明显的分割。即使是相同的证明后端,例如Plonk,目标电路大小也会导致ASIC性能的差异。比特币挖矿和ZKP生成之间的这种区别可能会导致出现多个赢家各自专攻不同的ZK后端的情况。
有多个玩家进入zk专用芯片领域。每个玩家都专注于改进证明生成的两个主要操作之一:多标度乘法和数论转换。最后一个走出隐身状态的公司是Cysic,它在ETH丹佛会议期间宣布了其600万美元的种子轮。Cysic专注于通过使用FPGA来加速MSM.FPGA的灵活性可以使其支持不同的ZK系统。这种方法与Ulventanna相似,后者在1月份宣布了1500万美元的种子轮融资。zk芯片开发领域的其他参与者包括Ingonyama,它发布了一个名为Icicle?的库,可以加速MSM和NTT在GPU上的计算,还有Accseal、Snarkify?和Supranational.除了这个名单之外,还有其他隐形公司和Web3领域的知名人士的研究工作。后者的例子包括JumpCrypto的CycloneMSM?实施,使用FPGA加速MSM计算,以及JaneStreet的FPGA实施,加速MSM和NTT.
由于ZKP加速的重要性不断增加,并且需要对不同的实现方式进行公平的评估,ZPrize?等竞赛正在成为推动该领域发展的重要场所。2022年的比赛有超过400万美元的奖金。
可用的教育资源
在本节中,我们结合了一份教育资源的清单,帮助建设者们了解ZKP领域。这绝不是一个详尽的清单,因为有很多关于主题的优秀内容。zk资源的综合清单可以在这里和这里找到。这是为建立一个友好的方式让开发者了解这个空间所做的努力。
对于那些有兴趣了解ZKP的基础知识和它们如何工作的人来说,首先要检查的资源之一是来自zkHack的zk白板会议。特别是DanBoneh的三个介绍性课程,对于有一些基本数学知识的人来说是足够高层次的。该系列的其余部分涉及空间的特定主题。
对于那些想直接使用zk工具的开发者来说,这本优秀的初学者指南很有用。之后,Poseidon实验室创建了一个Appliedzkworkshop,指导开发者使用Circom和Hardhat构建一个zk应用程序。其他针对其他zk语言和框架的研讨会包括这个使用Noir的研讨会和这个使用RiscZero的研讨会。
结论
作为ZKP潜力的信徒,Alliance努力帮助更多的建设者进入这一领域,并为他们提供资金和指导。在Web3中,ZKP已经在解决阻碍主流采用的可扩展性和隐私性的痛点。在Web2中,ZKP可以将信任最小化的精神带到广泛的业务范围,包括SaaS、保险和信用评分。本文旨在帮助建设者将ZKP整合到其产品中。文章通过规划ZKP集成的不同阶段,带领建设者们走过了不同的阶段,涵盖了实施方案,以及部署后的性能改进。
我们鼓励建设者进一步与我们联系,并一起讨论ZKP空间中的创业想法。
作者要感谢ShumoChu、AnishMohammed、O(1)Labs?的成员对本文进行了富有成效的讨论和反馈。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。