
Web3 = 读、写、验证ZK 和模块化——两个将加速发展的趋势区块链提供了很多令人兴奋的东西,但去中心化模型也通过 P2P 消息传递和共识等附加功能增加了开销和效率低下。此外,大多数区块链仍然通过重新执行来验证正确的状态转换,这意味着网络上的每个节点都必须重新执行交易以验证提议的状态转换的正确性。这是一种浪费,与只有一个实体执行的集中式模型形成鲜明对比。虽然去中心化系统总是包含一些开销和复制,但目标应该是在效率方面逐渐接近中心化基准。 尽管底层基础设施在过去十年中得到了显着改善,但在区块链能够处理互联网级别的规模之前,还有很多工作要做。我们看到了沿着两个主轴(表现力和硬度)的权衡,并相信模块化可以在 ZK 扩展它的同时,沿着权衡前沿进行更快的实验:
- 表现力- 您可以对什么做出保证?包含可扩展性(成本、延迟、吞吐量等)、隐私(或信息流管理)、可编程性和可组合性。
- 硬度——这些保证有多困难?包含安全性、去中心化以及用户和代码安全。


- 模块化堆栈的哪些部分已经纳入了 ZKP,哪些部分还有待探索?
- ZKP 可以缓解哪些问题?


- 账户抽象(AA)使智能合约能够进行交易,而无需每次操作都需要用户签名(“可编程加密账户”)。它可用于定义谁可以签名(密钥管理)、签名什么(交易负载)、如何签名(签名算法)以及何时签名(交易批准条件)。这些功能结合在一起,可以实现使用社交登录与 dApp 交互、2FA、帐户恢复和自动化(自动签署交易)等功能。虽然讨论通常围绕以太坊(ERC-4337于 2023 年春季通过),但许多其他链已经具有内置的本机帐户抽象(Aptos、Sui、Near、ICP、Starknet和zkSync)。
- 链抽象允许用户在不同链上签署交易,同时仅与一个账户交互(一个接口,多个链)。多个团队正在致力于此,包括Near、ICP和dWallet。这些解决方案利用 MPC 和链签名,其中另一个网络的私钥被分成几个小部分,并在源链上签署跨链交易的验证者之间共享。当用户想要与另一条链交互时,需要足够数量的验证者对交易进行签名以满足阈值加密。这保留了安全性,因为私钥永远不会在任何地方完全共享。然而,它确实面临验证者串通的风险,这就是为什么底层链的加密经济安全性和验证者去中心化仍然高度相关的原因。
- 从高层次上看,意图可以将用户的需求与区块链可以执行的操作联系起来。这需要意图解决器——专门的链下代理,其任务是为用户的意图找到最佳的解决方案。已经有一些应用程序使用专门的意图,例如 DEX 聚合器(“最佳价格”)和桥接聚合器(“最便宜/最快桥接”)。通用意图结算网络(Anoma、Essential、Suave)旨在让用户更容易表达更复杂的意图,并让开发人员更轻松地构建以意图为中心的应用程序。然而,仍然存在许多悬而未决的问题,包括如何形式化该过程、以意图为中心的语言是什么样子、最优解决方案是否总是存在以及是否可以找到。
- 使用 AA x ZK 进行身份验证:其中一个示例是 Sui 的zkLogin,它使用户能够使用熟悉的凭据(例如电子邮件地址)登录。它使用 ZKP 来防止第三方将 Sui 地址与其相应的 OAuth 标识符链接起来。
- AA 钱包更高效的签名验证:验证 AA 合约中的交易可能比传统账户 (EOA) 发起的交易昂贵得多。Orbiter试图通过捆绑服务来解决这个问题,该服务利用 ZKP 来验证交易签名的正确性,并维护 AA 账户的随机数值和 Gas 余额(通过 Merkle 世界状态树)。借助证明聚合并在所有用户之间平均分摊链上验证成本,这可以显着节省成本。
- 最佳执行或意图实现的证明:虽然意图和 AA 可以从用户那里抽象出复杂性,但它们也可以充当集中力量,并要求我们依靠专门的参与者(解决者)来找到最佳执行路径。 ZKP 可以用来证明用户的最佳路径是从求解器采样的路径中选择出来的,而不是简单地信任求解器的善意。
- 意向结算的隐私:像Taiga这样的协议旨在实现完全屏蔽的意向结算,以保护用户的隐私——这是向区块链网络添加隐私(或至少是机密性)的更广泛举措的一部分。它使用 ZKP (Halo2) 隐藏有关状态转换的敏感信息(应用程序类型、涉及方等)。
- AA 钱包的密码恢复:该提案背后的想法是让用户在丢失私钥时能够恢复钱包。通过在合约钱包上存储哈希值(密码、随机数),用户可以借助密码生成 ZKP,以验证这是他们的帐户并请求更改私钥。确认期(3 天或更长)可以防止未经授权的访问尝试。
- 验证内存池的正确加密:Radius是一个共享排序网络,具有采用实用可验证延迟加密 ( PVDE ) 的加密内存池。用户生成一个ZKP,用于证明解决时间锁难题将导致有效交易的正确解密,即交易包含有效的签名和随机数,并且发送者有足够的余额支付交易费用。
- 可验证的排序规则(VSR):使提议者/排序者遵守一组有关执行顺序的规则,并额外保证遵守这些规则。验证可以通过 ZKP 或欺诈证明进行,后者需要足够大的经济债券,如果提议者/排序者行为不当,经济债券就会被削减。
- zkEVM rollups:一种特殊类型的 zkVM,经过优化以与以太坊兼容并证明 EVM 执行环境。然而,以太坊兼容性越接近,性能方面的权衡就越大。 2023 年推出了多个 zkEVM,包括Polygon zkEVM、zkSync Era、Scroll和Linea。 Polygon 最近发布了他们的1 型 zkEVM 证明器,它能够以每个块 0.20-0.50 美元的价格证明主网以太坊块(即将进行优化以进一步降低成本)。RiscZero 还有一个解决方案,可以证明以太坊区块,但由于可用的基准测试有限,成本较高。
- 替代 zkVM:一些协议正在采取替代路径并针对性能/可证明性(Starknet、Zorp)或开发人员友好性进行优化,而不是尝试最大程度地与以太坊兼容。后者的例子包括 zkWASM 协议(Fluent、Delphinus Labs)和 zkMOVE(M2和zkmove)。
- 注重隐私的 zkVM:在这种情况下,ZKP 用于两件事:避免重新执行和实现隐私。虽然单独使用 ZKP 可以实现的隐私是有限的(仅限个人私有状态),但即将推出的协议为现有解决方案增加了很多表达性和可编程性。示例包括 Aleo 的snarkVM、Aztec 的AVM 和 Polygon 的MidenVM。
- ZK-协处理器:启用链上数据的链下计算(但没有状态)。 ZKP 用于证明正确的执行,比乐观协处理器提供更快的结算速度,但需要在成本上进行权衡。考虑到生成 ZKP 的成本和/或难度,我们看到了一些混合版本,例如Brevis coChain,它允许开发人员在 ZK 或乐观模式之间进行选择(在成本和保证硬度之间进行权衡)。
- 重要的 zkVM:大多数基础层(L1)仍然使用重新执行来验证正确的状态转换。将 zkVM 纳入基础层可以避免这种情况,因为验证者可以验证证明。这将提高运营效率。大多数人的目光都集中在带有 zkEVM 的以太坊上,但许多其他生态系统也依赖于重新执行。
- zkSVM:虽然 SVM 目前主要在 Solana L1 中使用,但像 Eclipse 这样的团队正在尝试利用 SVM 进行以太坊上的汇总。 Eclipse 还计划使用Risc Zero 进行 ZK 欺诈证明,以应对 SVM 中状态转换的潜在挑战。然而,成熟的 zkSVM 尚未被探索——可能是由于问题的复杂性以及 SVM 针对可证明性以外的其他方面进行了优化的事实。
- 存储证明:无需使用受信任的第三方即可从区块链查询历史和当前数据。 ZKP 用于压缩并证明检索到了正确的数据。在这个领域构建的项目示例包括Axiom、Brevis、Herodotus和Lagrange。
- 隐私状态的高效查询:隐私项目通常使用 UTXO 模型的变体,它可以提供比帐户模型更好的隐私功能,但代价是牺牲开发人员的友好性。私有 UTXO 模型还可能导致同步问题——自 2022 年以来,Zcash在经历了屏蔽交易量的大幅增长后一直在努力解决这个问题。钱包必须先同步到链上,然后才能使用资金,因此这对网络的运作来说是一个相当根本的挑战。考虑到这个问题,Aztec 最近发布了一份关于纸币发现想法的 RFP,但尚未找到明确的解决方案。

