本文为 SevenX 研究团队原创,仅供交流学习,不构成任何投资参考。如需引用,请注明来源。 原文链接:https://mirror.xyz/sevenxventures.eth/ iQ 7 i 5 BQLtDDqm 9 UROTyNLUMEtMkP 3 NbE 5 HoUSxORbLg 作者:Grace 非常感谢@ 13 yearoldvc @prabalbanerjee @maqstik @ballsyalchemist @donnoh_eth @ChundaMcCain @shumochu @ranvirrana 001 等人就相关讨论和评论所作出的贡献! 最近出现了这样一个明显的趋势:越来越多 dApp 宣布推出自己的 Rollup 应用。此外,即将上线的通用 Rollup 数量也与日俱增。 随着交易量和 dApp 数量不断增长,以太坊面临着扩容问题,通用 Rollup 应运而生。这些 Layer 2 解决方案可在链下处理更多交易,然后将这些交易安全地记录在主链上,完美平衡了可扩展性和安全性。Rollup 的多功能性支持各种 dApps,每个应用程序都不再需要独特的扩展解决方案。 特定应用程序 Rollup 是量身定制的解决方案,可满足单个应用程序的独特需求,通过优化特定用例的事务处理来提高速度。在成本方面,这种 Rollup 可能提供了更高效的替代方案,特别是在网络拥塞时,这种效率就尤为可贵。Rollup 的一大特点是灵活。通用的 Layer 2 解决方案比较死板,并且更受 EVM 设计的限制,而针对特定应用的 Rollup 则可以量身定制,因此非常适合游戏等需要特定预编译的应用。此外,Rollup 帮助 dApps 更高效地获取价值,更有力地控制代币经济和收入流。 随着人们对 Rollup 技术的普及达成共识,展望未来一年,多个 Rollup 将主导市场,因此首要任务是要搭建起强大的基础设施,使其发挥“钢筋混凝土”的作用。 本文将深入探讨塑造未来多 Rollup 生态的四大基本支柱: 安全基础:安全层是去中心化世界中信任的基石。在本节中,我们将探讨安全层在确保 Layer 2 交易完整性、确定信任假设和解决潜在安全风险中发挥的关键作用。 平衡可定制性与互操作性:在不同 Rollup 之间实现无缝互操作是模块化区块链世界的关键。在本节中,我们将深入探讨模块化结构带来的互操作性问题,并讨论如何解决碎片化问题,建设有凝聚力的生态。 成本分析:要让 Rollup 广泛普及并具有可行性,关键点在于降低成本,这是因为与智能合约相比,降低成本可降低经济壁垒。Rollup 的成本效率主要通过两种方式实现:一种是与其他 Rollup 聚合、分摊费用来实现规模经济,另一种是将某些任务委托给外部服务提供商来实现分工。 共享安全性:共享安全层必不可少,因为它减少了为新协议或模块层确保安全所需的时间和资源,使其具有可与以太坊等成熟平台相媲美的强大安全性。目前已有许多解决方案,如 Eigenlayer、Babylon、Cosmos 的 ICS 和 Mesh Security 等应用。 上述四个层面绘制出了一份全面的蓝图,推动着繁荣、有凝聚力的模块化区块链世界所需的基础设施建设。 信任和安全奠定了所有去中心化系统的核心。没有了信任和安全,那么无需信任的生态就成了无源之水。安全层至关重要,没有安全层,用户和总锁定价值 (TVL) 都暴露在风险中。Plasma 和 Sidechains 曾经被视为以太坊扩容的救世主,但它们的衰落为我们敲响了警钟。诸如“数据可用性”等问题破坏了信任,最终损失了用户。有鉴于此,本文将安全层作为第一部分来论述。 要理解 Rollup 的复杂性及其潜在漏洞,我们有必要剖析 Layer 2 交易的生命周期。以智能合约 Rollup 为例,接下来我们会深入研究每个阶段,并找出信任假设和潜在的安全风险: 通过 RPC 提交交易: 信任假设:RPC 端点是可靠且安全的。用户和 dApp 现在信任诸如 Alchemy、Infura 等 RPC 提供者。 安全问题:用户可能会遭到 RPC 提供者的审查,例如 Infura 和 Alchemy 阻止向 Tornardo Cash 发送 RPC 请求。RPC 提供者可能面临 DDOS 攻击,ANKR 遭 DNS 劫持攻击便是一例。 解决方案:Infura 等 RPC 提供者正积极推进去中心化路线图。此外,用户可以选择像 Pocket Network 这样的去中心化解决方案。 排序器对交易进行排序,提供预承诺:不安全状态 信任假设:用户认为排序器能够公平地对交易进行排序,并提供真实的预承诺。 安全问题:系统必须抵制审查,确保不带偏见地处理所有交易。系统必须始终保持运行状态,并且最好能够防范排序器以损害最终用户为代价获取不良最大可提取价值 (MEV)。 解决方案: 抗审查性 (Censorship Resistance, CR) 和有效性 (Liveness):根据抗审查性和有效性,当前解决方案的排名(从低到高)如下:单一排序器——POA——无需许可的 POS 排序器——共享排序器——基于 Rollup(按 Layer 1 排序)。 需要注意的是,相比于启用强制 txn 的中心化排序器,权限有限且不支持强制 txn 的 POA 的抗审查性可能更低。 至于有效性,需要考虑的另一个关键指标是提议者失败 (proposer failure),即当提议者离线时发生的失败。在这种情况下,必须确保用户仍然可以提取资金。 -即使排序器正在进行审查或拒绝工作,一些 Rollup 也允许用户自行将交易直接提交到 Layer 1 ,即应急出口(强制交易的有效性取决于具体的实施方式)。问题在于,对于资金有限的用户来说,这种做法可能成本过高,而且用户可能希望时刻具备抗审查性和有效性。 -某些 Rollup 解决方案,比如 Arbitrum 和 Fuel,允许任何人在经历了一定时间延迟后成为提议者,即自我提议。 -查看每个 Rollup 的指标:https://l2b eat.com/scaling/risk 更多其他不同解决方案的细节,可以参考我的先前帖子:https://twitter.com/yuxiao_deng/status/1666086091336880128 MEV 保护: 不同的隐私解决方案可以帮助保护用户免受抢跑交易或三明治攻击,因为交易信息被隐藏起来了(也有助于提高抗审查性)。隐藏交易信息的方法有:带有私有内存池的 FCFS(Arbitrum 和 Optimism 目前正在实施的方案)、SUAVE 的 TEE 解决方案、阈值加密(Shutter Network 正在研究此项技术)等。解决方案越复杂,交易的计算就越简化。 需要注意的是,我们需要的是保护 MEV,而不是消除 MEV。@tarunchitra 的研究总结了降低 MEV 的两个主要方向:通过强制执行排序规则来减少矿工重新排序交易的灵活性,以及引入一个竞争市场,用于重新排序、添加和/或审查交易。然而,本文得出的结论是,仅凭公平排序或经济机制都无法有效地降低所有支付函数的 MEV。在某些情况下,永远无法完全消除 MEV。 在经济上合理时,排序器执行并将交易批处理和状态根发布到数据可用性 (DA) 层;安全状态 信任假设:出块者将整个区块发布到数据可用性层上,供他人下载验证。 安全问题:如果部分数据不可用,则区块可能包含出块者隐藏的恶意交易。即使区块包含非恶意交易,将这些交易隐藏起来也可能危害系统安全。排序器必须拥有可用的交易数据,因为 Rollup 需要了解网络状态和账户余额。 解决方案: 目前在以太坊上发布数据是最安全但也是最昂贵的解决方案(在 protodankshadring 推出之后会便宜 90% ,但即使吞吐量是原来的 10 倍,对于 Rollup 来说可能仍是杯水车薪):所有以太坊节点都可下载和广播 Rollup 的交易。由于以太坊有大量节点复制和验证交易数据,因此数据很难消失或完全不可用。 -在 danksharding 之后,以太坊节点不会下载所有交易数据,而是使用 DAS 和 KZG 仅下载部分数据(类似于下面提到的 Avail 的解决方案)。 -根据模块化概念,Rollup 将交易数据发布到只负责数据可用性的数据可用性层或许是更有效的办法(以太坊的理论性能可能略差,因为除了数据可用性之外,以太坊仍然保留 Layer 1 的执行,参见下面的 EigenDA 和以太坊的性能比较)。 当前的模块化数据可用性解决方案需要在安全性和性能之间作出权衡。我们很难仅通过一个维度来比较数据可用性的安全性: -Avail 和 Celestia利用 DAS 确保数据可用性;只要有足够采样,数据就是安全的。由于数据不可用性很容易被极小部分的轻客户端检测到并恢复,因此轻客户端可以进行采样,并在很大程度上保证数据可用性。而如果没有 DAS,上述这些就无法实现。数据可用性层的去中心化程度,即网络中节点的数量,决定了安全级别和利益分配。EigenDA 不用 DAS,而是采用一种托管证明机制来防止再质押者 (restaker) 偷懒。换言之,数据可用性运营者必须定期计算一个函数,只有在下载了所有必需的数据后才能完成。如果无法正确证明 blob,则会受到惩罚(但在证明完成后就无需再进行存储)。 -确保数据复制过程(即纠删码)的准确性。EigenDA、EIP-4844 之后的以太坊和 Avail 使用 kzg 承诺来保证准确性,但这些都需要大量的计算。Celestia 采用了一种基于欺诈证明 (fraud-proof) 的设计。轻节点必须等待一段时间,然后才能确认一个区块已被正确编码,从而从它们的角度完成最终确认。(*如果有效性证明是更好的权衡选项,Celestia 可能会改用有效性证明) -数据可用性层的经济安全性(重组和勾结风险):取决于数据可用性层中的质押价值,即 Avail 和 Celestia 中的质押价值的 2/3 。 -将数据可用性层的数据可用性证明书转发给以太坊。如果数据被发布到另一个数据可用性层,而结算合约仍在以太坊上,那么我们就需要一个桥接合约来验证数据可用性在数据可用性层中是否可用以进行最终结算。 --Celestia 的 blobstream 验证来自 Celestia 的数据可用性证明上的签名。该证明是由 Celestia 验证者签名的 Layer 2 数据的默克尔根,证明数据在 Celestia 上是可用的。这一功能目前已上线测试网。 --Avail 用 optimistic 的方法来验证数据可用性证明。一旦此证明被发布到以太坊上的桥接合约,就会开始一段等待期,在此期间,除非受到质疑,否则就会认为该数据可用性证明是有效的。 --Succinct 正在与 Avail 和 Celestia 合作开发基于 zk-SNARK 的数据证明桥接,通过验证 zk 证明,使证明过程更安全、更便宜。 --对于 EigenDA,分散器将任务拆分并发布到 EigenDA 节点,然后从节点处聚合签名并将数据传递到以太坊。 最终结算:最终确认的状态 信任假设 1 : 第一个有效的 Rollup 区块在主链上发布后,Rollup 全节点(可以在不依赖其他证明的情况下完全计算状态的节点)可以在其高度上对其进行最终结算,因为 Rollup 全节点拥有必要的数据和计算资源来快速验证该区块的有效性。然而,对于轻客户端等其他第三方而言,情况并非如此。它们要依赖有效性证明、欺诈证明或争议解决协议来无信任地验证状态,而无需独立运行完整的链副本。 安全问题 1 : 对于 ZK Rollups,Layer 1 验证零知识证明并且仅接受正确的状态根。困难主要在于零知识证明的成本和生成过程。 另一方面,Optimistic Rollups 依赖于一个前提,即至少有一个诚实方会迅速提交欺诈证明来质疑任意恶意交易。然而,当前大多数欺诈证明系统还不是无许可的,而且仅有少数验证者会提交欺诈证明。 解决方案 1 : 由 Arbitrum 的 BOLD 协议提供的无许可欺诈证明。目前欺诈证明受许可的主要原因是防范延迟攻击: -在挑战期间,除了提议者之外的任何质押者都可以发起挑战。然后,提议者需要向每个挑战者逐一进行辩护。在每轮挑战结束时,失败方的质押将被罚没。 -在延迟攻击中,恶意方(或一组恶意方)可以通过发起挑战并故意输掉争议和质押,阻止或推迟将结果确认在 Layer 1 链上 -为解决该问题,BOLD 挑战协议确保世界上的单个诚实方可以战胜任意数量的恶意索赔,从而保证了 Optimistic Rollups 的结算确认时间不会超过某个上限值。 Witness Chain 可以作为新的 Optimistic Rollups 的监测方,以确保至少有一个诚实方会对无效状态发起挑战: -诸如 Arbitrum 和 Optimism 之类的成熟 Rollups 有足够的内在激励,促使第三方提供者(如浏览器、Infura 类服务及其基金会)监控链状态,并在必要时提交欺诈证明。然而,新的 Rollups 或应用链可能不具备这种级别的安全性。 -Witness Chain 采用了一种独特的激励机制,即“勤勉证明” (Proof of Diligence),确保监测方(验证者)始终有动力监控和验证交易,从而保证提交到主链的状态是正确的。这种机制保证每个验证者都会尽职尽责,因为验证者获得的奖励对于每个节点而言都是具体且独立的。换句话说,如果一个验证者发现了赏金,它就不能与其他验证者分享这笔奖励,从而确保了每个节点都进行独立的验证。此外,Witness Chain 允许 Rollups 指定定制要求(如验证者的数量及其地理分布,地理分布由其独立服务支持的“位置证明”提供),因此多了几分灵活性,确保了安全性和效率之间的平衡。 * Watchtower 网络也正成为 Rollup 堆栈中的一个新层,为其他相关应用程序(如 Rollup 安全性本身、互操作协议、通知服务和 keeper 网络等)的执行提供全方位的安全性。未来将发布更多细节。 信任假设 2 : 智能合约 Rollups 的整个结算过程都是用 Layer 1 的智能合约编写的。假设数据可用性层上的智能合约逻辑准确、无漏洞,且没有恶意升级。 安全问题 2 : 智能合约 Rollups 的桥接和升级受多签钱包控制。桥接可通过恶意升级恣意窃取用户资金。 解决方案 2 : 眼下最普遍的思路是添加时间延迟,如果用户不同意计划的升级,可以退出。然而,这种解决方案要求用户不断监控其所有代币所在的链,以防他们需要退出。 Altlayer 的信标层 (Beacon Layer) 可以作为所有 Rollup 的社交层,为其提供升级服务。无论以太坊上的桥接合约是否升级,与信标层 Rollup 验证器一起运行 Rollup 的排序器都可以以社交方式分叉 Rollup。 长期来看:Enshrined Rollup 多年来一直是以太坊路线图的最终目标。除了在 Layer 1 上 enshrine 入桥接/欺诈证明验证器外,也 enshrine 入了结算合约。 -以太坊 PSE 正朝着这个方向努力。 至于主权 Rollup,主要区别在于链状态由 Rollup 全节点结算,而不是 Layer 1 中的智能合约。更详细的比较可以参考https://www.cryptofrens.info/p/settlement-layers-ethereum-rollups 需要注意的是,安全性提高不代表性能提高。通常情况下,安全措施的增加需要权衡可扩展性。因此,平衡这两者之间的关系至关重要。简而言之,Rollup 提供了灵活性,可以根据个人偏好选择不同级别的安全假设。这种适应性是模块化世界的一个显著特点,可以为特定需求提供量身定制的方案,同时保持系统的完整性。 在模块化世界中有一句广为人知的格言:“模块化,而非最大化。”(“Modularism, not maximalism.”) 如果 Rollup 不能安全高效地进行互操作,那么模块化就不是最大化,而是碎片化。有鉴于此,必须解决不同 Rollup 之间的互操作性。 首先让我们回顾一下,单体链 (monolithic chain) 是如何实现互操作性的。简言之就是通过验证其他链的共识或状态来实现跨链操作。目前市场上出现了各种不同的方法,区别在于谁负责验证(官方实体、多重签名机制、去中心化网络等),以及如何确保验证的正确性(通过外部方、经济担保、Optimistic 机制、零知识证明等)。如果想深入了解这个话题,可以查看我最喜欢的桥接文章:关于互操作性的思考 (Thoughts on Interoperability)。 随着模块化的兴起,互操作性问题变得更加复杂: 碎片化问题: Rollup 激增预计将显著超过 Layer 1 的数量,这是因为在 Layer 2 上部署要比在 Layer 1 上容易得多。这会导致网络高度碎片化吗? 尽管单体区块链提供了一致的共识和状态以便进行简单的验证,但如果模块化区块链有三个(甚至可能四个)不同组件(数据可用性、执行、结算和排序),验证过程会是怎样的呢? 数据可用性和结算层成为主要的数据源。由于 Rollup 本身提供了执行证明,执行验证已经是可用的了。排序发生在发布到数据可用性层之前。 可扩展问题: 随着新的 Rollup 引入,一个问题浮出水面:我们能否及时提供桥接服务容纳新的 Rollup?即使构建 Rollup 无需许可,你可能还需要花费 10 周的时间说服其他人添加一个 Rollup。当前的桥接服务主要面向主流的 Rollup 和代币。未来可能有大量 Rollup 涌入,人们担心这些服务是否能够进行有效评估并推出相应的解决方案支持这些新的 Rollup,同时不会影响安全性和功能性。 用户体验问题: Optimistic Rollup 的最终结算需要七天时间,这比其他 Layer 1 要长得多。目前面临的挑战在于如何解决 Optimistic Rollup 官方桥接的七天等待时间。零知识证明的提交也存在时间延迟,因为 Rollup 通常会等待积累大批交易后再提交证明,以节省验证成本。像 StarkEx 这样的热门 Rollup 通常每隔几个小时才会向 Layer 1 发布一次证明。 为节省成本,提交给数据可用性/结算层的 Rollup 交易数据会有时间延迟(如上所述,Optimistic Rollup 需要 1-3 分钟,而 zk Rollup 则需几个小时)。对于需要更快、更安全的最终结果的用户,这一点需要抽象出来。 好消息是,针对这些挑战已经出现了一些新的解决方案: 碎片化问题: 尽管生态中的 Rollup 层出不穷,但值得注意的是,目前大多数智能合约 Rollup 共享一个通用的结算层,即以太坊。这些 Rollup 之间的主要区别在于其执行层和排序层。为了实现互操作性,这些 Rollup 只需要相互验证共享结算层的最终状态。然而,对于主权 Rollup,情况则会稍微复杂一些。由于结算层不同,主权 Rollup 要实现互操作性有一定的挑战。解决这个问题的一种方法是建立点对点(P2P)结算机制,每条链直接嵌入另一条链的轻客户端,促进相互验证。另一种方法是,这些主权 Rollup 可以首先桥接到一个中心化结算中心,然后作为连接其他链的中转站。这种以中心为核心的方法简化了流程,并确保了不同 Rollup 之间的互联更为紧密。(类似于 Cosmos 互操作的状态) 除了以太坊之外,其他潜在的结算中心还包括 Arbitrum、zkSync 和 StarkNet,为基于它们构建的 Layer 3 充当结算中心。Polygon 2.0 的互操作层也为构建在上面的 zk Rollup 充当中心枢纽。 总之,尽管 Rollup 数量及其变体正不断增加,但结算中心的数量仍然有限。这有效地简化了拓扑结构,将碎片化问题缩小到了几个关键中心。尽管 Rollup 的数量将比替代的 Layer 1 更多,但由于 Rollup 通常处于相同的信任/安全范围内,因此 Rollup 之间的交互比 Layer 1 之间的交互更简单。 不同结算中心之间的互操作性可参考前面提到的目前单体链之间的互操作方式。 * 此外,为了消除用户端的碎片化问题,包括 ZKSync 在内的某些 Layer 2 已经集成了本地账户抽象,以便实现无缝的跨 Rollup 体验。 可扩展问题 Hyperlane(为模块化链提供模块化安全性)和 Catalyst(无需许可的跨链流动性)应运而生,以解决受许可的互操作性问题。 Hyperlane 的本质是创建一个标准化的安全层,可以应用于各种链,使这些链天然具有互操作性。 Catalyst 旨在为模块化链提供无需许可的流动性。Catalyst 充当桥梁,让所有新链都可与以太坊和 Cosmos 等主要中心无缝连接流动性并进行交换。 Rollup SDK/RAAS 提供商在其生态内提供原生桥接服务 目前,新的 Rollup 大多是通过现有的 Rollup SDK 或 RAAS 服务启动的,因此它们本质上是可以与使用相同服务的其他 Rollup 互操作的。例如,对于使用 OP Stack 构建的基础设施来说,基础层就是一个共享的桥接标准,允许资产在共享 OP Stack 代码库的所有内容之间无缝移动。对于通过 Altlayer 启动的 Rollup,它们都被封装到信标层,信标层则充当结算中心,并确保安全的互操作性。而通过 Sovereign Labs 或 zksync 推出的 Rollup 则依靠证明聚合,直接与彼此进行互操作(稍后将进行更详细的解释)。 用户体验问题: 在深入讨论这一部分之前,让我们首先认识一下不同级别的承诺及其时间延迟: 一些参与方对 Layer 2 的第一阶段预承诺比较满意,例如像币安这样的交易所只需等待一定数量的 Layer 2 区块,就可以将交易视为已确认,而无需等待批处理提交到 Layer 1 。 Hop 协议等桥接提供商会在发送链上获取尽可能多的区块,并基于 Layer 1 共识(第二阶段)来确定终结。 对于信任最小化的桥接和使用官方桥接从 Layer 2 提取资金到 Layer 1 的用户而言,这段时间或许就太长了(数小时到 7 天不等)。安全基础
平衡可定制性和互操作性