Skip to content

Releases: OffchainLabs/nitro

v3.10.0-rc.6

27 Mar 21:40
0973192

Choose a tag to compare

v3.10.0-rc.6 Pre-release
Pre-release

NOTE: Release candidates should not be run in general

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:TBD
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

v3.10.0-rc.6 - 2026-03-27

Configuration

  • Add --execution.stylus-target.allow-fallback flag: if true, fall back to an alternative compiler when compilation of a Stylus program fails (default: true). [PR]

Added

  • Add /liveness and /readiness HTTP health check endpoints to the transaction-filterer service. Readiness reports 503 until the sequencer client is connected. [PR]
  • Prevent MEL node startup if have non-MEL entries in consensus database. [PR]
  • Add tip collection ArbOS state field and precompile to allow the chain owner to enable or disable collecting transaction tips. [PR]
  • ArbOS 60: ArbOwner.setWasmActivationGas / ArbWasm.activationGas — chain owners can set a constant gas charge burned before each Stylus contract activation (default 0). [PR]

Changed

  • Disable cranelift fallback for non-onchain execution modes. [PR]
  • Add recovery to all stopWaiter threads. [PR]
  • Stylus: reject activation of wasm programs using the multi-value extension (functions with multiple return values, or block/loop/if with parameters) starting from ArbOS version 60. [PR]
  • Upgrade to wasmer v7.1.0. [PR]
  • Added consensus v60-rc.1 to Dockerfile. [PR]

Fixed

  • Fix nil-dereference and log format in cmd/nitro/nitro.go when machine locator creation fails; return early instead of falling through to dereference nil locator. [PR]
  • Part 3 of integrating MEL into master. [PR]
  • Re-enable download of previous consensus machine versions (v50, v51, v51.1, v60-alpha.1) in Docker build. [PR]
  • Harden blocks reexecutor with panic recovery for concurrent trie access races. [PR]
  • Do not access state in CollectTips for ArbOS < 60. [PR]

Internal

  • Introduce ValidationInput intermediate data structure with optional rkyv serialization in the validation crate. [PR]
  • Minor refactor in JIT, prover and validator crates. [PR]
  • Moved float-related utilities from arbmath to a new package floatmath. [PR]
  • Add TrackChild/StartAndTrackChild to StopWaiter for automatic LIFO child lifecycle management. [PR]

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

consensus-v60-rc.1

27 Mar 17:42
fd2a5b0

Choose a tag to compare

consensus-v60-rc.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: 0x4a281197d799ef8e0430f5b94ed79fed72ce327311747819a593539f31938c34

This is an alpha consensus release for ArbOS v60 RC 1

Full Changelog: consensus-v51.1...consensus-v60-rc.1

Arbitrum Nitro v3.9.8

24 Mar 19:42
4624977

Choose a tag to compare

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.8-4624977
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

Important for any chains still on ArbOS40:

  • 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.9.8-4624977-validator which has the extra script /usr/local/bin/split-val-entry.sh as the default entrypoint (no need to override the default entrypoint). This will run both v3.9.8 and v3.7.6 validator workers for you.
  • If you are using a split validator, you do not want to use -validator image, you need to run a validator worker on v3.7.6 as well as a worker for v3.9.8
  • Arbitrum Chain SDK v0.25.2 (along with consensus_v51.1) is required for ArbOS51

Important for any chains that previously upgraded to ArbOS51 with consensus_v51

  • Validator should use configuration option --node.block-validator.pending-upgrade-module-root="" to avoid performing unnecessary work trying to validate consensus_v51.1.

Internal Highlights

  • Add configurable cranelift fallback for Stylus compilation: #4535
  • Add support to timeboost auctioneer for BidFloorAgent: #4512
  • Disable cranelift fallback for non-onchain execution modes: #4543
  • Use defer to unlock createBlocksMutex in sequencerWrapper: #4542
  • Enhance state management in StopWaiterSafe: #4548
  • Use RWLock in StopWaiter: #4552
  • Stopwaiter recover: #4550

Full Changelog: v3.9.7...v3.9.8

v3.9.8-rc.1

23 Mar 21:17
4624977

Choose a tag to compare

v3.9.8-rc.1 Pre-release
Pre-release

NOTE: Release candidates should not be run in general

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.8-rc.1-4624977
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

Important for any chains still on ArbOS40:

  • 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.9.8-rc.1-4624977-validator which has the extra script /usr/local/bin/split-val-entry.sh as the default entrypoint (no need to override the default entrypoint). This will run both v3.9.5 and v3.7.6 validator workers for you.
  • If you are using a split validator, you do not want to use -validator image, you need to run a validator worker on v3.7.6 as well as a worker for v3.9.5
  • Arbitrum Chain SDK v0.25.2 (along with consensus_v51.1) is required for ArbOS51

Important for any chains that previously upgraded to ArbOS51 with consensus_v51

  • Validator should use configuration option --node.block-validator.pending-upgrade-module-root="" to avoid performing unnecessary work trying to validate consensus_v51.1.