- 带有 SNARK 包装器的 STARK:STARK 证明者速度很快,并且不需要可信设置,但缺点是它们会生成大量证明,而在以太坊 L1 上验证这些证明的成本过高。最后一步将 STARK 封装在 SNARK 中,使得在以太坊上进行验证的成本大大降低。不利的一面是,这增加了复杂性,并且这些“复合证明系统”的安全性尚未得到深入研究。现有实现的示例包括Polygon zkEVM、zkSync Era 中的 Boojum和RISC Zero。
- 通用去中心化证明网络:将更多应用程序集成到去中心化证明网络中,使证明者更高效(硬件利用率更高),对用户来说更便宜(不需要为硬件冗余付费)。该领域的项目包括Gevulot和Succinct。
- ZK欺诈证明:在乐观的解决方案中,任何人都可以挑战状态转换并在挑战期间创建欺诈证明。然而,验证欺诈证明仍然相当繁琐,因为它是通过重新执行来完成的。 ZK 欺诈证明旨在通过创建受到挑战的状态转换证明来解决此问题,从而实现更有效的验证(无需重新执行)并可能更快的结算。至少Optimism(与 O1 Labs 和 RiscZero 合作)和AltLayer x RiscZero正在致力于此。
- 更高效的证明聚合:ZKP 的一个重要功能是您可以将多个证明聚合为一个证明,而不会显着增加验证成本。这使得能够分摊多个证明或应用程序的验证成本。证明聚合也是证明,但输入是两个证明而不是执行跟踪。该领域的项目示例包括NEBRA和Gevulot。


