Ethrex L2:构建 Rollup 的一种不同方法

本文介绍了Ethrex L2,一个使用Rust实现的以太坊协议,它同时作为L1执行客户端和ZK-rollup客户端运行。Ethrex L2具有简单、极简和模块化的特点,旨在降低复杂性带来的成本。它支持多种证明后端,并提供中心化、Validium和Based Rollup等多种部署选项,以满足不同的需求。

以太坊 Layer 2 的格局已经发生了巨大的变化。最初的实验性扩展方案已经成熟为一个由 rollups 组成的多元化生态系统,每个 rollup 在安全性、去中心化和性能方面都做出了独特的架构选择。Optimistic rollups 用立即最终性换取了简单性。ZK rollups 投资于密码学的复杂性,以实现更快的结算。Based rollups 直接从 L1 验证者那里继承了以太坊的去中心化特性。

每种方法都反映了不同的优先级。每种方法都有其自身的权衡。

这篇文章介绍了 ethrex L2,一个以不同优先级构建的 rollup 堆栈:简单性、极简主义和模块化;目标是抵消复杂性带来的成本,并随着时间的推移而复合。

什么是 Ethrex?

Ethrex 是以太坊协议的 Rust 实现,具有两种运行模式:

ethrex L1 作为一个标准的以太坊执行客户端运行,与 Geth、Nethermind、Reth 等一起参与网络。它实现了以太坊规范,重点是正确性和最小的资源使用。

ethrex L2 作为一个 ZK-rollup 客户端运行,其中区块执行使用零知识证明进行证明,并在以太坊 L1 上进行验证。L2 通过密码学验证而不是信任假设来继承以太坊的安全保证。

Ethrex 与众不同之处在于,从一开始它就被构想为两者,而不是带有 L2 的 L1 客户端,或者恰好与 L1 实现共享代码的 L2 堆栈。这种双重性质是有意的,它影响了整个架构决策。

该代码库大约有 62,000 行代码,包括 EVM 实现、L2 堆栈、ZK prover 集成、TEE 证明代码和一个以太坊 SDK。 其他执行客户端通常在其主存储库中超过 200,000 行,通常还有其他依赖项将其推高到超过 300,000 行。

构建 Ethrex 的 LambdaClass 团队曾在密码学、分布式系统、编程语言设计和高频交易领域工作过,他们的背景影响了整个项目中可见的工程选择。

理念:简单性作为工程选择

许多已建立的区块链客户端随着时间的推移会积累复杂性。 这种情况自然会发生:遗留功能需要为现有用户提供支持,雄心勃勃的路线图会增加抽象层,而交付的压力可能会导致技术债务无法解决。 其结果通常是难以维护、审计和推理的系统。

Ethrex 采取了不同的路径。 该理念简单地说:“保持简单和最小化。”

这不仅仅是为了极简主义而极简主义; 有切实的理由来关心代码大小和复杂性:

安全性。 更少的代码行意味着更小的攻击面。 安全审计员可以更彻底地审查代码库。 当隐藏的代码较少时,漏洞更容易被发现。

可维护性。 简单的代码更容易理解、修改和调试。 新的贡献者可以更快地提高工作效率。 团队可以迭代而无需对抗累积的复杂性。

性能。 当代码库足够小,可以装在你的脑海中时,查找和修复瓶颈就会变得很简单。 无需追踪抽象层来理解时间花在哪里。

可审计性。 对于在受监管的环境或高风险应用中部署 rollups 的团队来说,能够验证代码的作用非常重要。 6 万行代码的代码库是可审计的。 具有复杂继承层次结构的 30 万行代码库完全是另一项挑战。

ethrex 团队每天跟踪代码大小,并设有严格的限制,如果超出限制则会触发审查。 他们会主动重构以删除死代码。 该代码库仅包含 12 个 traits(被认为过多;正在积极减少)和 4 个宏(3 个用于测试,1 个用于指标)。

这种规范延伸到依赖关系管理。 与引入可能带来自身复杂性的外部库相比,垂直集成是更可取的。 仅支持合并后的以太坊分叉; 故意删除遗留功能以避免维护不再有用的代码。

最终的代码库中,大多数开发人员都可以理解整个系统。 没有只有一个人理解的“闹鬼森林”或“此处有龙”区域。

L2 架构概述

ethrex L2 作为 ZK-rollup 运行,这意味着所有执行都在链下进行,而以太坊 L1 充当验证和数据可用性层。 以下是各个部分如何组合在一起。

Ethrex L2 架构

执行流程

用户将交易提交到 L2 网络。 Sequencer(排序器) 收集这些交易并生成 L2 区块。 区块被组织成批次以提高效率,因为将每个区块单独发布到 L1 的成本将非常高昂。

当一个批次准备好时,排序器会将其提交到 L1。 此提交包括(除其他数据外):

  • 新的 L2 状态根(所有帐户余额、合约存储等的密码学摘要)
  • 最新的区块哈希
  • 交易数据(存储在 EIP-4844 blobs 中)
  • 任何待处理提款的 Merkle 根

