在过去的几周里,我没有分享关于 @ethrex_client 的很多更新,这是我们的 @class_lambda @ethereum L1 执行客户端和 ZK L2 堆栈。 请关注 @ethrex_client 以了解我们正在做的所有事情。 在 L1 中,我们已经成功运行了以太坊测试网,而在 L2 中,我们正在为我们与合作伙伴共同构建的身份和 DeFi 应用程序运行测试网。我真心相信,我们接近拥有最简单的代码库和堆栈,以便于维护、升级和修改以太坊。如果没有检查 @NethermindEth 和 @go_ethereum 的代码,我们无法达到这一点。 与我的合作伙伴 @rj_aligned、@fran_aligned 来自 @alignedlayer 以及 @SantiDiPaolo、@AguuMg 来自 @PolFinance_,我们即将发布关于 RWA L2 的第一份白皮书,该白皮书将由 Ethrex 和 @alignedlayer 提供支持。我们还有很多其他项目,但我对这个项目特别兴奋,因为它将连接 TradFi 和 DeFi 之间一个非常有趣的用例。我们有一些行业中最强大的团队作为顾问和合作伙伴。我迫不及待想分享更多关于这个项目的信息。 更新 L1 我们在多个方面进行了工作。我们通过 Grafana 改进了可观察性,移除了未使用的功能以简化代码库,并添加了对 `engine_getBlobsV1` 端点的支持。 更新日志: feat(l1): `engine_getBlobsV1` 请求端点 (#3636) chore(l1): 移除 redb 支持 (#4103) refactor(l1): 从区块链 crate 中移除不必要的 usizes (#4110) fix(l1): 移除不必要的状态克隆 (#4117) fix(l1): 使用正确的 docker 镜像启动本地网络 (#4131) chore(l1): 将区块时间添加到 grafana 仪表板 (#4112) fix(l1): 从区块执行中减去数据库读取时间 (#4051) chore(l1): 指标改进 (#4118) chore(levm): 改进新的 levm 测试运行器的组织 (#3958) L2 根据我们的极简主义方法,我们从未使用的 L2 数据库中移除了大量代码。我们继续简化代码库并消除死代码。此外,在修复与 gas 价格相关的错误后,CI 也得到了稳定。 我们在两个方面对 L2 进行基准测试: - L2 网络维护成本:我们通过模拟不同交易工作负载和网络配置的各种场景来微调 L2 参数。目标是确定用户必须承担的每笔交易的近似维护佣金成本,以使网络实现自我可持续性。 - 隔离区块执行生成基准:使用 ethrex-replay 工具,我们正在证明来自 Hoodi、Sepolia 和 Mainnet 的区块,以识别代码库中的潜在错误并测量我们的证明者的性能。 在 ethrex-replay 方面,该工具已经足够稳定,我们已经建立了基础设施,以定期重放公共网络的区块执行和证明。我们现在正在解决这些运行中出现的错误。一些错误源于 ethrex 中的逻辑错误,而其他错误与内存使用有关。前者大多已解决,我们在后者上取得了显著进展。 我们还开始关注 @ziskvm 和 @0xLita ZKVM 的潜在短期集成。我们已经支持 @RiscZero 和 @SuccinctLabs。 本周,我们合并了一项 PR,稳定了 ethrex-replay,使我们能够识别和解决 ethrex 中的两个错误。这些修复也已合并。第一个错误涉及我们 ecrecover 预编译中的一个边缘情况,其中特定输入导致由于 gas 不匹配而执行失败。经过彻底调查,我们将问题追溯到官方的 SP1 修补的 secp256k1 库。我们通过迁移到 SP1 修补的 k256 库解决了这个问题。第二个错误源于对代码库中 usize 类型的位长度的错误假设。为了防止类似问题的发生,我们对代码库进行了全面审查,并提交了多个 PR,将 usize 的使用限制在两个特定情况下:索引和受 API 或库约束的场景。此外,我们正在添加支持以运行 EF 测试套件,包括区块链和状态测试,以增强我们的测试覆盖率,并确保在不同执行场景中的稳健性。 解决了这些错误后,问题不再发生。我们成功地重放了新的 Hoodi 和 Sepolia 区块,Mainnet 区块执行显著改善,SP1 执行成功率从 1/10 上升到 6/10。这一进展为我们解决最近区块重放的剩余挑战铺平了道路:在 SP1 zkVM 中的内存溢出错误和执行及证明中的性能问题。为了解决这些问题,我们已经为工具的 crate 设置了内存分析,使用 Jemalloc crate。 我们还在努力支持历史区块的重放。该功能的 MVP 在草稿 PR 中表现良好,能够与 ethrex、reth 和 geth 客户端良好配合,但在 nethermind 客户端中遇到问题。在发布第一个版本之前,我们的目标是优化 RPC 请求,以确保即使在使用免费 RPC 提供商时,也能准确下载大多数区块的数据。 DevEx 改进: - 我们修复了我们的二进制构建,不再需要在某些操作系统和架构上将 CUDA 作为默认依赖项。此修复已包含在最新版本中。 - 已提交 PR 更新 ethrex 在 rex 中的版本,以确保与 ethrex L2 的最新更改兼容。 - 我们已开始在开发环境中为 ethrex L2 监视器开发一个新选项卡。该选项卡将显示与开发者相关的信息,例如富账户列表和 L1 和 L2 合约的地址。 更新日志: - refactor(l2): 替换 usize 状态差异常量。 - feature(l1,l2): 配置 ethrex-replay 进行内存分析。 - refactor(l1): 移除区块链 crate 中不必要的 usize 使用(与错误修复相关)。 - feature(l1,l2): 向执行见证添加新命令。 - fix(levm): 解决与 32 位架构相关的问题(与错误修复相关)。 - refactor(levm): 更新 ecrecover 实现以使用 k256 而不是 secp256k1(与错误修复相关)。 - ci(l1,l2): 分离 GPU 构建并采用 x86-64-v2 目标。 性能 本周我们继续关注 CPU 消耗和基准测试。 关于 CPU 消耗,我们识别了两种不同的情况,一种是存在区块构建,另一种是不存在。我们优先考虑没有区块构建的情况,因为它们始终存在并影响其他工作(如快照同步)。据我们调查,这完全与 p2p 相关。我们将继续在这一方面努力。 关于基准测试,在上周增强 modexp 性能后,我们关注了一些检测到的改进,例如 codecopy 和相关操作,以及 signextend、mulmod 和 addmod。 我们将继续关注 CPU 消耗和我们识别出的可能改进的测试性能,例如以太坊转账和其他 levm 操作码。
11.26K