Arbitrum Nitro v3.1.0
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v3.1.0-7d1d84c
This Docker image specifies default flags in its entrypoint which should be replicated if you're overriding the entrypoint: /usr/local/bin/nitro --validation.wasm.allowed-wasm-module-roots /home/user/nitro-legacy/machines,/home/user/target/machines
If you're running a validator without a split validation server (this will be true of most validators), you should instead use the image offchainlabs/nitro-node:v3.1.0-7d1d84c-validator
which has the extra script /usr/local/bin/split-val-entry.sh
as the entrypoint.
What's Changed
This release adds support for ArbOS 31, which is a required upgrade for Arbitrum Sepolia by Tuesday, July 23nd, 2024 13:00 ET, and should the on-chain vote pass, will be required in approximately a month for Arbitrum One and Arbitrum Nova. This release also improves the Anytrust data availability system.
Configuration Changes
- The
--p2p.*
options were removed, as the P2P system doesn't do anything in nitro yet and was causing incompatibilities loading Arbitrum Classic blocks. - If you're running a batch poster, non-default Anytrust DAS signermasks are no longer supported. The signermask must now be consecutive powers of two for each signer in the keyset. If this is not the case, a new keyset must be generated to be compatible with this version's batch poster. As part of this change, the signermask field in DAS keyset backends is now ignored and no longer required.
- The Anytrust DAS local-db-storage is deprecated in this release, and will soon be removed. To migrate to the new filesystem database, use
--data-availability.migrate-local-db-to-file-storage
User-facing Improvements
- Make DAS backends and keyset easier to configure, fixes: NIT-2594: #2427
- Anytrust DAS filestore trie layout migrator and expiry: #2385
- Deprecate local-db-storage, add migration opt: #2409
- Don't post a batch that would cause a reorg due to being near the layer 1 minimum block or timestamp bounds: #2411
- Support auto-detection of database engine (pebbledb vs leveldb): #2447
- Add iostat system metrics: #2398
- Metric for any das.Aggregator Store errors: #2410
- Add GAS opcode to Stylus tracing, and after producing a fake EVM GAS opcode in a trace, add a POP afterwards: #2382
- Add LOG opcodes to Stylus tracing: #2452
- Export redis-url for valnode: #2464
- Drop nitro p2p config options: #2462
- Fix disabling P2P: #2485
ArbOS 31
- Stylus compilation version 2: #2425
- Separate cached from call cost: #2426
- Specify address when caching Stylus program: #2423
- Require program.version == params.Version when caching: #2435
- Add a minimum cost to Stylus return data: #2424
- ArbOS 31: #2461
Internal Highlights
- Sequencer coordinator shouldn't want lockout if local blockchain is lagging too much behind transaction streamer: #2437
- init: allow classic node exported data in db dir: #2454
- Add consensus-v31 to Dockerfile: #2465
- Separate DAS keyset and batch fetching logic: #2429
- Build arbitrator.h on test-go-deps: #2438
- Update testnode pin: #2439
- Snapshot downloading changes:
- Feed Client should log loud error when rate limited: #2458
- Fetch Published Machine to test compatibility: #2394
- Don't close the sigint channel: #2472
- [DAS] Always make expiry index: #2470
- init: fix loading db with custom ancient path: #2474
- Fix validator pending validations metric: #2473
- Define Execution Run Method to Compute Machine Hashes With Step Size for BOLD: #2392
- Break down query log range for validators: #2443
Full Changelog: v3.0.3...v3.1.0