此时,该批次已“提交”但尚未“验证”。 L2 状态已发布,但没有证据表明它的计算是正确的。

然后,Prover(证明者) 生成批次执行的零知识证明。 此证明证明:给定先前的状态和批次中的交易,根据 EVM 规则,新的状态根是正确的。

一旦生成证明,就会将其提交到 L1 进行验证。 OnChainProposer 合约检查该证明,如果有效,则该批次将变为“已验证”。 此时,L2 状态继承了以太坊的安全性:任何人都可以验证 L1 上的证明,并确认状态转换是正确的。

主要组件

Block Producer(区块生产者)。 从 mempool 创建 L2 区块,根据 gas 限制和排序规则将交易组合成区块。

L1 Watcher: 监视以太坊 L1 上来自桥合约的存款事件。 当用户在 L1 上存入资产时,watcher 会获取这些事件并在 L2 上创建相应的存款交易。

L1 Committer: 处理将批次提交发布到 L1,管理 gas 估算、nonce 处理和交易重试。

Proof Coordinator: 充当管理与 provers 通信的服务器。 它确定需要证明哪些批次,提供必要的输入数据,并接收已完成的证明。

L1 Proof Sender: 将已验证的证明提交到 L1,管理与 OnChainProposer 合约的交互。

智能合约

CommonBridge (L1):处理 L1 和 L2 之间的存款和提款。 用户调用 deposit() 将资产转移到 L2,并使用 Merkle 证明调用 claimWithdrawal() 以提款回到 L1。

OnChainProposer (L1):管理批次生命周期。 Sequencers 调用 commitBatch() 以发布新批次,并调用 verifyBatch() 以提交证明。 该合约跟踪哪些批次已提交和验证。

CommonBridgeL2 (L2):桥的 L2 端。 处理提款启动并处理存款铸币。

数据可用性

交易数据使用 EIP-4844 blobs(以太坊的专用 L2 数据存储机制)发布。 每个 Blob 大约 128KB,并且比 calldata 便宜得多。

Ethrex 发布完整的 RLP 编码区块,而不是状态差异。 这提供了完整的交易可见性,这对于抗审查以及允许任何人独立重建 L2 状态非常重要。

多重证明架构

ethrex 的一个显着特点是原生支持多个证明后端:

  • SP1(Succinct):一个将 Rust 程序编译为 circuits 的 zkVM。 支持 CPU 和 GPU 证明。
  • RISC Zero:另一个基于 RISC-V 的 zkVM,具有自己的证明系统。 同样支持 CPU 和 GPU。
  • TEE 证明 (TDX):使用可信执行环境来证明执行正确。 比 ZK 证明更快,但具有不同的信任假设。

为什么多重证明支持很重要?

  • 冗余。 如果一个证明系统存在 bug 或漏洞,你可以回退到另一个。
  • 灵活性。 不同的应用程序有不同的需求。 TEE 为可以接受其信任模型的应用程序提供更快的终结性。 ZK 证明为需要它们的应用提供更强的保证。
  • 面向未来。 ZK 领域发展迅速。 新的证明系统涌现,现有的证明系统得到改进。 支持多个后端意味着你可以采用改进,而无需重写堆栈。

这也反映了一个理念选择:底层密码学应该由专门从事这项工作的团队构建(Starkware 的 Stwo、Succinct 的 SP1、RISC Zero 等)。 Ethrex 的工作是插入他们的工作,而不是重新发明它。

这种解耦在数字中显示出来:整个 l2/prover 目录大约有 1,300 行代码。 在其他项目中,与 ZK 相关的代码通常匹配或超过非 ZK 代码库的大小。

部署选项

Ethrex 提供三种部署模式,每种模式都有不同的权衡。 选择取决于你对去中心化、成本和运营复杂性的要求。

Vanilla L2 (中心化排序器)

最简单的部署模型。 单个运营方控制排序器,生成区块并将批次提交到 L1。 它是如何运作的?

  • 一个实体运行排序器节点并决定交易排序
  • 该实体必须将有效的证明发布到 L1
  • 用户信任运营方不会审查交易(尽管他们总是可以通过 L1 强制退出)

权衡:

  • 易于操作和推理
  • 更低的运营开销
  • 中心化排序器可以审查或重新排序交易
  • 适用于私有部署、企业应用程序或快速入门

Validium

与 vanilla L2 类似,但交易数据未发布到 L1。 只有状态提交上链。

  • 排序器以 vanilla 模式运行
  • 状态根和证明发布到 L1
  • 交易数据存储在链下(需要单独的数据可用性解决方案)
  • 用户仍然可以通过 ZK 证明验证状态转换

权衡:

  • 显著降低 L1 成本(无需发布 blob)
  • 更高的吞吐量潜力
  • 需要信任 DA 层
  • 如果 DA 层发生故障,状态可能会变得无法恢复
  • 适用于 L1 DA 成本过高的超高吞吐量应用程序

Based Rollup(开发中)

