Web3 中的 ZKP (零知识证明):现在与未来
撰文:Mohamed Fouda & Qiao Wang
编译:DeFi 之道
零知识 (Zero Knowledge,简称 ZK) 技术不仅可以改变 Web3,还可以改变其他的行业。作为一种足够通用的技术,ZK 可拥有大量的用例,而我们正处于弄清楚该技术可实现的所有用例的早期阶段。一些明显的 ZK 用例,已经找到了真正的应用,例如启用交易隐私以及数据压缩(即 Rollup)。然而,要让 ZK 的采用变为主流,仍然需要许多潜在的用例和技术进步。
在本文中,我们首先来回顾下 ZKP (零知识证明) 的不同应用。然后我们会讨论,实现这项技术的下一阶段需要什么,以及一些可以从这项技术中受益的创业想法。
01. ZKP 应用地图
01. ZKP 应用地图
自发明以来,零知识证明 (ZKP) 已在 crypto 行业中找到了稳固的立足点。ZKP 确实有一些神奇之处,这使得该技术非常令人兴奋。简单来说,ZKP 允许一个实体向世界其他地方证明其知道了一条信息,或者其已经正确完成了一项任务,而无需透露该信息或显示任务执行的细节。
ZK 的神奇数学让我们只需检查生成的 ZKP 就可以相信知识或执行的完成。出于这个原因,ZKP 的第一个,也是最一致的用例是以隐私为中心的加密网络。ZKP 还用于提供以太坊 L1 上的 L2 交易的有效性证明,以引入 zk-Rollup 的概念。此外,ZKP 在不同的项目中还被用于其他的利基应用。
1) 以隐私为中心的支付和协议
1) 以隐私为中心的支付和协议
ZKP 自然地实现了隐私,特别是在缺乏可充当真相来源的中央权威的去中心化网络中。ZKP 允许 Web3 用户(证明者)向网络验证者(验证者)证明他们的交易是有效的,即他们有足够的余额可以花费,而无需透露交易细节,如交易金额、发送方或接收方地址。
ZKP 最初是为了支持 Zcash 网络中的隐蔽支付(即隐私支付)而开发的,然后扩展到了其他网络。隐私支付网络的项目例子包括:
注重隐私的 L1:Zcash、Horizon、Aleo 以及 Iron Fish
通用链上的隐私智能合约:Tornado Cash
注重隐私的 L2:Aztec
2) zk-Rollup 的验证
2) zk-Rollup 的验证
ZKP 的另一个主要用例是在底层 L1 上生成 Rollup 有效性证明。通用 Rollup 优化吞吐量,即通过不利用 ZKP 的隐私功能来证明更多的交易。在这种权衡中,ZKP 仅作为 L2 交易执行正确性的证明。
由于无法有效地证明一些通用函数,因此很难生成 ZKP 来证明任意智能合约的正确执行。解决这个问题需要实现专用的 VM (虚拟机),这些 VM 可以使用底层 zk 电路得到有效验证。由于这种复杂性,zk-Rollup 一开始只支持支付或单个应用(例如 DEX),这样就可以轻松生成 ZKP。这里的例子包括 zkSync 1.0 和 Loopring。之后,通用的 zkEVM 实现开始出现在市场上,包括 Starknet、zkSync 2.0、Polygon zkEVM 以及 Scroll。目前,所有的 zk-Rollup 都在以太坊上,但理论上也可以在其他链(包括比特币)上实现 zk-Rollup。然而,比特币 Rollup 的实施将需要更改比特币操作码并进行硬分叉升级,而这通常不受比特币社区的欢迎。
3) 其他的零知识证明应用
3) 其他的零知识证明应用
除了以隐私为中心的应用和 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 的使用符合隐私用例,但其创建不完全信息博弈的应用是一个独特的用例,其超越了 ZKP 在支付网络中的金融应用范围。
02. ZKP 的发展轨迹及其应用
02. ZKP 的发展轨迹及其应用
在 2016 年之前,ZKP 还只是在小范围的学术圈内被讨论的一个研究课题。当 Zcash 创始团队创建了 ZKP 变体 zk-SNARK 的第一个实现,以支持 Zcash 网络中的屏蔽/隐私交易时,这一切都发生了变化。有了一个真实的用例之后,ZKP 引发的兴趣变得越来越大,这导致了更多更好的 ZKP 变体,这些变体成为了第一节中我们讨论的很多项目的基础。然而,该技术需要进一步的 ZKP 开发才能实现主流的采用。
要了解如何进一步改进该技术,我们可以向 AI 等类似技术学习。在许多方面,ZKP 技术类似于人工智能(AI)技术,预计它将遵循类似的发展轨迹。与 ZKP 一样,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-SNARK 以来,研发人员已经开发了更高级的算法。2018 年,Starkware 的创始人开发了 STARK,这是一种无需可信设置且证明生成时间更短的 ZKP 方法,这项技术是 Starkware 旗下几款产品(包括 StarkNet 在内)的基础。
随着 2019 年 PLONK 的引入,ZKP 继续取得了进展,这是一种 SNARK 实现,它允许很多应用使用单个受信任的设置,而无需重复设置。PLONK 刺激了多种实现的开发,这些实现被多种 Web 3 协议(例如 Aztec、Mina 和 Celo)所使用。
2) 优化的执行引擎
ZKP 的一个主要限制是计算复杂性,这导致了证明时间过长。例如,Polygon 最近宣布的 zkEVM 实现需要在 64 核服务器上使用大约 5 分钟来生成 50 万 gas 计算的证明。提高 ZKP 证明时间是使 ZKP 技术成为主流的关键部分。与 AI 类似,优化软件执行引擎和使用专用硬件都是实现这一目标的必要条件。
优化软件
很多 ZKP 生成操作是大规模并行的,这意味着并行处理(例如 GPU)可以加速 ZKP 计算。CUDA 等专用 GPU 库可用于加速 Nvidia GPU 上 ZKP 计算。由于每个项目都使用不同的 ZKP 算法,因此有几个项目正在尝试在内部进行开发。这里一个值得注意的例子是 Filecoin 的 Groth16 算法的实现,它使用 GPU 来加速证明过程。另一个例子是 Edgeswap 使用 GPU 将 PLONK 的证明时间减少了 75%。
专用硬件
由于 GPU 对 ZKP 证明时间的改进会是有限的,因此另一种选择是使用专用硬件,例如 FPGA 或 ASIC。在制造专用芯片(即 ASIC)的昂贵努力之前,FPGA 通常被视为硬件原型设计平台。FPGA 或结合 GPU 和 FPGA 的混合解决方案,可以在中短期内为 Rollup 以及以隐私为中心的网络加速 ZKP 发挥重要作用。然而,如果 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 的应用程序。
Web 3 中 ZKP 抽象的另一个例子是 StarkWare 的 Cairo 语言,它允许开发人员实现在底层使用 STARK 证明的通用智能合约。为了提供进一步的抽象,Nethermind 的 Warp 工具允许 Solidity 开发人员将他们的 Solidity 代码直接转换为 Cairo。使用 Warp,可以将 Uniswap V3 代码转换为 Cairo,而只需对原始 Solidity 代码进行最小的更改。
03. ZKP 创业机会
03. ZKP 创业机会
基于对 ZKP 可能进展路径的讨论,我们确定了一些与 ZKP 相关的创业想法,我们希望与创始人一起探索。创业的理念分为两组:工具和应用。
1) ZKP 工具
1) ZKP 工具
高级开发框架
与 AI 中的 Tensorflow 和 PyTorch 类似,高级 ZKP 开发框架对于在应用层解锁创新是至关重要的。这些框架需要:
抽象底层 ZKP 后端的复杂性;
支持各种 ZKP 后端和硬件环境,例如 CPU 和 GPU;
允许高效的调试和测试;
通过示例和教程提供丰富的开发环境;
以太坊生态中最接近的例子是 Hardhat 和 Foundry,但它们不太可能很快支持 zkEVM 或 ZKP。取而代之的是,现有的抽象工作,例如 Cairo,最终可能会演变到填补这一空间。
zk-Rollup SDK
zk-Rollup 越来越受欢迎,其可以为游戏或高吞吐量 DeFi 协议启用特定于应用的 L2。在这种情况下,zk-Rollup 主要进行执行和结算,而共识和数据可用性将由 L1 处理。然而,启动特定于应用的 zk-Rollup 仍然是非常复杂的。我们相信,提供对开发人员友好的 SDK (软件开发工具包),以启动自定义 zk-Rollup 的初创公司将解决真正的业务需求,并通过提供开发工具箱、开发人员服务、排序器服务和支持基础设施,成为有价值的企业。
ZKP 硬件加速器
针对特定用例并建立早期市场领先地位的专业硬件公司,最终会成为极具价值的公司。当英伟达通过专注于人工智能硬件而成为北美最有价值的半导体公司时,人工智能(AI)就是如此。当比特大陆、嘉楠以及 Whatsminer 通过专注于 ASIC 矿机成为独角兽时,比特币挖矿领域也是如此。设计和构建高效 ZKP 硬件加速器的公司,将遵循相同的轨迹。
2) ZKP Web 3 应用
2) ZKP Web 3 应用
1. ZK 跨链桥和互操作性
ZKP 可用于创建跨链消息传递协议的有效性证明,跨链消息可以在目的链上快速验证。这类似于在底层 L1 上验证 zk-Rollup 的方式。但是,对于跨链消息传递,复杂性会更高,因为要验证的签名方案和密码学函数在源链和目标链之间可能不同。
2. ZK 链上游戏引擎
Dark Forest 证明 ZKP 可以实现信息不完整的链上游戏。这对于设计更具互动性的游戏是至关重要的,在这些游戏中,玩家的行为在他们决定公开之前都是保密的。随着链上游戏的成熟,我们预计 ZKP 将成为游戏执行引擎的一部分。对于成功将隐私功能集成到高吞吐量链上游戏引擎中的初创公司来说,机会是巨大的。
3. 身份解决方案
ZKP 可以在身份空间中实现多个机会。它们可用于信誉或连接 Web 2 和 Web 3 身份。目前,我们的 Web 2 和 Web 3 身份是分开的。Clique 等项目通过使用预言机连接这些身份。ZKP 可以通过启用 Web 2 和 Web 3 身份的匿名链接来进一步采用这种方法。这可以为那些可使用 Web 2 或 Web 3 数据证明特定领域专业知识的人启用匿名 DAO 成员资格等用例。另一个用例是基于借款人的 Web 2 社会地位(例如 Twitter 关注者的数量)的无抵押 Web 3 贷款。
4. 合规性 ZKP 用例
Web 3 使假名在线账户能够积极参与金融系统。从这个意义上说,Web 3 实现了巨大的财务包容性。随着 Web 3 监管法规的增加,ZKP 可用于合规性而不会破坏假名。ZKP 可用于证明用户不是受制裁国家的公民或居民。ZKP 还可用于证明合格投资者身份或任何其他KYC/AML要求。
5. 原生 Web 3 隐私债权融资
传统金融债权融资通常用于支持成长中的初创公司以加速其增长或启动新业务线,而无需筹集额外的风险资本。Web 3 DAO 以及假名公司的兴起,为 Web 3 原生债权融资创造了机会。例如,使用 ZKP、DAO 或假名公司可以在不向贷款人透露借款人信息的情况下,根据其增长指标的证明,以具有竞争力的利率获得非抵押贷款。
6. 隐私 DeFi
金融机构通常将其交易历史和风险敞口保密。由于区块链链分析技术的不断进步,当使用链上(即 DeFi协议)时,要满足这一要求具有挑战性。一个可能的解决方案是开发以隐私为重点的 DeFi 产品,保护协议参与者的隐私。一个正在尝试实现的协议是 Penumbra 的 zkSwap。此外,Aztec 的 zk.money 通过模糊用户参与透明 DeFi 协议,提供了一些隐私 DeFi 赚钱机会。通常,成功实现高效且注重隐私的 DeFi 产品的协议,可确保机构参与者的大量交易以及收入。
7. Web 3 广告的 ZKP 用例
Web 3 推送用户对其数据的所有权,例如浏览历史记录、私人钱包活动等。Web 3 还支持为用户的利益将这些数据货币化。由于数据货币化可能与隐私相矛盾,ZKP 可以在控制个人数据的哪些方面可透露给广告商和数据聚合商方面发挥重要作用。
8. 私人数据的共享和货币化
如果与正确的实体共享,我们的很多私人数据可能会产生很大的影响。个人健康数据可通过众包来帮助研究人员开发新药。私人财务记录可以与监管机构和监督机构共享,以识别和惩治腐败。ZKP 可以实现此类数据的私有共享和货币化。
9. 去中心化的情报组织
ZKP 可以催生去中心化的情报组织。在这些情况下,情报运营商、数据侦探以及间谍可以成为网络的一部分,而无需相互交流或了解。参与者可以使用 ZKP 来证明对某些情报数据的了解,然后再接受私人支付以换取这些数据。这样的系统还可以促进协作和可组合的方式来丰富或解释收集的数据,同时维护参与者的隐私。
10. 隐私治理
随着 DAO 和链上治理的普及,Web3 正在向直接参与的民主靠拢。当前治理模式的一个主要缺陷是参与的非隐私性。ZKP 可能是解决这个问题的基础。治理参与者可以投票,而不必透露他们的投票情况。此外,ZKP 可以将治理提案的可见性限制为对 DAO 成员可见,从而允许 DAO 建立竞争优势。
04. 结论
04. 结论
ZKP 技术是 Web 3 领域最具创新性的技术之一,它为突破性协议和公司提供了多种机会。在 Alliance,我们希望成为这一运动的核心部分,我们正在寻求支持和资助创始人朝着这个方向发展。
作者感谢 Shumo Chu、Carter McAlister 以及 Adam Porter 对本文的反馈。
其他阅读资源:
零知识证明的硬件加速:
https://www.paradigm.xyz/2022/04/zk-hardware
去中心化的速度:零知识证明的进步:
https://a16z.com/2022/04/15/zero-knowledge-proofs-hardware-decentralization-innovation/
Zk-SNARKs:区块链上的可更新设置:
https://iohk.io/en/blog/posts/2022/09/01/zk-snarks-updatable-setups-on-the-blockchain/
原文:
https://medium.com/alliancedao/zkps-in-web-3-now-and-the-future-21b459348f29
开发者新手指南:进入 Web3 前,你需要掌握哪些必备技能?
Layer3 是什么?一文揭晓 Layer1 到 Layer3 进化史
IC 开发者倾情分享:静态资源服务器技术详解
区块链秋招季来袭!入场 Web3 正当时
关于我们
ABOUT US
TinTinLand 是赋能下一代开发者的技术社区,通过聚集、培育、输送开发者到各开放网络,共同定义并构建未来。
Discord: https://discord.gg/kmPnTDSFu8
Twitter: https://twitter.com/Tintinland2021
Bilibili: https://space.bilibili.com/1152852334
Medium: https://medium.com/@tintin.land2021
YouTube:https://www.youtube.com/channel/UCfHiMcFt-4btbC75FsReQ