Skip to content

Releases: OffchainLabs/nitro

Arbitrum Nitro v3.7.0

26 Aug 04:26
6d34456

Choose a tag to compare

This release has several bug fixes and improvements, but it is not a required upgrade.

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.7.0-6d34456
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.7.0-6d34456-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

Very Special Note

Nitro 3.7.0 has a performance regression that increases CPU usage, which is especially noticable for eth_calls. Version 3.7.1 will be released soon to fix the performance regression

Special Note 1

Nitro 3.7.0 pulls in go-ethereum 1.15.6 which changed log index from bloombits to filtermap. This means that on startup there will be elevated CPU usage for 50+ hours while new FilterMaps are generated for log indexing. If log queries are not used, the parameter --execution.rpc.log-no-history can be used to completely disable log indexing.

Special Note 2

Nitro 3.7.0 pulls in go-ethereum 1.15.11 which includes a brand new log indexing system called filtermaps that has resulted in an increase in log indexing latency due to Nitro’s current reliance on HashDB (instead of PathDB). In some cases, this can delay log queries from being served anywhere between 5 seconds to 2 minutes on Arbitrum One during long tail unindexing. We’ve observed that this happens roughly once per day based on Arbitrum One mainnet traffic levels.

Teams who need to serve log queries with consisten latency (e.g. eth_getLogs, eth_getFilterLogs, eth_getFilterChanges) can use the configuration parameter --execution.rpc.log-history=0 to keep all log history, which will only slightly increase database growth. Teams running their own log indexer may be unaffected.

Future releases of Nitro are expected to fix the issue of log index pruning being able to block log queries.

What's Changed

Update go-ethereum to 1.15.11, fixed issue where a getLogs query was requesting too many blocks at once which can cause issues when using some node providers, and various internal improvements.

Configuration Changes

  • The parameters --node.maintenance.time-of-day and --node.maintenance.triggerable have been removed
  • New parameters --node.maintenance.check-interval and --node.maintenance.enable are now used to control when database maintenance is performed. This functionality is still being investigated, so no recommendations for use are available at this time
  • The parameters --execution.rpc.bloom-bits-blocks and --execution.rpc.bloom-confirms have been removed
  • The parameter --execution.tx-lookup-limit has been replaced with --execution.tx-indexer.tx-lookup-limit

