本文讨论了Offchain Labs发布的Arbitrum Nitro v3.9.0版本,该版本于2025年11月20日发布,并在Arbitrum Sepolia链上激活了ArbOS 50 “Dia”。此更新对于Arbitrum节点运行者来说是一个好消息,因为它包含了多项改进和错误修复,提升了性能和稳定性。

在本文中,我将讨论 Offchain Labs 发布的 Arbitrum Nitro v3.9.0 的新版本,该版本于 2025 年 11 月 20 日星期四 17:00 UTC 发布,ArbOS 50 “Dia” 将在 Arbitrum Sepolia 链上激活。
对于 Arbitrum 上的节点运行者来说,这是一个好消息。
如果你今天正在运行 Arbitrum 节点,你将面临三个关键需求 👇
- 此版本增加了对 ArbOS50 的支持,并且所有节点都必须在 ArbOS50 在每个链上激活之前升级。
- 此更新以 Docker 镜像 的形式提供:
offchainlabs/nitro-node:v3.9.0-cca645a。
- 此镜像在其入口点中包含默认标志。 如果你覆盖入口点,请复制以下标志:
/usr/local/bin/nitro --validation.wasm.allowed-wasm-module-roots /home/user/nitro-legacy/machines,/home/user/target/machines
- 未使用拆分验证服务器的验证器(大多数设置)应使用特定于验证器的镜像:
offchainlabs/nitro-node:v3.9.0-cca645a-validator。
/usr/local/bin/split-val-entry.sh — 无需手动覆盖。
新的 Nitro v3.9.0-cca645a 版本消除了所有猜测!
此更新的优点
- 在某些情况下隐藏与 blob 相关的 DataPoster 配置
- 更正 TransactionStreamer 和 PopulateFeedBacklog 的顺序
- 避免来自排序器 expectedSurplus 机制的不必要警告
- 添加使用外部签名者的 BoLD 系统测试
- 为 Arbos50 启用 EIP7883 和 EIP7823
- 使 Stylus 对结果的使用更加一致
- 拒绝超过 Fusaka 最大 tx gas 上限的 BoLD tx 的估计值
- 将 DelayedMessagedSeen 重命名为 DelayedMessagesSeen
- 稳定数据库转换测试
- 对于 Arbitrum 上的 L3,为 shouldEnableCellProofs 返回 false 而不是错误
- 不要为 wasm 和 arbitrumdata 数据库打开 freezer
- 切换在错误时使用的 blobs RPC 端点
- 修复 dataposter 中越界的配置访问
- 更新 testnode pin
- getNextBlockToRead 不再依赖于 FillInBatchGasField
- 为不可能的 JSON omitempty 添加 linter
- 阻止 BlobClient 错误恢复中的 HTTP 连接重用
- 对启动错误使用结构化日志记录
- 在未启动的 InboxReader 上为 PopulateFeedBacklog 添加回归测试
- 从旧 ArbOS 版本的 feed 中排除 BatchDataStats
- 不要将签名行为失败视为致命错误
- 向 L2 价格存储添加 gas 约束
- 在创建断言时正确识别“已存在”错误
- 修复广播客户端关闭死锁
- 关闭 Sepolia 的 feed-signed 标志
- DA 客户端:可选的流式传输支持
- Validator API:JSON 单元测试
- 根据多个约束计算 gas 价格
- 在 ArbOS 50 升级期间,将最大 WASM 堆栈深度设置为 22k
- 将“链正在追赶”记录为 info 级别而不是警告
- 为 ArbSepolia 添加硬编码的交易哈希
- 添加从 JSON 文件中提取链配置的选项
- 通过使配置更改具有原子性来避免系统测试中的竞争
- 更新硬编码 ArbSepolia 交易哈希中的 gas
- 修复快速确认不适用于 pre-BoLD 上的 EOA
- 统一 ExecutionClient 接口,删除不必要的上下文
- 添加具有自定义 DA 增强器的 proof enhancer 系统
- 将 cbindgen 固定到 v0.24.3
- 向失败的 blob-fetch 日志添加更多详细信息
- 将 SequencingHooks 重写为接口;不要在大型 tx 上停止排序
- 修复未知 multi-gas
- 阻止 HTTP 错误的 downloadFile 中的 nil deref
- 改进脚本行为以实现更安全的执行和错误处理
- 在块重新执行中检查多维 gas
- 修复 staker 中的 SCW 初始化错误
- 修复 Fusaka 单元格证明对外部签名者的支持
- 添加 Arbos 版本获取器
- 在多重约束中用“inertia”替换“period”
- 设置最终数据时删除锁
- 更新 Sepolia 合约地址
- 为多重约束 pricer 添加预编译
- 完整的 ReferenceDA 实现
- 使 TestEthSyncing 不 flaky
- 测试启用/禁用多重约束 pricer
- 向 Docker 添加对共识 v50 (rc.6) 的支持
- 测试批处理发布器是否将 blob 发布到 L1
- 将 block_validator 的内存限制警告更改为错误
- 添加有关额外多重约束 pricer 读取成本的注释
- 更新 check-build.sh
- 修复 PopulateFeedBacklog 实现
- 删除冗余的 DataStreamer 重试机制
- 解决新的 lint 错误
- 修复 anytrust legacy 回退 + 签名测试
- 将 gnark-crypto 从 0.18.0 升级到 0.18.1
- 检查状态初始化期间的故障
- 不要为瞬态“nonce 过高”立即记录错误
- 添加 tx-streamer 消息处理持续时间指标
- 增强 Promise API
- 修复 datool RPC 客户端选项
- 在 FindLastAvailableState 期间添加定期日志
- 更新 geth pin 以进行 pathdb RPC + 归档模式 + 测试
- 添加 execution.caching.pathdb-max-diff-layers 配置选项
- 修复 ValidationInput 详尽的初始化
- 添加 CLI 工具来模拟 L2 定价模型
- 修复 flaky Go-tests 构建步骤
- 向 Docker 添加对 consensus-v50 的支持
- 将最大 ArbOS 版本设置为 v50
- 删除内部 AnyTrust daprovider 服务器
参考:
https://github.com/OffchainLabs/nitro/releases/tag/v3.9.0