- 证明纠删码的正确性:纠删码带来了一定程度的冗余,即使部分编码数据不可用,原始数据也可以恢复。这也是 DAS 的先决条件,其中轻节点仅对块的一小部分进行采样,以概率确保数据存在。如果恶意提议者对数据进行了错误编码,即使轻节点采样了足够的唯一块,原始数据也可能无法恢复。可以使用有效性证明(ZKP)或欺诈证明来证明正确的纠删码——后者会受到与挑战期相关的延迟的影响。除 Celestia 之外的所有其他解决方案都在致力于使用有效性证明。
- ZK 轻客户端为数据桥提供支持:使用外部数据发布层的 Rollups 仍然需要与结算层通信数据已正确发布。这就是数据证明桥的用途。使用 ZKP 可以使以太坊上源链共识签名的验证更加高效。 Avail ( VectorX ) 和 Celestia ( BlobstreamX ) 数据证明桥均由与 Succinct 一起构建的 ZK 轻客户端提供支持。
- Celestia 结合了正确擦除编码的有效性证明: Celestia 目前是数据发布网络中的一个异类,因为它使用欺诈证明来实现正确的擦除编码。如果恶意区块提议者对数据进行了错误编码,任何其他全节点都可以生成欺诈证明并对此提出质疑。虽然这种方法实施起来比较简单,但它也引入了延迟(该块仅在欺诈证明窗口之后才是最终的),并且需要轻节点信任一个诚实的全节点来生成欺诈证明(无法自行验证)。然而,Celestia 正在探索将其当前的 Reed-Solomon 编码与 ZKP 结合起来,以证明编码正确,这将显着降低最终性。围绕此主题的最新讨论可以在此处找到,其中包含之前工作组的记录(以及将 ZKP 添加到 Celestia 基础层的更一般尝试)。
- ZK 证明 DAS :对于ZK 证明数据可用性已经有了一些探索,其中轻节点将简单地验证 merkle 根和 ZKP,而不必通过下载小块数据来进行通常的采样。这将进一步降低对轻节点的要求,但开发似乎已经停滞。
- 存储证明:长期存储提供商需要定期生成 ZKP,以证明他们已经存储了他们声称的所有数据。这方面的一个例子是Filecoin 的时空证明(PoSt),其中存储提供商每次成功回答 PoSt 挑战时都会获得区块奖励。
- 证明数据来源和查看敏感数据的授权:对于想要交换敏感数据的两个不可信方,ZKP 可用于证明一方拥有查看数据所需的凭据,而无需上传实际文档或泄露密码和日志。详细信息。
- 基于 ZK 的隐私网络中的质押:基于 PoS 的隐私网络提出了挑战,因为质押代币的持有者必须在隐私和参与共识(并获得质押奖励)之间做出选择。Penumbra 旨在通过消除质押奖励来解决这个问题,而是将非抵押和抵押股权视为单独的资产。这种方法使各个委托保持私密性,而与每个验证者绑定的总金额仍然是公开的。
- 私人治理:实现匿名投票长期以来一直是加密领域的一个挑战,名词私人投票等项目试图推动这一进程。这同样适用于治理,至少 Penumbra 正在对提案进行匿名投票。在这种情况下,ZKP 可用于证明一个人有权投票(例如通过代币所有权)并且满足某些投票标准(例如尚未投票)。
- 私人领导人选举:以太坊目前在每个 epoch 开始时选举接下来的 32 个区块提议者,并且这次选举的结果是公开的。这会带来恶意方依次对每个提议者发起 DoS 攻击以试图禁用以太坊的风险。为了解决这个问题,Whisk提出了一项隐私保护协议的提案,用于在以太坊上选举区块提议者。验证者使用 ZKP 来证明洗牌和随机化是诚实执行的。还有其他方法可以实现类似的最终目标,a16z 的这篇博文中介绍了其中一些方法。
- 签名聚合:使用 ZKP 聚合签名可以显着减少签名验证的通信和计算开销(验证一个聚合证据而不是每个单独的签名)。这已经在 ZK 轻客户端中得到利用,但也有可能扩展到共识。
- 通过有效性汇总加快结算速度:与乐观汇总相比 ,有效性汇总不需要挑战期,因为它们依赖 ZKP 来证明正确的状态转换,无论是否有人挑战(悲观汇总)。这使得基础层的结算速度更快(以太坊上的结算时间为 12 分钟,而以太坊上的结算时间为 7 天),并且避免了重新执行。
- EigenLayer 的目标是利用现有的以太坊安全性来保护广泛的应用程序。该白皮书于 2023 年初发布,EigenLayer 目前处于主网 alpha 阶段,完整的主网预计将于今年晚些时候推出。
- Cosmos于 2023 年 5 月推出了链间安全(ICS),这使得 Cosmos Hub(Cosmos 上最大的链之一,由约24 亿美元质押的 ATOM支持)能够将其安全性出租给消费链。通过使用为 Cosmos Hub 提供支持的相同验证器集来验证消费者链上的块,它的目的是减少在 Cosmos 堆栈顶部启动新链的障碍。然而,目前只有两个消费者链处于活动状态(Neutron 和 Stride)。
- Babylon也试图让 BTC 用于共享安全。为了解决与合并挖矿相关的问题(很难惩罚不良行为),它正在构建一个虚拟 PoS 层,用户可以将 BTC 锁定到比特币的质押合约中(无桥接)。由于比特币没有智能合约层,因此质押合约的削减规则而是以比特币脚本中编写的 UTXO 交易来表达。
- 其他网络上的重新抵押包括Near 上的Octopus和 Solana 上的 Picasso。 Polkadot平行链还利用了共享安全的概念。
- ZK 和经济安全的混合:虽然基于 ZK 的安全保证可能更强,但对于某些应用程序来说,证明的成本仍然过高,并且生成证明需要很长时间。Brevis coChain就是一个例子,它是一种协处理器,从 ETH 重新质押者那里获得经济安全,并乐观地保证计算(通过 ZK 欺诈证明)。 dApp 可以根据其在安全性和成本权衡方面的具体需求,选择纯 ZK 或 coChain 模式。


