2024-09-12
Web3 时代的 ZKP,如何迈向主流?
原文标题:《ZKPs in Web3: Now and the Future》
撰文:Mohamed Fouda、Qiao Wang
编译:Frank,Foresight News
零知识技术(ZK)是一种推动技术,不仅将改变 Web3,还将改变其他行业。
作为一种足够通用的技术,ZK 可以拥有多种用例,而我们正处于弄清楚该技术可以实现的所有用例的早期阶段。一些明显的 ZK 用例已经找到了真正的应用,例如实现交易隐私和数据压缩(即 Rollup),然而要让 ZK 被主流采用,仍然需要发掘进一步的潜在用例和技术进步。
本文我们将首先回顾 ZKP 的不同应用,然后将讨论什么可以实现这项技术的下一阶段,以及一些可以从这项技术中受益的创业想法。
ZKP 的应用地图
自发明以来,零知识证明(ZKP)已在加密行业站稳脚跟。
ZKP 确实存在一些魔力,使这项技术非常令人兴奋——它允许实体向世界其他地方证明自己知道一条信息或已经正确完成了一项任务,但却无需透露该信息或显示该任务的详细执行信息。
ZK 的数学魔力允许我们通过检查生成的 ZKP 来信任该知识或任务已执行完毕,出于这个原因,ZKP 的第一个也是最一致的用例就是以隐私为中心的加密网络,ZKP 还被用于提供以太坊 L1 上关于 L2 交易的有效性证明,以引入 ZK Rollup 的概念,此外 ZKP 在不同的项目中也被广泛应用于其他小众应用程序。
注重隐私的支付和协议
ZKP 自然而然地实现了隐私特性,特别是在去中心化网络中,人们缺乏可以充当真相来源的中心化权威——ZKP 允许 Web3 用户(证明者)向网络验证者证明他们的交易是有效的,即他们有足够的余额可以花费,而无需透露交易细节,例如交易金额、发送者或接收方地址。
ZKP 最初是为了支持 Zcash 网络中的隐蔽支付(即私有支付)而开发的,随后扩展到了其他网络,包括:
- 注重隐私的 L1:Zcash、Horizon、Aleo 和 Iron Fish;
- 一般链上的隐私智能合约:Tornado Cash;
- 注重隐私的 L2:Aztec;
ZK Rollups 的验证
ZKP 的另一个主要用例是在底层 L1 上生成 Rollup 有效性证明,通用 Rollup 通过不利用 ZKP 的隐私功能来优化吞吐量,即证明更多的交易(TX),在这种权衡中,ZKP 仅用来证明 L2 交易执行的正确性。
由于一些通用函数不能被有效地证明,因此生成 ZKP 来证明任意智能合约的正确执行是很困难的,解决这个问题需要实现专门的虚拟机(VM),这些 VM 可以使用底层 ZK 电路有效地进行验证。由于这种复杂性,ZK Rollup 最初只支持支付或单个应用程序,例如可以很容易地生成 ZKP 的 DEX。
这里的例子包括 zkSync 1.0 和 Loopring,之后通用的 zkEVM 实现开始出现在市场上,包括 Starknet、zkSync 2.0、Polygon zkEVM 和 Scroll。目前所有 ZK Rollup 都在以太坊上,但其实也可以在包括比特币在内的其他链上实现 ZK Rollup。
然而,比特币 Rollup 的实施将需要更改比特币操作码并进行链的硬分叉,这通常不受比特币社区的欢迎。
其他 ZKP 应用
除了注重隐私的应用程序和 Rollup 之外,ZKP 还在其他区块链协议中进行更广泛方面的应用。
Mina
Mina 使用 ZKP 将区块链状态压缩成很小的规模(约 22 KB),为了实现这一点,Mina 使用递归 ZKP,即其他 ZKP 的 ZKP。
当在 Mina 网络中生成一个区块时,zk-SNARKs 被用来生成该区块的证明,以确保其有效性;当新的区块引用以前的区块时,新区块的 ZKP 会验证所有以前的区块,同时保持恒定的大小。
Filecoin
Filecoin 使用 ZKP 来确保存储提供商正确存储他们声称要存储的数据,此过程称为复制证明 (PoReb)。
在此过程中,存储提供程序生成 ZKP 以证明它们正在存储数据的唯一副本,即非由其他存储提供程序维护的副本。ZKP 为希望实现一定冗余和可用性水平的 Filecoin 用户提供了保证,此外由于证明的大小比存储的数据小得多,因此使用 ZKP 可以降低存储提供程序的带宽要求。
Celo Plumo
Celo Plumo 使用 ZKP 来创建可在手机和其他资源有限的设备上使用的超轻量级网络客户端,尽管客户端具有轻量级性质,但它可以保证其访问状态的正确性。
Dark Forest
Dark Forest 是 ZKP 在游戏领域最受欢迎的应用。尽管 ZKP 的使用符合隐私用例,但 Dark Forest 在支付网络中的金融应用之外,将它用于创建一个不完全信息游戏的应用,所以这是一个与众不同的用例。
ZKP 的发展轨迹及其应用
2016 年之前,ZKP 作为一个研究课题,只在少数的学术圈子里讨论。当 Zcash 创始团队创建第一个 ZKP 变体(zk-SNARK)以支持 Zcash 网络中的屏蔽 / 私有交易时,一切开始改变。
有了真正的用例,大家对 ZKP 的兴趣就越来越大,这进一步导致了更好的 ZKP 变体,从而成为第一章节中讨论的许多项目的基础,然而该技术需要进一步的 ZKP 开发才能被主流采用。
为了了解如何进一步改进技术,我们可以向人工智能(AI)等类似技术学习,因为在许多方面 ZKP 技术类似于 AI 技术,所以预计它也将遵循类似的轨迹。
与 ZKP 一样,AI 最初是一项有前途的技术,可以解决许多问题。然而最初的 AI 算法在功能上受到限制,并且计算复杂性远远超过了可用硬件的能力,这使得 AI 应用进展缓慢且不切实际,从而主要被局限于研究实验室。
后续通过发明深度神经网络 (DNN) 等新架构和利用 GPU 提高执行速度,AI 持续实现逐步改进,最终导致了突破,例如 2012 年的 AlexNet 在最著名的计算机视觉竞赛 ImageNet 中以巨大的优势获胜。AlexNet 是 AI 时代的开始,它导致了当前令人兴奋的 AI 应用程序,如 GPT-3、Dall.E 2 和 Stable Diffusion。
今天的 ZKP 状态类似于早期的 AI 状态,这是一项有前途的技术,仍在积极开发中,并且因计算密集型特性而导致证明时间很长。从 AI 的进步轨迹中学习,我们可以确定 ZKP 技术起飞需要解决的瓶颈。
1. 算法 / 电路改进
就像 AI 从 LeNet-5 到 AlexNet,从 Resnet-50 到 Transformer 一样,ZKP 算法也将经历开发阶段以显著提高性能。我们已经看到这方面的进展,自 2011 年引入 zk-SNARKs 以来,行业已经开发了更先进的算法。
譬如 2018 年 Starkware 创始人开发的 STARK,这是一种不需要可信设置且证明生成时间更短的 ZKP 方法,这项技术是 Starkware 旗下 StarkNet 在内的几款产品的基础。
随着在 2019 年引入 PLONK,ZKP 继续取得进展——PLONK 是一种 SNARK 实现,允许许多应用程序使用单个受信任的设置,而无需重复设置。PLONK 刺激了多种 ZKP 实现的开发,被多个 Web3 协议(如 Aztec、Mina 和 Celo)使用。
2. 执行引擎优化
ZKP 的一个主要限制是计算复杂性导致较长的证明时间。例如最近宣布的 Polygon zkEVM,需要在 64 核服务器上运行大约 5 分钟才能生成 50 万 Gas 计算的证明。
缩短 ZKP 验证时间是将 ZKP 技术纳入主流的关键部分,与 AI 类似,优化软件执行引擎和使用专用硬件都是实现这一目标的必要条件。
优化的软件
许多 ZKP 生成操作都是大规模并行的,这意味着并行处理(例如 GPU)可以加速 ZKP 计算。专用的 GPU 库(如 CUDA)可用于加速 Nvidia GPU 上 ZKP 的计算,由于每个项目都使用不同的 ZKP 算法,因此有几个项目正在尝试在内部进行开发。
一个值得注意的例子是 Filecoin 对 Groth16 算法的实现,该算法使用 GPU 来加速证明过程;另一个例子是 Edgeswap 使用 GPU 将 PLONK 的验证时间缩短了 75%。
专用硬件
由于 GPU 对 ZKP 验证时间的改进通常是有限的,因此另一种选择就是使用专用硬件,例如 FPGA 或 ASIC。
在制造专用芯片(即 ASIC)的昂贵努力之前,FPGA 通常被认为是硬件原型设计平台。FPGA 或结合 GPU 和 FPGA 的混合解决方案,可以在中短期内加速 ZKP 应用于 Rollup 和注重隐私的网络。
然而如果 ZKP 技术发展到我们预期的水平,ASIC 最终将赢得这个市场。目前 ZKP 的硬件加速尚未得到充分解决,这可能是因为 ZKP 算法的多样性和碎片化,但是我们相信通过正确的商业模式,一些初创公司可以专注于开发和货币化这部分技术堆栈。
3. 软件抽象层
为了释放 ZKP 的潜力,需要构建多个抽象层和工具,这些抽象对于简化 ZKP 应用程序的开发过程是必要的——允许每组开发人员专注于他们最擅长的事情,例如应用程序开发人员不应该担心 ZK 电路的底层细节以及它们是如何工作的。
再次使用 AI 类比,通过创建多个抽象层,AI 可以取得巨大进步。使用这些抽象,AI 应用程序开发人员无需担心 NN 架构或硬件资源分配,因为 TensorFlow 和 PyTorch 等 框架抽象出了所有这些底层细节。
ZK 开发堆栈还没有像 AI 堆栈那么完善,但是仍有一些努力来构建这些抽象层:堆栈的底部存在低级 ZKP 库,如 PLONK 和 STARK ;在该层之上,诸如 Noir 之类的高级语言试图抽象出底层的 ZK 密码学,并帮助应用程序开发人员专注于应用程序逻辑;Circom 是另一种流行的 ZKP 语言,位于这两层之间,因为它既可用于创建复杂的 ZK 后端,也可用于开发基于 ZKP 的应用程序。
Web3 中 ZKP 抽象的另一个例子是 StarkWare 的 Cairo 语言,它允许开发人员实现在底层使用 STARK 证明的通用智能合约。为了提供进一步的抽象,Nethermind 的 Warp 工具允许 Solidity 开发人员将他们的 Solidity 代码直接转换为 Cairo。
譬如使用 Warp,可以将 Uniswap V3 代码转译为 Cairo,且只需对原始 Solidity 代码进行最少的更改。
ZKP 的创业机会
基于对 ZKP 可能发展路径的讨论,我们确定了一些与 ZKP 相关的创业想法,主要理念分为两类:工具和应用。
ZKP 工具
1.高级开发框架
与 AI 中的 Tensorflow 和 PyTorch 类似,高级 ZKP 开发框架对于在应用程序级别实现创新至关重要。这些框架需要:
- 将底层 ZKP 后端的复杂性抽象出来;
- 支持各种 ZKP 后端和硬件环境,例如 CPU 和 GPU;
- 允许高效的调试和测试;
- 提供包含示例和教程的丰富开发环境;
以太坊生态系统中最接近的例子是 Hardhat 和 Foundry,但它们不太可能很快支持 zkEVM 或 ZKP,相反,像 Cairo 这样的现有抽象工作,最终可能会发展到填补这个空间。
2. ZK Rollup SDK
ZK Rollup 越来越受欢迎,可以为游戏或高吞吐量 DeFi 协议启用特定于应用程序的 L2。在这种情况下,ZK Rollup 主要负责执行和结算,而共识和数据可用性将由 L1 处理。
但是启动特定于应用程序的 ZK Rollup 仍然非常复杂,我们相信提供对开发人员友好的 SDK 来启动自定义 ZK Rollup 的初创公司将解决真正的业务需求,并可以通过提供开发工具箱、开发人员服务、排序器服务和支持基础设施来成为价值业务。
3. ZKP 硬件加速器
以特定用例为目标并建立早期市场领先地位的专业硬件公司最终成为具有巨大价值的公司,人工智能就是如此——Nvidia 通过专注于人工智能硬件成为最有价值的北美半导体公司。
在比特币挖矿领域也是如此,当时比特大陆(Bitmain)、嘉楠科技(Canaan)和 Whatsminer 通过专注于 ASIC 矿机而成为独角兽,而设计和制造高效 ZKP 硬件加速器的公司也将遵循相同的轨迹。
ZKP Web3 应用程序
1.ZK 跨链桥和互操作性
ZKP 可用于为跨链消息传递协议创建有效性证明,其中跨链消息可以在目标链上快速验证,这类似于在底层 L1 上验证 ZK Rollup 的方式。但是对于跨链消息传递,复杂性更高,因为要验证的签名方案和加密函数在源链和目标链之间可能不同。
2. ZK 链上游戏引擎
Dark Forest 证明了 ZKP 可以使信息不完全的链上游戏成为可能,这对于设计更具互动性的游戏至关重要,在这些游戏中玩家的行为在决定公开之前是保密的。随着链上游戏的成熟,我们预计 ZKP 将成为游戏执行引擎的一部分,因此对于成功将隐私功能集成到高吞吐量链上游戏引擎中的初创公司来说,机会巨大。
3. 身份解决方案
ZKP 可以在身份领域创建新的机会,譬如用于创建声誉或连接 Web2 和 Web3 身份,目前我们的 Web2 和 Web3 身份是分开的,像 Clique 这样的项目通过使用预言机连接这些身份。
ZKP 可以通过启用 Web2 和 Web3 身份的匿名链接来进一步采用这种方法:可以为那些可以使用 Web2 或 Web3 特定领域专业知识的人,提供匿名 DAO 成员资格等场景的用例;另一个用例则是基于借款人的 Web2 社会地位(例如 Twitter 关注者的数量),提供无担保 Web3 贷款。
4. 符合法规要求的 ZKP
Web3 使匿名在线帐户能够积极参与金融系统,从这个意义上说,Web3 实现了巨大的财务自由和包容性。随着 Web3 法规的增加,ZKP 可在合规的基础上不破坏匿名性,譬如 ZKP 可用于证明用户不是受制裁国家的公民或居民,ZKP 还可用于证明合格投资者身份或任何其他 KYC/AML 要求。
5. 原生 Web3 私募债务融资
TradeFi 债务融资通常用于支持成长中的初创公司加速增长或启动新的业务线,而无需筹集额外的风险资金。
Web3 DAO 和匿名公司的兴起为 Web3 原生债务融资创造了机会,例如使用 ZKP,DAO 或匿名公司可以根据其增长指标的证明,以具有竞争力的利率获得非抵押贷款,而无需向贷方透露借款人的信息。
6. 私有 DeFi
金融机构通常会对其交易历史和风险敞口进行保密,但由于区块链分析的不断发展,当使用链上产品(即 DeFi 协议)时,要满足这一点就十分具有挑战性,一个可能的解决方案是开发以隐私为中心的 DeFi 产品,以保护协议参与者的隐私。
譬如 Penumbra 的 zkSwap,此外 Aztec 的 zk.money 通过模糊用户参与的 DeFi 协议操作,也提供了一些私有 DeFi 赚钱机会。
一般来说,成功实施高效且注重隐私的 DeFi 产品的协议,可以从机构参与者那里获得可观的用户数量和收入。
7. 基于 ZKP 的 Web3 广告
Web3 推动用户对其数据的所有权,例如浏览历史记录、私人钱包活动等,Web3 还可以使这些数据货币化以造福用户。由于数据货币化可能与隐私相矛盾,ZKP 可以在控制个人数据的哪些方面可以向广告商和数据聚合商披露方面发挥重要作用。
8. 私人数据的共享和货币化
如果与正确的实体共享,我们的大部分私人数据可能都会产生很大的影响。譬如个人健康数据可以众包,以帮助研究人员开发新药;私人财务记录可以与监管机构和监管机构共享,以识别和惩罚腐败等等;ZKP 可以实现此类数据的私人共享和货币化。
9. 去中心化的情报组织
ZKP 可以催生去中心化的情报组织。在这些系统中,情报人员、数据侦探和间谍可以成为网络的一部分,而无需互动或相互了解。参与者可以在接收私人付款以换取该数据之前,使用 ZKP 来证明对某些情报数据的了解。此类系统还可以促进协作和可组合的方式,以丰富或解释收集的数据,同时保持参与者的隐私。
10. 私人治理
随着 DAO 和链上治理的激增,Web3 正在向直接参与的民主靠拢,当前治理模式的一个主要缺陷是参与的非隐私性。ZKP 可能是解决此问题的基础,治理参与者可以在不透露他们如何投票的情况下投票。此外 ZKP 可以将治理提案的可见性限制为 DAO 成员,从而使 DAO 能够建立竞争优势。
结论
ZKP 技术是 Web3 领域最具创新性的技术之一,它为突破性的协议和公司提供了多种机会。