Internal Highlights

  • Add configurable cranelift fallback for Stylus compilation: #4535
  • Add support to timeboost auctioneer for BidFloorAgent: #4512
  • Disable cranelift fallback for non-onchain execution modes: #4543
  • Use defer to unlock createBlocksMutex in sequencerWrapper: #4542
  • Enhance state management in StopWaiterSafe: #4548
  • Use RWLock in StopWaiter: #4552
  • Stopwaiter recover: #4550

Full Changelog: v3.9.7...v3.9.8-rc.1

Arbitrum Nitro v3.10.0-rc.5

18 Mar 23:39
b9d1452

Choose a tag to compare

Pre-release

NOTE: Do not run this version

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.10.0-rc.5-b9d1452
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

Important for any chains still on ArbOS40:

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.10.0-rc.5-b9d1452-validator which has the extra script /usr/local/bin/split-val-entry.sh as the default entrypoint (no need to override the default entrypoint). This will run both v3.10.0 and v3.7.6 validator workers for you.
If you are using a split validator, you do not want to use -validator image, you need to run a validator worker on v3.7.6 as well as a worker for v3.10.0

v3.10.0-rc.5 - 2026-03-18

Added

  • Group rollback for cascading redeem filtering using deferred statedb clone. [PR]

Changed

  • Update Go to 1.25.8 in Dockerfile. [PR]
  • Preflight the worst-case fragment read gas during multi-fragment Stylus activation, then charge the actual EXTCODECOPY-style cost after the fragment code is read. [PR]
  • Enable http communication between block validator and validation server. [PR]
  • Split ResourceKindStorageAccess into ResourceKindStorageAccessRead and ResourceKindStorageAccessWrite for finer-grained multi-dimensional gas metering. [PR]
  • Upgrade to wasmer 7.1.0-rc.2 [PR]

Fixed

  • Part 2 of integrating MEL into master. [PR]
  • Once timeout attempts are exhausted, treat it as any other, possibly fatal failure. [PR]
  • Use proper comparison for attempts. [PR]
  • Fix bold StopWaiter usage: start child structs on their own StopWaiters instead of the parent's. Fix StopAndWait ordering. [PR]
  • Fix multi-gas refunds in retryables (ArbOS60). [PR]
  • Fix StopWaiter lifecycle ordering: stop children before parent in StopAndWait, and pass managed context to children in Start. [PR]
  • Fix MEL feature flag bugs: nil message dereference in delayed sequencer, incorrect waitingForFinalizedBlock domain, and missing BatchPoster+MEL config validation. [PR]
  • Fix ValidationSpawnerRetryWrapper lifecycle: reuse one wrapper per module root instead of creating and leaking one per validation. [PR]
  • Fix BroadcastClients launching coordination goroutine on child Router's StopWaiter instead of its own. [PR]
  • Fix ValidationServer and ExecutionSpawner missing StopAndWait for their children. [PR]
  • Handle too-short AnyTrust certificate data as empty batches instead of crashing. [PR]

Internal

  • ArbGasInfo.GetMultiGasPricingConstraints now returns resources in deterministic order. [PR]
  • Move exponent validation in ArbOwner.SetMultiGasPricingConstraints outside the per-constraint loop. [PR]
  • Add JWT authentication support to the Rust validation server. [PR]
  • Move express lane service and tracker from execution/gethexec to the timeboost package. [PR]
  • Block sequencing until address filter rules are loaded. [PR]

Arbitrum Nitro v3.10.0-rc.4

06 Mar 22:07
3a9bb93

Choose a tag to compare

Pre-release

NOTE: It is not recommended to run RC releases.

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.10.0-rc.4-3a9bb93
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

Important for any chains still on ArbOS40:

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.10.0-rc.4-3a9bb93-validator which has the extra script /usr/local/bin/split-val-entry.sh as the default entrypoint (no need to override the default entrypoint). This will run both v3.10.0 and v3.7.6 validator workers for you.
If you are using a split validator, you do not want to use -validator image, you need to run a validator worker on v3.7.6 as well as a worker for v3.10.0

Configuration

  • Adds --execution.sequencer.transaction-filtering.disable-delayed-sequencing-filter to enable/disable filtering when sequencing delayed messages. [PR]
  • Added --node.block-validator.validation-spawning-allowed-timeouts (default 3): maximum number of timeout errors allowed per validation before treating it as fatal. Timeout errors have their own counter, separate from --node.block-validator.validation-spawning-allowed-attempts. [PR]

Added

  • Peform DNS lookups with IPv4 before IPv6. [PR]
  • messageSequencingMode messageRunModes. To be used when filtering transactions in the geth layer. [PR]
  • Fix Message Extraction function to handle cases when number of batch posting reports are not equal to the number of batches. [PR]

Changed

  • Make PruneExecutionDB only depend on executionDB by removing consensusDB dependency. [PR]

Removed

  • Remove aborted snap sync code. [PR]