- ZK 轻客户端(共识验证):当前大多数轻客户端都可以验证其他链的共识 - 要么是完整的验证器集(如果足够小),要么是全部验证器的子集(例如以太坊的同步委员会)。 ZKP 用于使验证更快、更便宜,因为源链上使用的签名方案可能不受目标链本机支持。虽然 ZK 轻客户端在桥接中的重要性预计会增加,但目前更广泛采用的摩擦包括证明和验证的成本以及每个新链实施 ZK 轻客户端的成本。该领域的协议示例包括Polyhedra、Avail 和 Celestia 的数据证明桥以及Electron Labs 的 zkIBC。
- 存储证明:如前所述,存储证明可以在不使用可信第三方的情况下从区块链查询历史和当前数据。这也与互操作性相关,因为它们可用于跨链通信。例如,用户可以证明他们在一条链上拥有代币,并将其用于另一条链上的治理(无需桥接)。还有尝试使用存储证明进行桥接,例如LambdaClass 开发的这种解决方案。
- ZK Oracles:Oracles充当中介,将现实世界的数据连接到区块链。 ZK 预言机通过证明数据的来源和完整性以及对该数据进行的任何计算,改进了当前基于声誉的预言机模型。
- 完整的轻客户端:完整的轻客户端还验证正确的执行和 DA,而不是盲目地信任其他链的验证器集。这减少了信任假设并更接近完整节点,同时仍然保持较低的硬件要求(允许更多的人运行轻客户端)。然而,在大多数链上,尤其是以太坊上,验证除共识之外的任何其他内容仍然昂贵得令人望而却步。此外,轻客户端仅启用信息验证(问题的一半),即它们可以识别信息是假的,但仍然需要有额外的机制让它们对此采取措施。
- 聚合层:Polygon 的 AggLayer旨在通过利用聚合证明和统一的桥接合约,实现生态系统内 L2 之间的平滑互操作性。聚合证明可以实现更有效的验证和安全性 - 强制依赖链状态和捆绑包保持一致,并确保如果汇总状态依赖于另一个链的无效状态,则无法在以太坊上解决。zkSync 的 HyperChains和Avail Nexus也采取了类似的方法。
- 所有不必要的重新执行都被消除:通过转向 1/N 执行模型(而不是 N/N 重新执行),我们显着减少了网络的整体冗余,并能够更有效地使用底层硬件。虽然仍然存在一些开销,但这将有助于区块链在计算效率方面逐渐接近中心化系统。
- 大多数应用程序依赖于 ZK 支持的加密保证,而不是经济安全:当生成证明的成本和时间不再是相关考虑因素时,我们相信大多数应用程序将依赖 ZKP 来获得更强的保证。这还需要在可用性和开发人员友好性方面进行一些改进来构建 ZK 应用程序,但这些都是多个团队正在努力解决的问题。
