Alliance Dao:如何通过 ZKP 构建 Web3 产品?
撰写:Mohamed Fouda、Qiao Wang,Alliance Dao
编译:深潮 TechFlow
零知识证明(ZKP)正在成为未来十年根本性变革的技术。ZKP 在 Web3 内外都有着应用。
在 Web3 中,ZKP 正在解决两个主要瓶颈——可扩展性和隐私:
在可扩展性方面,几个 ZK Rollups,又名 Validity Rollups,正在推出以将以太坊扩展 10-100 倍,同时通过降低交易成本来改善用户体验。
在隐私方面,ZKP 正从私密交易和交易混合时代扩展到更复杂和有用的领域,例如私密链上交易、身份和经过验证的凭据。
关于 ZKP 有很多内容,包括我们自己对 ZKP 空间未来发展的愿景以及为实现这一未来所需的创业公司。然而,建设者如何从 ZKP 中受益以及从哪里开始仍存在一定的教育差距。
本文旨在通过汇集重要资源来填补这一差距,指导开发人员了解 ZKP 在实践中的工作原理以及如何在其应用中使用 ZKP。
ZKP 实际上是通过证明者向验证者证明他们知道特定信息而不泄露该信息的一种技术。
在实践中,至少在 Web3 中,ZKP 的使用方式通常不同。大多数应用程序不使用 ZKP 来显示专有数据的所有权。相反,ZKP 被用于通过可验证性提高信任。我们预计 ZKP 将成为未来实体之间标准的信任模型。原因是 ZKP 的两个主要组成部分——证明和验证——正在以一种使信任寻求实体与其用户之间具有独特互动方案的方式被分离。
ZKP 的主要组成部分是证明生成和证明验证。
证明生成涉及运行大量计算以生成执行过程的证明,这个证明用于消除对证明者的信任需求。
相反,任何人都可以在证明上运行一个简单的过程来验证证明者运行过程的完整性。
这种心理模型允许企业运行一个流程(通常是一个复杂的流程),并允许客户信任所述流程的执行而不需要重复执行该流程。
让我们举个例子:
假设你订阅了 OpenAI 的付费计划,使用他们的大型语言模型(LLMs)之一,例如 chatGPT。您必须相信 OpenAI 确实运行了您请求的特定模型,而不是用更简单、效率更低的模型替换它。如果 OpenAI 可以向您发送少量数据,证明它确实运行了您请求的特定模型呢?此外,想象一下,假如每个专有 SaaS 产品都能为其消费者提供这样的保证,会发生什么?
这种信任最小化是 ZKP 的承诺。例如,在 Web 2 中,ZKP 可以通过确保所有客户使用相同的算法来保证公平的信用评估或公平的保险索赔处理。ZK 技术还没有到达那个水平,因为运行 ZKP 过程仍然相对昂贵。然而,我们看到像 Modulus Labs 这样的公司正在构建一种使用 ZKP 证明 AI 推断的技术。
在技术层面上,一个高效的 ZKP 系统需要同时实现以下目标:
降低证明系统的计算复杂度和延迟,即让证明者可以高效生成证明并在最短时间内将其传递给验证者。
实现小型证明大小。
实现高效验证,即最小化验证成本。
除了这些主要目标外,根据用例可能需要一些次要目标,例如:
在隐私焦点应用程序中保护数据的隐私,这意味着证明系统可以处理未在生成的证明中泄露的私有输入。
尽可能避免信任设置以简化安全假设。
实现证明递归以进一步减少验证成本,即单个验证可以验证多个证明,并在不同证明之间分摊成本。
同时实现所有这些目标是具有挑战性的。根据用例,ZKP 系统会优先考虑其中一些目标。例如,SNARK 证明系统可以产生简洁的证明,但证明复杂度会增加。另一方面,STRAK 具有高效的证明者,但证明大小可能比 SNARK 大 100 倍。zk 的研究人员不断努力推动技术前沿,通过发明新的证明机制同时提高三个指标。
对于构建与 ZKP 相关产品的开发人员来说,要考虑的一个重要问题是如何选择底层证明系统,有几个 ZKP 证明实现,还有更多处于研发阶段。
ZKP 后端选择不仅取决于技术方面,而且还取决于目标产品。以为 Rollup 选择证明系统为例。Rollup 的关键特征,例如提款时间、交易成本,甚至去中心化程度,将主要由 ZKP 证明架构决定,如下表所示。
Alliance Dao:如何通过 ZKP 构建 Web3 产品?
在 Rollup 中,证明发生在业务方面,即通过 Rollup 运营商。现有的 ZK Rollups(zkRUs),例如 Starknet 和 Zksync 当前使用集中的证明者。因此,他们可以将证明委托给专门的证明者,即证明作为服务公司,以提高证明者性能。通过专业化和利用优化的软件/硬件,对于与以太坊兼容的 zkEVMs,证明时间可以缩短到几分钟。例如,Polygon zkEVM 的证明时间目前约为 2 分钟。几分钟的证明时间,即提款延迟,对于 Rollup 来说是可接受的。
另一方面,一些用例需要证明发生在用户端,生成私人交易,如 Tornado Cash 交易。为了确保合理的用户体验,证明时间不能超过几秒钟。此外,由于用户在使用钱包或在资源受限的设备上在浏览器中执行这些计算,所以选择具有快速证明者的证明系统非常重要。一个很好的例子是 Zcash 在 2018 年 Sapling 升级中将其证明系统更改为 Groth16,这是提高屏蔽交易速度的一个主要因素。
通常,很难获得不同证明系统性能的准确比较,特别是对于证明和验证速度,因为它们取决于库实现、选择的加密曲线和使用的硬件。
Mina 团队在这篇文章中提供了一个很好的高级比较。还有一些用于不同的 ZK 系统的努力创建基准测试工具。
这个表格提供了 SNARK 实现的良好比较,并介绍了它们在速度方面从 Groth16 到 Plonk 再到 Halo 的进展情况。尽管有所进展,STARK 仍然在证明速度方面胜出,但代价是更大的证明大小。该表还讨论了证明系统的两个重要特征:设置无信任性和电路可编程性。
设置无信任性部分讨论了电路创建的预处理阶段。一些证明技术需要通过多方计算参与,在预处理阶段生成秘密随机数。如果单个参与者是诚实的,则生成的随机数确实是秘密的,预处理部分是安全的。这个过程称为“信任设置”,因为它信任至少一个预处理阶段的参与者是诚实的。需要信任设置被认为是一种弱点。在这个意义上,STARK 和新的 SNARK 系统(如 Halo 2)具有优势。然而,一些项目将信任设置作为吸引社区参与的工具,例如 Aztec 和 Manta。
可编程性部分讨论了证明系统是否可以证明任意计算。SNARK 通常可以对任何计算进行编程。然而,证明效率取决于所执行的计算类型。对于某些类型的 STARK 系统来说,这并不是适应不同类型计算的容易的情况。
Alliance Dao:如何通过 ZKP 构建 Web3 产品?
建立一个能够从 ZKP 技术中受益的产品并非易事,需要建立正确的心理模型。
本节尝试为开发人员提供一个框架,以选择最佳方法来将 ZKP 集成到其产品中。根据产品需求、生态系统对齐和性能要求,将有几个工具可供开发人员选择。一些开发人员将能够重复使用其现有的代码,而另一些则必须学习新的领域特定语言(DSL)来创建其应用程序。
开发人员可以使用 ZKP 通过将大部分应用程序计算脱离链外,并仅在链上发布证明来实现更高的吞吐量(TPS)或更低的费用。在这种情况下,有多个框架可供选择。每个框架提供了一组工具,用于编译应用程序代码,生成 ZK 电路,实现 ZK 证明者,并为目标生态系统生成验证器代码。我们可以将这些框架分为两个主要类别:以 EVM 为中心和非 EVM。
这组 ZK 框架与以太坊保持一致,作为 Rollup 建立在其之上。交易和应用程序在 Rollup 的 ZK 虚拟机(zkVM)上执行。证明由专门的证明者生成,并发布到 L1,由智能合约验证。
该组的第一个子集实现了与 EVM 兼容的 zkVM,因此称为 zkEVM。这些的目标是通过允许以太坊开发人员使用 Solidity 和熟悉的工具(如 Hardhat 和 Foundry)而将摩擦最小化。它们通过创建适用于 EVM 的电路和证明器来抽象 ZK 复杂性。Polygon zkEVM 和 Scroll 都包括在此桶中。
该组的第二个子集是不本地兼容 EVM 的 zkVM。尽管不兼容,此组通过创建中间层来允许开发人员使用 Solidity,从而减少了摩擦。Vitalik 称这个类型为 type-4 zkEVM。zkSync Era 和 Starknet 是这个组的好例子。使用 Type-4 zkEVM 的优点是可以提供比兼容 EVM 类型更高的吞吐量和更低的费用。这使得它们适用于构建高吞吐量的应用程序,例如链上游戏或高性能金融产品,例如订单簿 DEXs。
为 type-4 zkEVM 构建应用程序需要更多的开发人员努力,因为有关于可以使用的 Solidity 代码的限制。或者,开发人员可以决定学习另一种语言,例如 Cairo,以针对这些框架开发原生应用程序。
Alliance Dao:如何通过 ZKP 构建 Web3 产品?
另一种框架类型是那些不针对 EVM 架构的框架,因为它们针对竞争的 L1 或通用计算。尽管如此,它们仍然可以通过专门的 SDK(如 Sovereign)用于在以太坊上构建应用程序特定的 zkRUs。
这里有两种方法:
开发人员使用高级语言编写代码,该代码针对特定的 VM 架构,稍后编译为 ZK 电路。
开发人员使用领域特定语言(DSL),例如 Circom,直接生成 ZK 电路。
前一种方法更适合开发人员,但通常会导致更大的电路,需要更长的证明时间。
Alliance Dao:如何通过 ZKP 构建 Web3 产品?
使用 ZKP 开发隐私重点的应用程序通常对开发人员来说是一项更具挑战性的任务。与可伸缩性重点的解决方案相比,使用 ZKP 开发隐私重点的解决方案的工作较少,使得学习曲线更加陡峭。现有的隐私应用主要关注支付隐私,并且不允许太多的可编程性。将隐私和可编程性结合起来是一项具有挑战性的任务。隐私重点的应用程序遵循以下两个实现选项之一:
1.在通用 L1 之上构建
要在 L1 上启用隐私支付应用程序,ZKP 逻辑需要被构建为智能合约。该应用程序常常使用 ZKP 来创建私有资本池。用户使用这些私人池作为混合器,为未与其原始钱包相关联的新钱包提供资金。其中著名的例子是 Tornado Cash。对于这些应用程序,证明由用户执行,验证发生在链上。因此,使用具有快速证明、简单验证计算以及不泄露任何用户信息的 ZKP 系统至关重要。
由于通用链并未针对昂贵的加密计算进行优化,验证成本通常对主流用户来说很昂贵,限制了这些应用程序的采用。将私人事务应用程序移动到 Rollup 以减少燃气费用的直觉解决方案可能会带来挑战。在这种情况下,私人交易证明需要包含在 Rollup 证明中,即证明递归,而目前 Ethereum 上的通用 zk Rollup 无法实现证明递归。
2.构建重点隐私的新 L1/L2
为了为私人交易和应用程序降低成本,开发人员不得不构建一个新的以隐私为核心的 L1(例如 Manta Network 和 Penumbra)或专门的 Rollup(例如 Aztec)。大多数隐私重点链仍无法支持通用计算,并专注于专业用途。例如,Penumbra 和 Renegade 专注于私密交易。Aleo 正在通过创建专用语言 Leo 来编译用高级语言编写的程序以生成对应的 ZK 电路,从而构建用于私有应用程序的框架。应用程序的交互是在链外完成的,仅将证明作为私有交易发布到链上。Aztec 正在朝着类似的方向发展,但作为 Ethereum L2。他们最近宣布将重点放在创建使用 Noir 作为默认智能合约语言的广义私人 Rollup 上。
在开发人员选择了适合其应用程序的正确 ZK 开发框架并选择了底层证明系统之后,下一步是优化应用程序的性能,寻找改善用户体验的方法。这通常归结为提高证明者的性能和延迟。正如前面讨论的那样,对于 Rollup,缩短证明时间意味着将证明提交到 L1 的延迟较短,因此取款延迟也较短。对于用户生成的证明,即隐私应用程序,更快的证明意味着更短的交易生成时间和更好的用户体验。
正如我们在之前的文章中讨论过的那样,加速证明过程通常需要软件优化和专用硬件。在过去的几个月中,专用硬件竞争加剧,有多家公司进入了这场竞赛。在本节中,我们将讨论 ZK 加速的当前情况以及开发人员可以从这种竞争中获益的方式。
**证明即服务 **
到目前为止,执行 ZK 证明工作的标准模型是使用具有多核 CPU 和/或 GPU 的强大服务器,并利用经过优化的开源库(例如 Filecoin 的 Bellperson)来提高证明性能。这种模型增加了开发人员需要维护证明基础设施的运营复杂性。解决这种复杂性并允许更好的专业化的更好模型是证明即服务模型。在这个模型中,需要为某个 ZK 电路或某个用例生成证明的实体连接到运行专有软件执行证明计算的提供者。一些公司可以专门为特定用例生成证明。例如,Axiom 构建了一个系统,用于在以太坊上生成 Halo 2 证明的历史数据。其他参与者可以专注于特定的 ZKP 后端,例如 Plonk 或 Halo 2,并构建专有的优化,以实现更快速和更高效的证明计算。 =nil Foundation 正在进一步推广这个概念,通过构建一个 ZKP 计算市场。在这个 Proof Market 中,证明买家提交要生成的 ZKP 的出价,由证明生成器进行匹配和履行。Mina 也有类似的概念,称为 Snarketplace,但仅限于 Mina 网络所需的 SNARK 证明。
硬件加速
随着需要高效生成 zk 证明的几个 L1 和 Rollup 的推出,生成这些证明并赚取相应奖励的竞争将变得日益激烈。如果这些链和 L2 成功吸引了大量用户,证明生成可能会发展成为类似于比特币挖矿竞争的一种军备竞赛。有不同的 ZKP 加速方法,即 GPU vs FPGA vs ASIC。这篇来自 Amber Group 的文章对这些不同选择和面临的每种实现选项的挑战进行了很好的讨论。然而,从长远来看,为证明生成生产最有效的 ASIC 的公司将在以 zk 为重点的链上拥有显著的经济优势。
值得注意的是,在 ZK 证明竞争和比特币挖矿之间存在一个重要区别值得强调。在比特币中,挖掘过程基于简单计算,即 SHA256 哈希。这个计算是固定的,不容易改变,因此重点放在芯片设计创新和进入最先进的半导体节点的机会上。在 ZKP 领域,不同证明协议之间存在显着的分裂。即使使用相同的证明后端,例如 Plonk,目标电路大小也可能导致 ASIC 性能的差异。这种比特币挖矿和 ZKP 生成之间的区别可能导致多个获胜者,每个专业化于不同的 ZK 后端。
有多个参与者进入 ZK 特定芯片领域。每个参与者专注于提高证明生成的两个主要操作之一:多标量乘法(MSMs)和数论变换(NTT)。最后一个走出隐秘状态的参与者是 Cysic,在 ETH Denver 期间宣布了其 600 万美元的种子轮融资。Cysic 专注于通过使用 FPGA 加速 MSMs。FPGA 的灵活性可以使它们支持不同的 ZK 系统。这种方法类似于 Ulventanna,该公司在 1 月份宣布了 1500 万美元的种子轮融资。ZK 芯片开发空间中的其他参与者包括 Ingonyama,发布了一个名为 Icicle 的库,可在 GPU 上加速 MSM 和 NTT 计算的计算,以及 Accseal、Snarkify 和 Supranational。除了这个列表,Web3 空间中的知名参与者还有其他隐秘公司和研究努力。后者的例子包括 Jump Crypto 的 CycloneMSM 实现,用于使用 FPGA 加速 MSM 计算,以及 Jane Street 的 FPGA 实现,用于加速 MSM 和 NTT。
由于 ZKP 加速的重要性越来越高,需要公平评估不同实现的竞赛(例如 ZPrize)正在成为推动该领域前进的重要场所。2022 年的比赛奖金超过 400 万美元。
随着需要高效生成 ZK 证明的几个 L1 和 Rollup 的推出,生成这些证明并赚取相应奖励的竞争将变得日益激烈。如果这些链和 L2 成功吸引了大量用户,证明生成可能会发展成为类似于比特币挖矿竞争的一种军备竞赛。有不同的 ZKP 加速方法,即 GPU vs FPGA vs ASIC。这篇来自 Amber Group 的文章对这些不同选择和面临的每种实现选项的挑战进行了很好的讨论。然而,从长远来看,为证明生成生产最有效的 ASIC 的公司将在以 ZK 为重点的链上拥有显著的经济优势。
值得注意的是,在 ZK 证明竞争和比特币挖矿之间存在一个重要区别值得强调。在比特币中,挖掘过程基于简单计算,即 SHA256 哈希。这个计算是固定的,不容易改变,因此重点放在芯片设计创新和进入最先进的半导体节点的机会上。在 ZKP 领域,不同证明协议之间存在显着的分裂。即使使用相同的证明后端,例如 Plonk,目标电路大小也可能导致 ASIC 性能的差异。这种比特币挖矿和 ZKP 生成之间的区别可能导致多个获胜者,每个专业化于不同的 ZK 后端。
有多个参与者进入 ZK 特定芯片领域。每个参与者专注于提高证明生成的两个主要操作之一:多标量乘法(MSMs)和数论变换(NTT)。最后一个走出隐秘状态的参与者是 Cysic,在 ETH Denver 期间宣布了其 600 万美元的种子轮融资。Cysic 专注于通过使用 FPGA 加速 MSMs。FPGA 的灵活性可以使它们支持不同的 ZK 系统。这种方法类似于 Ulventanna,该公司在 1 月份宣布了 1500 万美元的种子轮融资。ZK 芯片开发空间中的其他参与者包括 Ingonyama,发布了一个名为 Icicle 的库,可在 GPU 上加速 MSM 和 NTT 计算的计算,以及 Accseal、Snarkify 和 Supranational。除了这个列表,Web3 空间中的知名参与者还有其他隐秘公司和研究努力。后者的例子包括 Jump Crypto 的 CycloneMSM 实现,用于使用 FPGA 加速 MSM 计算,以及 Jane Street 的 FPGA 实现,用于加速 MSM 和 NTT。
由于 ZKP 加速的重要性越来越高,需要公平评估不同实现的竞赛(例如 ZPrize)正在成为推动该领域前进的重要场所。2022 年的比赛奖金超过 400 万美元。
在本节中,我们汇总了一些教育资源,帮助开发人员了解 ZKP 空间。这绝不是一个详尽的列表,因为这个主题上有很多优秀的内容。可以在这里和这里找到包含所有 zk 资源的综合列表。这是建立一个友好的方式,让开发人员了解这个领域的努力。
对于那些有兴趣了解 ZKP 基础知识及其工作原理的人,第一个要检查的资源之一是 ZK Hack 的 ZK Whiteboard Sessions。特别是 Dan Boneh 的三个入门会议对于具有一定数学理解的任何人来说都是高层次的。系列的其余部分涉及该领域的特定主题。
对于想直接使用 ZK 工具的开发人员,这个优秀的初学者指南非常实用。此后,Poseidon Labs 创建了一个应用 ZK 研讨会,引导开发人员使用 Circom 和 Hardhat 构建 ZK 应用程序。针对其他 ZK 语言和框架的其他研讨会包括使用 Noir 进行的这个研讨会和使用 Risc Zero 进行的这个研讨会。
作为对 ZKP 潜力的信仰者,Alliance 努力帮助更多的构建者进入这个领域,并为他们提供资金和指导支持。在 Web3 中,ZKP 已经解决了妨碍主流采用的可扩展性和隐私痛点。在 Web 2 中,ZKP 可以将最小化信任的精神带到包括 SaaS、保险和信用评分在内的广泛业务范围内。本文旨在帮助构建者将 ZKP 集成到他们的产品中。本文引导构建者通过不同的规划 ZKP 集成阶段,涵盖实现选项以及部署后的性能改进。
深潮 TechFlow 是由社区驱动的深度内容平台,致力于提供有价值的信息,有态度的思考。
社区:
订阅频道:https://t.me/TechFlowDaily
推特:@TechFlowPost
进微信群添加助手微信:blocktheworld