本文讨论了区块链的概念及其对计算范式的扩展,它可以协调机器,使陌生人之间的合作变得更容易。模块化和零知识证明是未来发展的趋势,但需要解决一些挑战。ZKP可以提高加密经济保证的可靠性,但仍需要改进可用性和开发人员友好性。随着ZKP技术的发展,我们可以期待更高效的区块链系统和更多基于ZKP的隐私应用。最终,现代密码学解决方案将如何一起发挥作用也是一个重要的问题。
原文标题:Will ZK Eat The Modular Stack?
原文作者:Hannes Huitula
原文来源:Equilibrium
编译:Lynn,火星财经
感谢Dino (Fluent/Modular Media)、Lisa (Aztec) 和Celestia团队的审核和反馈!此外,与Joakim、Olli和 Vesa-Ville(Equilibrium Labs)以及Mika和 Chris(Equilibrium Ventures)进行的许多早期讨论也帮助塑造了这篇文章。
要讨论本文中的任何内容,您可以通过X或通过电子邮件联系 Hannes 。
区块链(名词):一种协调机器,使来自世界各地的参与者能够沿着一组共同商定的规则进行协作,而无需任何第三方的协助。
计算机的设计目的是做三件事:存储数据、计算以及彼此之间和人类之间的通信。区块链增加了第四个维度:额外保证这三件事(存储、计算和通信)以商定的方式发生。这些保证使得陌生人之间的合作无需受信任的第三方来促进(去中心化)。
这些额外的保证可以是经济的(信任博弈论和激励/抑制)或加密的 (信任数学),但大多数应用程序利用两者的组合 -加密经济。这与当前主要基于声誉的系统的现状形成鲜明对比。
虽然 Web3 通常被描述为“读、写、拥有”,但我们认为,互联网第三次迭代的更好概念是“读、写、验证”,因为公共区块链的主要好处是保证计算和轻松验证这些保证得到兑现。如果我们构建可以购买、出售和控制的数字工件,那么所有权就可以成为有保证的计算的一个子集。然而,区块链的许多用例受益于有保证的计算,但不直接涉及所有权。例如,如果您在完全链上游戏中的生命值是 77/100 - 您是否拥有该生命值,或者它只是根据共同商定的规则在链上强制执行?我们会争论后者,但克里斯·迪克森可能不同意。
Web3 = 读、写、验证
区块链提供了很多令人兴奋的东西,但去中心化模型也通过 P2P 消息传递和共识等附加功能增加了开销和效率低下。此外,大多数区块链仍然通过重新执行来验证正确的状态转换,这意味着网络上的每个节点都必须重新执行交易以验证提议的状态转换的正确性。这是一种浪费,与只有一个实体执行的集中式模型形成鲜明对比。虽然去中心化系统总是包含一些开销和复制,但目标应该是在效率方面逐渐接近中心化基准。
尽管底层基础设施在过去十年中得到了显着改善,但在区块链能够处理互联网级别的规模之前,还有很多工作要做。我们看到了沿着两个主轴(表现力和硬度)的权衡,并相信模块化可以在 ZK 扩展它的同时,沿着权衡前沿进行更快的实验:
模块化是指系统组件可以分离和重新组合的程度 。通过更快的反馈循环和更低的进入壁垒以及更少的资本需求(经济和人力)——模块化可以实现更快的实验和专业化。模块化与集成的问题不是二元的,而是一系列实验,以找出哪些部分适合解耦,哪些部分没有。
另一方面,零知识证明(ZKP)使一方(证明者)能够向另一方(验证者)证明他们知道某件事是真实的,而无需透露任何超出其有效性的附加信息。这可以通过避免重新执行(从全部执行以验证的模型转变为一次执行、全部验证的模型)来提高可扩展性和效率,并通过启用隐私(有限制)来提高表现力。 ZKP 还通过用更强的加密经济保证取代较弱的加密经济保证来提高保证的硬度,这表现为将权衡边界向外推(参考上图)。
我们相信模块化和“万物ZK化”都是将继续加速的趋势。虽然两者都提供了有趣的视角来单独探索空间,但我们对两者的交叉特别感兴趣。我们感兴趣的两个关键问题是:
然而,在讨论这些问题之前,我们需要了解 2024 年模块化堆栈的最新情况。
具有四个组件(执行、数据发布、共识、结算)的模块化堆栈的常用图像作为简单的心理模型很有用,但考虑到模块化空间已经发展了多少,我们认为它不再是一个足够的表示。进一步的分拆导致了以前被认为是更大部分的一部分的新组件,同时还创建了新的依赖关系以及不同组件之间安全互操作性的需求(稍后将详细介绍)。考虑到该领域的发展速度,很难及时了解堆栈不同级别的所有创新。
探索 web3 堆栈的早期尝试包括Kyle Samani (Multicoin)的尝试- 最初于2018 年发布,于2019 年更新。它涵盖了从分散式最后一英里互联网访问(例如Helium)到最终用户密钥管理的一切。虽然它背后的原理可以重复利用,但有些部分,比如证明和验证,却完全缺失了。
考虑到这些,我们尝试创建 2024 年模块化堆栈的更新表示,扩展现有的四部分模块化堆栈。它是按组件而不是功能进行划分的,这意味着 P2P 网络等包含在共识中,而不是将其拆分为单独的组件 - 主要是因为很难围绕它构建协议。
现在我们有了模块化堆栈的更新视图,我们可以开始研究真正的问题,即 ZK 已经渗透堆栈的哪些部分以及可以通过引入 ZK 来解决哪些开放问题(避免重新执行或隐私 -特征)。在分别深入研究每个组成部分之前,下面是我们的发现的摘要。
当前的区块链用户需要浏览多个链、钱包和界面,这很麻烦,并且会阻碍更广泛的采用。用户操作抽象是一个总称,指的是任何试图抽象出这种复杂性并允许用户仅与一个界面(例如特定应用程序或钱包)交互的尝试,而所有复杂性都发生在后端。底层抽象的一些示例包括:
交易在添加到区块之前需要进行排序,这可以通过多种方式完成:按提议者的盈利能力排序(首先支付最高支付的交易),按照提交的顺序(先进先出),给出优先处理来自私人内存池的交易等。
另一个问题是谁可以订购交易。在模块化世界中,多个不同方可以执行此操作,包括汇总排序器(集中式或分散式)、L1 排序(基于汇总)和共享排序网络(多个汇总使用的排序器的去中心化网络)。所有这些都有不同的信任假设和扩展能力。在实践中,交易的实际排序并将它们捆绑到一个区块中也可以由专门的参与者(区块构建者)在协议之外完成。
执行层包含状态更新的逻辑,也是智能合约执行的地方。除了返回计算的输出之外,zkVM 还可以证明状态转换是否正确完成。这使得其他网络参与者只需验证证明即可验证正确执行,而不必重新执行交易。
除了更快、更高效的验证之外,可证明执行的另一个好处是可以实现更复杂的计算,因为您不会遇到典型的 Gas 问题和链外计算的有限链上资源问题。这为全新的应用程序打开了大门,这些应用程序的计算强度更大,可以在区块链上运行并利用有保证的计算。
数据查询,或者从区块链中读取数据,是大多数应用程序的重要组成部分。虽然近年来的大部分讨论和努力都集中在扩展写入(执行)上,但由于两者之间的不平衡(特别是在去中心化环境中),扩展读取更为重要。区块链之间的读/写比率有所不同,但Sig 估计的一个数据点是,对 Solana 上节点的所有调用中 > 96% 都是读调用(基于 2 年的经验数据) -读/写比率为 24: 1.
扩展读取包括通过专用验证器客户端(例如 Solana 上的 Sig)获得更高的性能(每秒更多的读取)以及启用更复杂的查询(将读取与计算相结合),例如在协处理器的帮助下。
另一个角度是数据查询方式的去中心化。如今,区块链中的大多数数据查询请求都是由受信任的第三方(基于信誉)促进的,例如 RPC 节点 ( Infura ) 和索引器 ( Dune )。更去中心化选项的示例包括The Graph和防存储运算符(也是可验证的)。还有一些创建去中心化 RPC 网络的尝试,例如Infura DIN或Lava Network(除了去中心化 RPC 之外,Lava 的目标是稍后提供额外的数据访问服务)。
随着越来越多的应用程序纳入 ZKP,证明和验证正迅速成为模块化堆栈的重要组成部分。然而,如今,大多数证明基础设施仍然是经过许可和集中的,许多应用程序依赖于单个证明者。
虽然集中式解决方案不太复杂,但分散证明架构并将其拆分为模块化堆栈中的单独组件会带来多种好处。一个关键的好处在于活性保证的形式,这对于依赖频繁证明生成的应用程序至关重要。用户还受益于更高的审查阻力和由竞争和多个证明者之间分担工作量驱动的 更低的费用。
我们认为,通用证明者网络(许多应用程序,许多证明者)优于单应用程序证明者网络(一个应用程序,许多证明者),因为现有硬件的利用率更高,证明者的复杂性更低。更高的利用率也有利于用户降低费用,因为证明者不需要通过更高的费用来补偿冗余(仍然需要支付固定成本)。
Figment Capital很好地概述了证明供应链的当前状态,其中包括证明生成和证明聚合(本身就是证明生成,但仅将两个证明作为输入而不是执行跟踪)。
资料来源:Figment Capital
资料来源:Figment Capital
数据发布 (DP)确保数据在短时间内(1-2 周)可用且易于检索。这对于安全性(乐观汇总需要输入数据来通过在挑战期(1-2 周)内重新执行来验证正确执行)和活跃性(即使系统使用有效性证明,可能需要数据来证明资产所有权)至关重要。逃生舱口或强制交易)。用户(例如 zk-bridges 和 rollups)面临一次性付款,该付款涵盖了在被修剪之前的短时间内存储交易和状态的成本。数据发布网络并不是为长期数据存储而设计的(相反,请参阅下一节以了解可能的解决方案)。
Celestia是第一个推出主网的替代 DP 层(10 月 31 日),但很快就会有许多替代方案可供选择,因为Avail、 EigenDA和Near DA预计将在 2024 年期间推出。此外,以太坊的 EIP 4844升级也已扩展在以太坊上发布数据(除了为 blob 存储创建一个单独的费用市场),并为完整的 dank 分片奠定了基础。 DP 还正在扩展到其他生态系统 - Nubit就是一个例子,它旨在在比特币上构建 Native DP。
许多 DP 解决方案还提供纯数据发布之外的服务,包括主权汇总的共享安全性(例如Celestia和Avail)或汇总之间更平滑的互操作性(例如 Avail 的Nexus)。还有一些项目(Domicon和Zero Gravity)既提供数据发布又提供长期状态存储,这是一个引人注目的提议。这也是在模块化堆栈中重新捆绑两个组件的示例,我们可能会看到更多的进展(进一步分拆和重新捆绑的实验)。
存储历史数据很重要,主要用于同步目的和服务数据请求。然而,每个全节点都存储所有数据是不可行的,并且大多数全节点都会修剪旧数据以保持硬件需求合理。相反,我们依靠专门机构(存档节点和索引器)来存储所有历史数据并根据用户的请求提供这些数据。
还有去中心化存储提供商,例如Filecoin或Arweave,以合理的价格提供长期去中心化存储解决方案。虽然大多数区块链没有正式的存档存储过程(仅依赖于某人存储它),但去中心化存储协议是通过存储网络的内置存储历史数据和添加一些冗余(至少 X 个节点存储数据)的良好候选者。在激励措施中。
鉴于区块链是分布式 P2P 系统,不存在确定全局真相的可信第三方。相反,网络节点通过一种称为共识的机制就当前真相(哪个区块是正确的)达成一致。基于 PoS 的共识方法可以分为基于 BFT 的(其中验证者的拜占庭容错法定人数决定最终状态)或基于链的(最终状态由分叉选择规则追溯决定)。虽然大多数现有的 PoS 共识实现都是基于 BFT 的,但Cardano是最长链实现的一个例子。人们对基于 DAG 的共识机制也越来越感兴趣,例如在 Aleo、Aptos 和 Sui 中以某些变体实现的 Narwhal-Bullshark。
共识是模块化堆栈的许多不同组件的重要组成部分,包括共享排序器、去中心化证明和基于区块链的数据发布网络(不是基于委员会的,如 EigenDA)。
和解类似于最高法院——验证状态转换的正确性并解决争端的最终真相来源。当一笔交易不可逆转时(或者在概率最终性的情况下——当其很难逆转时),该交易被认为是最终的。最终确定的时间取决于所使用的底层结算层,而这又取决于所使用的具体最终确定规则和区块时间。
缓慢的最终性在跨 Rollup 通信中尤其是一个问题,其中 Rollup 需要等待以太坊的确认才能批准交易(乐观 Rollups 需要 7 天,有效性 Rollups 需要 12 分钟和证明时间)。这导致用户体验不佳。有多种方法可以使用具有一定安全级别的预先确认来解决此问题。示例包括特定于生态系统的解决方案(Polygon AggLayer或zkSync HyperBridge)和通用解决方案(例如Near 的 Fast Finality Layer),该解决方案旨在通过利用 EigenLayer 的经济安全性来连接多个不同的汇总生态系统。还可以选择利用 EigenLayer进行软确认的本机汇总桥,以避免等待完全确定。
安全性与保证的硬度有关,也是区块链价值主张的重要组成部分。然而,引导加密经济安全性是很困难的——增加了进入壁垒,并成为那些需要它的应用程序(各种中间件和替代 L1)的创新摩擦。
共享安全的想法是利用 PoS 网络现有的经济安全,并使其承受额外的削减风险(惩罚条件),而不是每个组件都试图引导自己的安全。早期已经有一些尝试在 PoW 网络中做同样的事情(合并挖矿),但是不一致的激励措施使矿工更容易串通并利用协议(由于工作发生在物理世界中,因此更难以惩罚不良行为,即使用计算能力)。 PoS 安全性更灵活,可以被其他协议使用,因为它同时具有正向(质押收益)和负向(削减)激励。
围绕共享安全前提构建的协议包括:
安全高效的互操作性仍然是多链世界中的一个大问题,桥梁黑客攻击造成的 28 亿美元损失就是例证。在模块化系统中,互操作性变得更加重要——不仅是在其他链之间进行通信,而且模块化区块链还需要不同的组件来相互通信(例如 DA 和结算层)。因此,像集成区块链那样简单地运行完整节点或验证单个共识证明不再可行。这为方程式增加了更多的移动因素。
互操作性包括代币桥接以及跨区块链的更一般的消息传递。有几种不同的选择,它们都在安全性、延迟和成本方面做出了不同的权衡。对这三者进行优化非常困难,通常需要牺牲至少一项。此外,跨链的不同标准使得新链的实施变得更加困难。
虽然我们仍然缺乏对不同类型的轻客户端(或节点)的明确定义,但Dino(Fluent & Modular Media 联合创始人)的这篇文章给出了很好的介绍。如今,大多数轻客户端仅验证共识,但理想情况下,我们应该拥有可以验证执行和 DA 的轻客户端,以减少信任假设。这将允许接近全节点安全性,而不需要很高的硬件要求。
假设我们可以达到这样一种状态:ZKP 的生成变得非常快(几乎以光速)并且非常便宜(几乎免费),那么最终的游戏会是什么样子?换句话说——ZK什么时候吃掉了模块化堆栈?
从广义上讲,我们相信在这种情况下有两件事是正确的:
第三个条件是隐私(或信息流管理),但它更复杂。 ZKP 可用于一些具有客户端证明的隐私应用程序,这正是 Aleo、Aztec 或 Polygon Miden 等平台正在构建的目标,但为所有潜在用例实现大规模隐私也依赖于 MPC 和 FHE 的进展- 未来博客文章的潜在主题。
如果我们错了,未来既不是模块化也不是 ZK 化怎么办?我们论文的一些潜在风险包括:
用户和开发者都面临着链数量不断增长的困扰。用户需要跨多个链(以及可能的多个钱包)管理资金。另一方面,考虑到空间仍在不断发展,应用程序开发人员的稳定性和可预测性较差,这使得决定构建哪条链变得更加困难。他们还需要考虑状态和流动性碎片化。现在尤其如此,因为我们仍在沿着哪些组件有意义解耦以及哪些组件将重新耦合的前沿进行试验。我们相信用户操作抽象以及安全高效的互操作解决方案是解决这个问题的关键部分。
无可回避的事实是,证明生成时间太长,而且证明和验证的成本在今天仍然太高。对于当今的许多应用程序来说,诸如可信执行环境/TEE(隐私)或乐观/加密经济安全解决方案(成本)之类的竞争解决方案仍然更有意义。
然而,关于 ZKP 的软件优化和硬件加速,我们正在做大量工作。证明聚合将通过将成本分摊到多个不同方(较低的/用户成本)来帮助进一步降低验证成本。还可以调整基础层以针对 ZKP 验证进行更加优化。 ZKP 硬件加速面临的一项挑战是证明系统的快速开发。这使得创建专用硬件(ASIC)变得困难,因为如果/当底层证明系统的标准发展时,它们可能会很快过时。
Ingonyama尝试通过称为ZK 分数的可比指标为证明者性能创建一些基准。它 基于运行计算的成本 (OPEX) 并跟踪 MMOPS/WATT,其中 MMOPS 代表每秒模乘运算。如需进一步阅读该主题,我们推荐Cysic和Ingonyama的博客,以及Wei Dai的演讲。
ZKP 只能用于实现个人状态的隐私,不能用于多方需要对加密数据进行计算的共享状态(例如私有 Uniswap)。 FHE 和 MPC 也需要完全隐私,但在成为更广泛使用的可行选择之前,它们需要在成本和性能方面提高许多数量级。也就是说,ZKP 对于某些不需要私有共享状态的用例仍然有用,例如身份解决方案或支付。并非所有问题都需要使用同一个工具来解决。
那么这会给我们带来什么影响呢?虽然我们每天都在进步,但仍有大量工作要做。最迫切需要解决的问题是价值和信息如何在不同的模块化组件之间安全地流动,而不牺牲速度或成本,以及将其全部从最终消费者中抽象出来,以便他们不需要关心之间的桥接不同的链、切换钱包等。
虽然我们目前仍处于实验阶段,但随着时间的推移,当我们找出每个用例的最佳权衡范围时,情况应该会稳定下来。这反过来将为标准(非正式或正式)的出现提供空间,并为这些链之上的构建者提供更多稳定性。
如今,由于生成 ZKP 的成本和复杂性,仍然有许多用例默认采用加密经济安全,有些用例需要两者的结合。然而,随着我们设计更高效的证明系统和专用硬件以降低证明和验证的成本和延迟,这一份额应该会随着时间的推移而减少。随着成本和速度的每一次指数级降低,新的用例都会被解锁。
虽然这篇文章特别关注 ZKP,但我们也越来越感兴趣现代密码学解决方案(ZKP、MPC、FHE 和 TEE)最终将如何一起发挥作用 - 我们已经看到了这一点。
谢谢阅读!