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