Releases: OffchainLabs/nitro
v3.10.0-rc.6
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-fallbackflag: if true, fall back to an alternative compiler when compilation of a Stylus program fails (default: true). [PR]
Added
- Add
/livenessand/readinessHTTP 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.gowhen 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
ValidationInputintermediate 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
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
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.8andv3.7.6validator workers for you. - If you are using a split validator, you do not want to use
-validatorimage, you need to run a validator worker onv3.7.6as well as a worker forv3.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 validateconsensus_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
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.5andv3.7.6validator workers for you. - If you are using a split validator, you do not want to use
-validatorimage, you need to run a validator worker onv3.7.6as well as a worker forv3.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 validateconsensus_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
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
ResourceKindStorageAccessintoResourceKindStorageAccessReadandResourceKindStorageAccessWritefor 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/gethexecto thetimeboostpackage. [PR] - Block sequencing until address filter rules are loaded. [PR]
Arbitrum Nitro v3.10.0-rc.4
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(default3): 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
PruneExecutionDBonly depend onexecutionDBby removingconsensusDBdependency. [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/0Xhex prefix. Go'sencoding/hex.DecodeStringdoes not handle the prefix, so it is now stripped before decoding. [PR] - Fix
debug_executionWitnessendpoint. [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 Listerror 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'sDebugandDisplayis 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_sizefield non-mandatory. [PR]
Full Changelog: v3.10.0-rc.3...v3.10.0-rc.4
v3.9.7
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.5andv3.7.6validator workers for you. - If you are using a split validator, you do not want to use
-validatorimage, you need to run a validator worker onv3.7.6as well as a worker forv3.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 validateconsensus_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
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.5andv3.7.6validator workers for you. - If you are using a split validator, you do not want to use
-validatorimage, you need to run a validator worker onv3.7.6as well as a worker forv3.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 validateconsensus_v51.1.
User-facing changes
Full Changelog: v3.9.7-rc.1...v3.9.7-rc.2
v3.9.7-rc.1
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.5andv3.7.6validator workers for you. - If you are using a split validator, you do not want to use
-validatorimage, you need to run a validator worker onv3.7.6as well as a worker forv3.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 validateconsensus_v51.1.
User-facing changes
Full Changelog: v3.9.6...v3.9.7-rc.1
consensus-v60-alpha.2
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