分片“老古董”华丽转身,本地Rollup闪亮登场

币安下载

Binance币安交易所

全球最大加密货币交易所,注册100%可领取100USDT奖励!通过本站注册不仅可以享受手续费折扣同时有机会获得币安周边

点击注册 更多线路

更多交易所入口

一站式注册各大交易所、点击进入加密世界、永不失联,币安Binance/欧易OKX/GATE.IO芝麻开门/Bitget/抹茶MEXC/火币Huobi

点击进入 永不失联

原文作者 | Taiko Labs

编译| 比特币行情网(@OdailyChina

译者| 叮当(@XiaMiPP

编者按:还记得当年分片(Sharding)的热闹吗?那时候它可是区块链界的“流量密码”,结果以太坊冷静一想,放弃了这个烫手山芋。如今,本地 Rollup 卷土重来,通过执行预编译合约(EXECUTE Precompile)和优化以太坊区块处理结构,不仅让 Rollup 更安全、更灵活,还顺手给以太坊L1来了个横向大扩容,为未来的实时证明开了条路。

以下为 Taiko 实验室发布的原文内容,由比特币行情网编译。由于本文的技术性较强,为保证文章的可读性,Odaily 进行了适当的删减,尽可能清晰易懂呈现。

引言

分片(Sharding)在 2017-2020 年间是一个热门话题。当时,Harmony、Zilliqa 和 Elrond 等不同团队在其区块链中实施了分片技术。这种技术本质上是将网络划分为多个较小的、并行运行的链(称为“分片”),这些分片可以同时处理交易,以此作为扩展分布式系统的一种直接方式。

分片也是以太坊 2.0 时代被社区认真讨论的话题。然而,以太坊最终决定不采用分片方案,主要基于以下四个挑战:  

1. 思维模式的不同(Mindset Differentiations)

在这种分片模式下,协议本身会自上而下强制规定确切的分片数量。这些分片是按照预定义模板运行的单一链,缺乏可编程性,并且本质上只是 L1(第一层区块链)的多个相同副本。

2. 乐观安全性(Optimistic Security)

当时,为了保证分片的诚实性,需要使用乐观证明(Optimistic Proofs),而零知识(ZK)技术尚未成熟。这意味着必须在链上系统性地管理欺诈证明(Fraud-Proof)逻辑。

3. 复杂性(Complexity)

在 L1 层实现分片会显著增加协议的复杂性,特别是在管理快速的预确认(Preconfirmation)和较慢的最终确认(Final Confirmation)系统,以及协调不同安全级别的分片方面。

4. 共识过载(Overload Consensus)

在 L1 层追求更高的可扩展性可能会增加中心化风险。如果在基础层(Base Layer)实现分片,这种风险可能会影响整个协议,而不像现在那样仅限于单个 L2(第二层扩展方案)。

本地 Rollup(Native Rollups)本质上可以被视为分片的一种回归,但这次有所不同。我们已经吸取了教训,并且具备了更好的技术和经验。

什么是本地 Rollup?

需要记住,Rollup 由数据、排序(Sequencing)和执行(Execution)模块组成。本地 Rollup 直接使用以太坊自身的执行环境(Execution Environment)作为其执行模块。我们可以将其称为 L1 的可编程执行分片(Programmable Execution Shards)。

要理解如何将 L1 执行环境作为 Rollup 使用,可能会有些复杂。为了在 Rollup 中消费 L1 执行环境,我们需要能够在 EVM 内部执行另一个 EVM(EVM inside EVM)。因此,L1 需要能够感知本地 Rollup 在每个区块中的状态转换(State Transition)。要实现这一点,我们需要一个<预编译合约(Precompile)>来提供支持。

EXECUTE 预编译合约

EXECUTE 预编译合约提供了一种机制,使得一个 EVM 上下文能够验证另一个 EVM 上下文的执行结果,同时保持相同的执行规则和状态转换逻辑。

预编译合约接受三个输入参数:

  • pre_state:执行前的 32 字节状态根(State Root)

  • post_state:执行后的 32 字节状态根

  • witness_trace:执行轨迹,包含交易和状态访问证明

    预编译合约的核心是断言(Assertion):它会验证从 pre_state 开始执行 trace 是否能得到 post_state。如果状态转换函数有效,预编译合约会返回 true。

    执行轨迹需要对所有验证者可用(以 blobs 或 calldata 形式),以便验证者可以重新执行计算并验证状态转换的正确性。值得注意的是,该预编译合约不会将证明(Proof)作为输入。这意味着协议本身不会强制执行任何特定的证明系统,而是通过 p2p 网络的 Gossip 频道传播不同类型的证明。

    Gas 计费模型

    以太坊的计算资源有限,因此 Gas 机制用于管理这些资源。EXECUTE 预编译合约实现了一个 Gas 计费模型来管理计算资源:

    • 基础成本(Base Cost):预编译合约会收取固定的 Gas 费用 EXECUTE_GAS_COST,再加上执行轨迹使用的 Gas 乘以当前 Gas 价格。

    • 累计 Gas 限制(Cumulative Gas Limit):类似于 EIP-1559 机制,管理和定价所有 EXECUTE 调用在 L1 区块中的总 Gas 消耗:

      • EXECUTE_CUMULATIVE_GAS_LIMIT:一个区块中所有 EXECUTE 调用的最大 Gas 限制。

      • EXECUTE_CUMULATIVE_GAS_TARGET:目标 Gas 使用量,以便进行高效定价。

        这个模型类似于 blob 中的数据可用性(DA)定价机制。

        需要记住,本地 Rollup 和 L1 的 SNARK 化(SNARKifying the L1)这两个概念经常被混淆在一起。SNARK 化 L1 是一种纵向扩展(Vertical Scaling)方法,通过 SNARK 化执行(如 zkEVM)和共识(如 Beam)来消除 Gas 限制,从而提升 L1 的性能。而本地 Rollup 则是横向扩展(Horizontal Scaling)L1,通过可编程方式创建任意数量的 EVM 副本,实现更高的可扩展性。

        为什么本地 Rollup 更有优势?

        1. 安全性

        当前的 Rollup 设计需要安全委员会(Security Councils)来更新链,以应对潜在的漏洞。而本地 Rollup 依赖于以太坊的<社会共识(Social Consensus)>进行治理。运营商无需担心担心漏洞问题,因为以太坊社区会负责维护和修复。

        2. 简化 L1 同步可组合性(Synchronous Composability)

        基于 L1 的 Rollup 接近于实现同步可组合性,但要求 L1 和 L2 的区块由同一构建者(Builder)同时构建。本地 Rollup 可以直接通过 EXECUTE 预编译合约验证另一个本地 Rollup 的状态,而无需额外的信任假设。

        3. 向前兼容性(Forward Compatibility)

        随着 L1 EVM 进化,本地 Rollup 会自动继承所有改进,而不需要单独适配,实现与以太坊发展路线的长期兼容性。

        初始实现方案:重新执行

        在本地 Rollup 的背景下,重新执行(Re-execution) 被视为初始实现方案。重新执行指的是验证者直接执行交易轨迹(transaction trace),以验证本地 Rollup 的状态转换是否有效,而不是依赖 SNARK 证明。如果 EXECUTE_CUMULATIVE_GAS_LIMIT 维持在较小范围内,这种重新执行对于验证者来说仍然是可管理的。

        优化执行方案:实时证明(Real-Time Proving)

        在重新执行(Re-execution)模式下,验证者必须自行处理所有交易,其吞吐量受 EXECUTE_CUMULATIVE_GAS_LIMIT 参数的限制。而<实时证明(Real-time Proofs)>可以显著提高这一限制,因为验证者只需验证证明,而无需重新执行所有交易。

        随着行业快速向实时证明发展,我们需要采取措施扩大本地 Rollup 的证明窗口。为了争取更多的证明时间,需要调整当前以太坊的区块处理结构。

        如何延长证明窗口?

        当前以太坊的区块处理流程

        在现有的结构下,以下所有步骤必须在 12 秒内完成(每 4 秒一个阶段),才能进入下一个区块:

        • 区块 N 提议交易

        • 在验证/确认区块之前,必须完成:

          1. 执行所有交易

          2. 计算状态变更

          3. 计算状态根(stateRoot)

          4. 计算交易回执和日志(receipts & logs)

            只有完成上述所有步骤后,区块才能被验证和确认。

            按照目前的流程,如果要实现与 L1 的同步可组合性,证明必须在 4 秒内 完成。然而,目前 ZK 技术尚不成熟,还无法在 4 秒内 生成以太坊区块的证明,因此我们需要在证明流程上引入更大的灵活性。

            为了给本地 Rollup 争取更多证明时间,我们需要调整以太坊当前的区块处理结构。例如:

            • 延迟 state_root 计算:将 state_root 计算从关键路径中移除,使其在验证者空闲时间计算。

            • 延迟执行(Delayed Execution):将区块验证与交易执行分离,优化共识效率,同时为证明生成提供更长时间。

              常见问题(FAQ)

              Taiko 将使用哪种类型的证明?

              不会采用单一类型的证明。我们希望证明者(provers)和客户端(clients)都具有多样性。验证者可以根据自身选择主观决定使用哪种证明方式。

              关于不同证明类型的多样性,请参阅 EthProofs。

              谁来生成证明?

              任何人都可以生成证明。即使只有一个证明者,链仍然可以正常运行。目前仍存在一个开放性问题:如何在协议层面激励证明者。

              证明之间是否会达成共识?

              不会。证明不会在链上进行共识,而是通过链下(off-chain)传播。网络中只需要达成共识,即某个地方存在有效的证明即可。