去中心化排序,其中以太坊 L1 验证者参与区块生产。

  • 排序器通过 L1 上的 SequencerRegistry 合约注册
  • 领导权通过荷兰式拍卖机制确定
  • 在注册排序器之间进行循环选举(每个排序器 32 个批次)
  • 任何人都可以验证证明,而不仅仅是首席排序器
  • 节点通过 L1 同步或 P2P gossip 遵循首席排序器

权衡:

  • 继承以太坊的去中心化
  • 排序没有单点故障
  • 运营上更复杂
  • 目前正在积极开发中(我们最近完成了我们的第一个 MVP 里程碑)
  • 适用于优先考虑去中心化的公链

Based Rollup 的实现正在与即将推出的名为 Rogue 的无需许可 L2 合作开发。 这为基于排序工作提供了真实的部署目标。

Based Rollups:去中心化之路

基于排序值得更多解释,因为它代表了一种从根本上不同的 rollup 架构方法。

在当今大多数 rollups 中,中心化排序器决定交易排序。 这会创建一个单点故障和潜在的审查。 排序器运营商拥有很大的权力:他们在任何人之前看到交易,可以为了自己的利益重新排序(MEV 提取),并且可以选择包含哪些交易。

Based Rollups 颠覆了这个模型。 以太坊 L1 验证者参与 L2 区块生产,而不是使用专门的排序器。 “based” 名称指的是使用以太坊的基础层进行排序。

Ethrex 的基于排序方法:

  • 无需许可的注册。 任何节点都可以通过在 SequencerRegistry 合约上注册并发布抵押品(至少 1 ETH)来成为排序器。
  • 基于拍卖的领导权。 排序权通过荷兰式拍卖机制分配。 排序器竞标在给定期间生成区块的权利。
  • 期间内的循环。 在分配的周期内,注册的排序器以循环方式轮流(每个排序器 32 个批次)。
  • 任何人都可以验证。 证明验证是无需许可的。 首席排序器提交批次,但任何人都提交有效的证明。
  • L1 同步回退。 非领导者的节点可以通过从 L1 读取已提交的批次来遵循当前状态。

基于功能的开发正在通过以下里程碑进行:

  • 里程碑 1 (MVP): 排序器注册、循环选举、L1 同步。 完成。
  • 里程碑 2 (P2P): 区块 gossip、交易广播、同步优化。 进行中。
  • 里程碑 3 (Testnet): 带有监控的公共测试网部署。
  • 里程碑 4: 生产强化和优化。

那么 ethrex L2 堆栈提供什么?(以及要考虑什么)

在评估任何技术时,诚实地对待能力和局限性非常重要。 一方面,Ethrex L2 提供:

  • 完全 EVM 等效性: 标准以太坊工具有效。 现有合约无需修改即可部署。 相同的开发流程适用。
  • 多重证明支持: SP1、RISC Zero 和 TEE 证明开箱即用。 在它们之间切换或同时使用多个。
  • L1/L2 桥: 使用正确的 Merkle 证明验证的存款和提款功能。
  • Aligned Layer 集成: 对于使用 Aligned 的证明验证基础设施的团队,可以使用集成。
  • 简单的部署: 单个二进制文件处理 L1 合约的部署和 L2 节点的运行。

另一方面,如前所述,Based Rollup 的支持正在进行中,但功能可用于测试。 与其他堆栈相比,工具、文档和社区资源的生态系统较小。

谁在使用 Ethrex 构建?

Aligned Layer 选择 ethrex 作为其 Rollup-as-a-Service 平台的基础。 他们的理由是性能、极简主义和与Based Rollup 兼容的架构与他们的需求一致。 该集成支持使用 Aligned 的证明验证基础设施一键部署 rollup。

Rogue 是一个即将推出的基于 ethrex 构建的无需许可的基于 L2。 它既充当基于排序功能的生产部署和开发驱动因素。

金融机构表示对用于私有 L2 部署的 ethrex 感兴趣。 审计较小的代码库的能力和部署选项的灵活性符合企业的需求。

最后,与以太坊基础设施的集成继续推进。 Ethrex 已被添加到以太坊的官方 Hive 测试框架和用于启动测试网络的 Kurtosis 包中。

LambdaClass 方法

LambdaClass 以特定的 信念 接近加密技术。 开源是必要的,而不是可选的,因为去中心化需要透明度。 公开构建、帮助其他人加入以及创建比单个项目更大的运动是加密技术实现其目标的实际必需品。

这项工作必须首先将工程放在首位,以此表达对构建技术卓越系统的更广泛承诺。 我们为我们在创纪录的时间内取得的成就感到非常自豪。

Ethrex 代表了对在趋向于复杂性的领域中保持简单的赌注。 我们鼓励重视可审计代码库、部署灵活性以及从一开始就为基于排序而设计的架构的团队来了解一下。

代码是开放的。 文档位于 docs.ethrex.xyz。 该团队可以通过 TelegramGitHub 联系。

  • 原文链接: blog.lambdaclass.com/eth...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
lambdaclass
lambdaclass
LambdaClass是一家风险投资工作室,致力于解决与分布式系统、机器学习、编译器和密码学相关的难题。