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

互联网 阅读 25 2025-03-07 13:10:17

原文作者 | Taiko Labs

编译| (@OdailyChina

译者| 叮当(@XiaMiPP

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

编者按:还记得当年分片(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?

需要记住,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闪亮登场

需要记住,本地 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 会自动继承所有改进,而不需要单独适配,实现与以太坊发展路线的长期兼容性。

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

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

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

如何延长证明窗口?

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

  • 区块 N 提议交易

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

  1. 执行所有交易

  2. 计算状态变更

  3. 计算状态根(stateRoot)

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

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

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

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

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

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

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

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

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

免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:SBF先生,33岁生日不快乐 下一篇:3月八大热门测试网交互项目(附交互指南)

您可能感兴趣