User-facing improvements

  • Split single large getLogs query into multiple smaller queries: #3397
  • Merge v1.15.6 v1.15.7 v1.15.8 v1.15.9 v1.15.10 v1.15.11: #3225
  • Notify clients when nonce-failure transactions expire (#3408): #3463

Internal highlights

  • Run Docker Build on All PRs: #3335
  • Fix autoclaim defaults for auctioneer: #3333
  • Also run our nightly-ci jobs on arbitrator-ci machines: #3337
  • Add the missing prefix in dasserver config: #3339
  • [MEL] - Implement a Pure, Batch Lookup Function Using Only a Parent Chain Block: #3280
  • Use Tsahi's Parallelization in System Test Builder: #3167
  • Add metrics for staker balance in BoLD: #3288
  • Use standard max supported arbos version check in execution engine: #3338
  • Print transaction info in hex format for fast confirm logs: #3345
  • [MEL] - Fetch All Txs for Block Using Preimage Reads: #3309
  • Use an Empty DataDir for L1 in System Tests to Force In-Memory DB Usage: #3350
  • Fix GetLiveliness impl in redis coordinator: #3351
  • Return 0 in CalcBlobFee for arbitrum chains since arbitrum does not have blobs: #3343
  • [MEL] - Implement a Receipt Trie Reader for the MEL Replay Binary Using Preimages: #3308
  • In ParseStateScheme make sure to set genesis block number properly based on arb/eth chain: #3353
  • Update nitro-testnode pin: #3341
  • [MEL] - Add Batch Serialization Without Needing Ethclient: #3282
  • transaction_streamer: fix sync-till-block: #3346
  • Gas Dimension Trace Tests: Nested Call Tests: #3354
  • Use gotestsum.sh in Makefile: #3358
  • use MessageRunContext struct: #2779
  • Add 30 more minutes to the nightly ci timeout: #3361
  • Add support for consensus v42-rc.1 to Docker: #3364
  • Fix race failures in nightly CI: #3365
  • Express Lane Proxy tool for testing purposes: #3108
  • Update bold pin so contracts and bold/contracts match: #3368
  • Fix for changed-files action: #3371
  • bump c-kzg: #3330
  • [MEL] - Add a Pure Function to Extract Messages From a Sequencer Message: #3283
  • [MEL] - The Message Extraction Function: #3359
  • Add a type for modeling a Resource Constraint: #3374
  • Fix: handle Redis error in sequencer release: #3357
  • Remove four unreachable constants and variables: #3375
  • Switch to pull_request_target for the trigger events: #3380
  • Add extra validation to bids by making sure eth_call for auction resolution succeeds: #3369
  • Update the ApproxExpBasisPoints method: #3281
  • Fix system_tests failing race in nightly CI: #3366
  • Error initializing staker if fast confirmation is enabled at genesis: #3363
  • Disable logging in maxprocs: #3356
  • feat: precompilesgen from contracts-local: #3386
  • [MEL] - Add a Delayed Message Reader in the MEL Replay Binary: #3381
  • recompile wasm for missing targets: #3314
  • Fix expected surplus metric: #3360
  • [config change] Add transaction indexer configs: #3385
  • [MEL] - Database implementation: #3387
  • Create ADR-0002 Multi-dimensional gas metering: #3401
  • Update go-ethereum pin: #3402
  • Bump golang.org/x/oauth2 from 0.22.0 to 0.27.0: #3398
  • Fix brotli build script: correct softfloat check and target directory handling: #3391
  • Fix TestSequencerInboxReader failing race detection in nightly CI: #3395
  • Replace Timer metrics with BoundedHistogram for proper expiry behavior: #3393
  • Only increment batchPosterFailureCounter metric in cases of non-ephemeral errors: #3399
  • Add support for consensus v50-alpha.1 to Docker: #3404
  • [Config Change] Consensus asks Execution if maintenance should be triggered: #3253
  • Upgrade go to 1.24.5: #3406
  • Use latest version of fastcache: #3405
  • Update submodule pin check for safe-smart-account: #3417
  • Use node.js 24.4.1: #3412
  • add msgIdx to error print when blockhash mismatch: #3418
  • Add a new binary to generate genesis hash based on provided genesis.json: #3394
  • Fix make .make/fmt by upgrading golangci-lint from v1 to v2 command line arguments: #3424
  • Updates nvmrc to node v24: #3420
  • Update nitro-testnode pin to latest: #3415
  • Fix go formatting: #3427
  • small fix in arbitrator profiling tool: #304...
Read more

Arbitrum Nitro v3.7.0-rc.8

19 Aug 17:49
6d34456

Choose a tag to compare

Pre-release

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.7.0-rc.8-6d34456
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.7.0-rc.8-6d34456-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

Special Note

Nitro 3.7.0 uses go-ethereum 1.15.11 and includes a brand new log indexing system called filtermaps that has resulted in an increase in log indexing latency due to Nitro’s current reliance on HashDB (instead of PathDB). In some cases, this can delay log queries from being served anywhere between 5 seconds to 2 minutes on Arbitrum One during long tail unindexing. We’ve observed that this happens roughly once per day based on Arbitrum One mainnet traffic levels.

Teams who need to serve log queries with consisten latency (e.g. eth_getLogs, eth_getFilterLogs, eth_getFilterChanges) can use the configuration parameter --execution.rpc.log-history=0 to keep all log history, which will only slightly increase database growth. Teams running their own log indexer may be unaffected.

Future releases of Nitro are expected to fix the issue of log indexing being able to block log queries.

What's Changed

Various internal bugfixes

Internal highlights

  • Fix ArbNativeTokenManager precompile inclusion: #3497
  • add configurable jit executable path via CLI flag: #3495
  • github actions: use foundry v1.0.0: #3499
  • block validator benchmark to use Options-based signature: #3502
  • Improve description of trivial contributions: #3504
  • stylus wasmer version: don't upgrade if unnecessary: #3508
  • Stylus cranelift: #3480
  • Update fastcache: #3503
  • BoLD GlobalState not in chain should be a fatal error:: #3449
  • Basic seq-coordinator config validation: #3489
  • Close part files after the copy is done: #3512
  • resolve race condition in storage test goroutines: #3509
  • Fix relay backlog corruption at segment boundaries: #3516
  • Revert "Disable HTTP/2 for das aggregator by default": #3517
  • Return a fatal error instead of stopping the StopWaiter in case of Er…: #3520

Full Changelog: v3.7.0-rc.7...v3.7.0-rc.8

consensus-v41

15 Aug 21:45
2a9b152

Choose a tag to compare

consensus-v41 Pre-release
Pre-release

This release signifies a WASM fraud proof consensus version, and is not a good version to run a node on

WAVM Module Root: 0xa18d6266cef250802c3cb2bfefe947ea1aa9a32dd30a8d1dfc4568a8714d3a7a

This consensus release supports ArbOS 41.

Warning

This release should only be run by chain operators which want to support native token management (a.k.a. Mint and Burn.) If you are not 100% sure you need this feature, please do not run with this version of ArbOS on your chain.

Full Changelog: consensus-v40...consensus-v41

Arbitrum Nitro v3.7.0-rc.7

12 Aug 18:05
efa52d5

Choose a tag to compare

Pre-release

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.7.0-rc.7-efa52d5
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.7.0-rc.7-efa52d5-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

** Note
Nitro 3.6.8 to 3.7.0 upgrades its internal go-ethereum version from v1.15.5 to v1.15.11, which includes a totally new log indexing system (filtermaps). Nitro still uses hashdb instead of pathdb and this makes the new log indexing operations expensive. Log indexing operations can sometimes block log queries, we have observed anywhere from 5s to 2m on Arbitrum One during log tail unindexing, which happens about once a day with arb1 traffic levels. Don't use 3.7.0 if your application or users will be broken by these delays.

What's changed

Fix timeboost regression caused by go-ethereum log indexing switch to filtermaps

User-facing improvements

  • Fix gas accounting for eth_call: #3431
  • Blob prices should not be used if parent chain doesn't return blob price: #3450
  • Notify clients when nonce-failure transactions expire: #3463

Internal highlights

  • Expanding support for multi-dimensional gas: #3429
  • improve error message accuracy in CorrespondingL1BlockNumber: #3422
  • Use new golangci-lint fmt and fix solidity formatter: #3432
  • Update actions/setup-node to v4 : #3433
  • don't run the nitro CodeQL build in parallel: #3434
  • Increase EVM Call timeout to avoid flaky CI: #3435
  • Bring in missing BoLD PRs: #3430, #3443
  • Upgrade the GitHub Actions: #3442
  • optimize regex compilation in Uncolor function: #3462
  • Tx sequencing using hooks: #3454
  • Workaround stuck timeboost auction logs via contract call: #3472

Full Changelog: v3.7.0-rc.6...v3.7.0-rc.7

Arbitrum Nitro v3.7.0-rc.6

29 Jul 14:03
db7a785

Choose a tag to compare

Pre-release

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.7.0-rc.6-db7a785
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.7.0-rc.6-db7a785-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

What's Changed

Various internal improvements

Internal Highlights

  • Fix go formatting: #3427
  • small fix in arbitrator profiling tool: in #3047

Full Changelog: v3.7.0-rc.5...v3.7.0-rc.6

Arbitrun Nitro v3.7.0-rc.5

29 Jul 03:13
78441d7

Choose a tag to compare

Pre-release

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.7.0-rc.5-78441d7
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.7.0-rc.5-78441d7-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

What's Changed

Various Internal improvements

Internal Highlights

  • Fix make .make/fmt by upgrading golangci-lint from v1 to v2 command line arguments: #3424
  • Revert "Add a go workspace file": #3425
  • Updates nvmrc to node v24: #3420
  • Update nitro-testnode pin to latest: #3415

Full Changelog: v3.7.0-rc.4...v3.7.0-rc.5

Arbitrum Nitro v3.7.0-rc.4

28 Jul 17:26
16a1aef

Choose a tag to compare

Pre-release

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.7.0-rc.4-16a1aef
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.7.0-rc.4-16a1aef-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

What's changed

Fixed issue where getLogs query was requesting too many blocks at once which can cause issues for some node providers.

User-facing Improvements

  • Fix issue with getLogs requesting too many blocks at once: #3397

Internal Highlights

  • Update submodule pin check for safe-smart-account: #3417
  • Use node.js 24.4.1: #3412
  • add msgIdx to error print when blockhash mismatch: #3418
  • Add a new binary to generate genesis hash based on provided genesis.json: #3394
  • Add a go workspace file: #3419

Full Changelog: v3.7.0-rc.3...v3.7.0-rc.4

Arbitrum Nitro v3.7.0-rc.3

23 Jul 13:03
21117c6

Choose a tag to compare

Pre-release

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.7.0-rc.3-21117c6
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.7.0-rc.3-21117c6-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

Note: This release candidate is exclusively to check if we have gained memory improvements by upgrading fastcache.

Internal Highlights

  • Upgrade go to 1.24.5 in #3406
  • Use latest version of fastcache in #3405

Full Changelog: v3.7.0-rc.2...v3.7.0-rc.3

Arbitrum Nitro v3.7.0-rc.2

22 Jul 23:48
9bac2d5

Choose a tag to compare

Pre-release

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.7.0-rc.2-9bac2d5
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.7.0-rc.2-9bac2d5-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

What's Changed

Configuration Changes

  • The parameters --node.maintenance.time-of-day and --node.maintenance.triggerable have been removed
  • New parameters --node.maintenance.check-interval and --node.maintenance.enable are now used to control when database maintenance is performed. This functionality is still being investigated, so no recommendations for use are available at this time

User-facing improvements

Internal Highlights

  • Consensus asks Execution if maintenance should be triggered in #3253
  • [MEL] - Add a Pure Function to Extract Messages From a Sequencer Message in #3283
  • [MEL] - The Message Extraction Function in #3359
  • [MEL] - Add a Delayed Message Reader in the MEL Replay Binary in #3381
  • [MEL] - Database implementation in #3387
  • Replace Timer metrics with BoundedHistogram for proper expiry behavior in #3393
  • Fix race failures in nightly CI in #3365
  • Express Lane Proxy tool for testing purposes in #3108
  • Update bold pin so contracts and bold/contracts match in #3368
  • Fix for changed-files action in #3371
  • bump c-kzg in #3330
  • Updates actions/cache from v3 to v4 in #3362
  • Add a type for modeling a Resource Constraint in #3374
  • Fix: handle Redis error in sequencer release in #3357
  • Update actions/setup-go from v4 to v5 in #3373
  • Remove four unreachable constants and variables in #3375
  • Add a close-trivial-prs workflow in #3377
  • Address 3 minor issues in the close-trivial-prs workflow in #3378
  • Swtich to pull_request_target for the trigger events in #3380
  • Add extra validation to bids by making sure eth_call for auction resolution succeeds in #3369
  • Update the ApproxExpBasisPoints method in #3281
  • Fix system_tests failing race in nightly CI in #3366
  • Error initializing staker if fast confirmation is enabled at genesis in #3363
  • Disable logging in maxprocs in #3356
  • feat: precompilesgen from contracts-local in #3386
  • recompile wasm for missing targets in #3314
  • Fix expected surplus metric in #3360
  • Add transaction indexer configs in #3385
  • Create ADR-0002 Multi-dimensional gas metering in #3401
  • Update go-ethereum pin in #3402
  • Bump golang.org/x/oauth2 from 0.22.0 to 0.27.0 in #3398
  • Fix brotli build script: correct softfloat check and target directory handling in #3391
  • Fix TestSequencerInboxReader failing race detection in nightly CI in #3395
  • Only increment batchPosterFailureCounter metric in cases of non-ephemeral errors in #3399
  • Add support for consensus v50-alpha.1 to Docker in #3404

Full Changelog: v3.7.0-rc.1...v3.7.0-rc.2

Consensus V50 Alpha 1

22 Jul 17:43
d956923

Choose a tag to compare

Consensus V50 Alpha 1 Pre-release
Pre-release

This release signifies a WASM fraud proof consensus version, and is not a good version to run a node on

WAVM Module Root: 0x28cfd8d81613ce4ebe750e77bfd95d6d95d4f53240488095a11c1ad3a494fa82

This is an early alpha build of a consensus release for ArbOS 50

Full Changelog: consensus-v41...consensus-v50-alpha.1