Fixed

  • Part 1 of improving the MEL runner with latest, tested implementation. [PR]
  • Use defer to release createBlocksMutex in sequencerWrapper to prevent deadlock on panic. [PR]
  • Fix opening classic-msg database. [PR]
  • Fix system test triggered panic in updateFilterMapsHeads. [PR]
  • Fix address filter S3 syncer failing to parse hash list JSON when salt or hash values use 0x/0X hex prefix. Go's encoding/hex.DecodeString does not handle the prefix, so it is now stripped before decoding. [PR]
  • Fix debug_executionWitness endpoint. [PR]
  • Improve block validator error message to suggest enabling staker in watchtower mode when wasmModuleRoot is not set from chain. [PR]
  • If batchFetcher returns error use existing LegacyBatchGasCost value. [PR]
  • Fix rlp: expected List error when fetching transaction receipts for blocks with Arbitrum legacy receipt encoding. [PR]
  • Block validator no longer crashes on timeout errors during validation. Timeout errors are retried separately from other validation failures, up to a configurable limit. [PR]

Internal

  • Make Validator request match clients request format. [PR]
  • Cache precompiled wasm modules for repeated JIT validation. [PR]
  • S3Syncer's context moved out from new to Initialize. [PR]
  • Bytes32's Debug and Display is prefixed with 0x. [PR]
  • Allow validator's JitMachine to find jit path. [PR]
  • Migrate Rust validation server to JSON RPC to match Go client communication. [PR]
  • Move wavmio logic from JIT crate to caller-env (to be reused soon by SP1 validator). [PR]
  • Make ValidationInput.max_user_wasm_size field non-mandatory. [PR]

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

v3.9.7

05 Mar 20:37
75e084e

Choose a tag to compare

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.7-75e084e
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

Important for any chains still on ArbOS40:

  • 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.9.7-75e084e-validator which has the extra script /usr/local/bin/split-val-entry.sh as the default entrypoint (no need to override the default entrypoint). This will run both v3.9.5 and v3.7.6 validator workers for you.
  • If you are using a split validator, you do not want to use -validator image, you need to run a validator worker on v3.7.6 as well as a worker for v3.9.5
  • Arbitrum Chain SDK v0.25.2 (along with consensus_v51.1) is required for ArbOS51

Important for any chains that previously upgraded to ArbOS51 with consensus_v51

  • Validator should use configuration option --node.block-validator.pending-upgrade-module-root="" to avoid performing unnecessary work trying to validate consensus_v51.1.

User-facing changes

  • Fix opening classic-msg database: #4460
  • Prefer IPv4: #4463
  • Fix rlp: expected List error for legacy Arbitrum receipt encoding: #4468

Full Changelog: v3.9.6...v3.9.7

v3.9.7-rc.2

05 Mar 16:13
75e084e

Choose a tag to compare

v3.9.7-rc.2 Pre-release
Pre-release

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.7-rc.2-75e084e
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

Important for any chains still on ArbOS40:

  • 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.9.7-rc.2-75e084e-validator which has the extra script /usr/local/bin/split-val-entry.sh as the default entrypoint (no need to override the default entrypoint). This will run both v3.9.5 and v3.7.6 validator workers for you.
  • If you are using a split validator, you do not want to use -validator image, you need to run a validator worker on v3.7.6 as well as a worker for v3.9.5
  • Arbitrum Chain SDK v0.25.2 (along with consensus_v51.1) is required for ArbOS51

Important for any chains that previously upgraded to ArbOS51 with consensus_v51

  • Validator should use configuration option --node.block-validator.pending-upgrade-module-root="" to avoid performing unnecessary work trying to validate consensus_v51.1.

User-facing changes

  • Fix rlp: expected List error for legacy Arbitrum receipt encoding (#4469): #4468

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

v3.9.7-rc.1

04 Mar 21:53
350b787

Choose a tag to compare

v3.9.7-rc.1 Pre-release
Pre-release

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.7-rc.1-350b787
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

Important for any chains still on ArbOS40:

  • 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.9.7-rc.1-350b787-validator which has the extra script /usr/local/bin/split-val-entry.sh as the default entrypoint (no need to override the default entrypoint). This will run both v3.9.5 and v3.7.6 validator workers for you.
  • If you are using a split validator, you do not want to use -validator image, you need to run a validator worker on v3.7.6 as well as a worker for v3.9.5
  • Arbitrum Chain SDK v0.25.2 (along with consensus_v51.1) is required for ArbOS51

Important for any chains that previously upgraded to ArbOS51 with consensus_v51

  • Validator should use configuration option --node.block-validator.pending-upgrade-module-root="" to avoid performing unnecessary work trying to validate consensus_v51.1.

User-facing changes

  • Fix opening classic-msg database: #4460
  • Prefer IPv4: #4463

Full Changelog: v3.9.6...v3.9.7-rc.1

consensus-v60-alpha.2

27 Feb 02:46

Choose a tag to compare

consensus-v60-alpha.2 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: 0x5a79438ff2ab312234ee23839ea03b0c9348e856298b5ab1d2c067bf3c725bd0

This is an alpha consensus release for ArbOS v60 with wasmer 7

Full Changelog: consensus-v60-alpha.1...consensus-v60-alpha.2