Releases: OffchainLabs/nitro
Arbitrum Nitro v3.9.4
Nitro v3.9.4 is an optional release, only minor updates on top of v3.9.3.
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.4-7f582c3
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.4-7f582c3-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint (no need to override the default entrypoint).
Configuration Changes
--node.batch-poster.data-poster.enable-cell-proofshas been removed--parent-chain.blob-client.use-legacy-endpointhas been removed
What's Changed
A handful of functionality fixes, and remove legacy blob functionality that is no longer needed now that Fusaka is live.
User-facing Changes
- Fix searching for tx hash in block for ArbitrumLegacyTx: #4097
- Modify validateGenesisAssertion to handle non-empty genesis: #4087
- Remove legacy blob support, store blobs locally: #4113
Full Changelog: v3.9.3...v3.9.4
Arbitrum Nitro v3.9.4-rc.2
Nitro v3.9.4 is an optional release, only minor updates on top of v3.9.3.
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.4-rc.2-7f582c3
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.4-rc.2-7f582c3-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint (no need to override the default entrypoint).
Configuration Changes
--node.batch-poster.data-poster.enable-cell-proofshas been removed--parent-chain.blob-client.use-legacy-endpointhas been removed
What's Changed
Fix to store blobs locally post fusaka, and add disk reader that can use locally stored blobs. Also, remove legacy blob functionality that is no longer needed now that Fusaka is live.
User-facing Changes
- Remove legacy blob support, store blobs locally: #4113
Full Changelog: v3.9.4-rc.1...v3.9.4-rc.2
v3.9.4-rc.1
Nitro v3.9.4 is an optional release, only minor updates on top of v3.9.3.
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.4-rc.1-88edd3a
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.4-rc.1-88edd3a-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint (no need to override the default entrypoint).
What's Changed
- Fix searching for tx hash in block for ArbitrumLegacyTx: #4097
- Modify validateGenesisAssertion to handle non-empty genesis: #4087
Full Changelog: v3.9.3...v3.9.4-rc.1
Arbitrum Nitro v3.9.3
Nitro v3.9.3 is an optional release for mainnet, but all ArbSepolia node operators must upgrade to Nitro v3.9.3 before the ArbOS 51 network upgrade on ArbSepolia, scheduled for December 1st, 2025, at 17:00 UTC (12:00 PM ET).
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.3-8bc5554
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.3-8bc5554-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint (no need to override the default entrypoint).
What's Changed
Support for ArbOS51
User-facing Changes
- Fix retryable gas calculation bug and add ArbOS51 version (#4047): #4068
- Add support for ArbOS51: #4073
Internal Highlights
- stop block metdata fetcher when node stops: #4021
Full Changelog: v3.9.2...v3.9.3
Arbitrum Nitro v3.9.3-rc.1
Arbitrum Sepolia node operators must upgrade to Nitro v3.9.3 before the ArbOS 51 (Fusaka) network upgrade on ArbSepolia, scheduled for November 20, 2025, at 17:00 UTC (12:00 PM ET).
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.3-rc.1-8bc5554
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.9.3-rc.1-8bc5554-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint (no need to override the default entrypoint).
What's Changed
Support for ArbOS51
User-facing Changes
- Fix retryable gas calculation bug and add ArbOS51 version (#4047): #4068
- Add support for ArbOS51: #4073
Internal Highlights
- stop block metdata fetcher when node stops: #4021
Full Changelog: v3.9.2...v3.9.3-rc.1
Arbitrum Nitro Consensus v51
This release signifies a WASM fraud proof consensus version, and is not a good version to run a node on
WAVM Module Root: 0x8a7513bf7bb3e3db04b0d982d0e973bcf57bf8b88aef7c6d03dba3a81a56a499
This is a consensus release for ArbOS 51, including support for Fusaka.
Full Changelog: consensus-v50...consensus-v51
Arbitrum Nitro v3.9.2
Node operators should upgrade to Nitro v3.9.x before the ArbOS 50 (Fusaka) network upgrade on ArbSepolia, scheduled for November 20, 2025, at 17:00 UTC (12:00 PM ET).
This release adds validator support for ArbOS50. Compared to v3.9.0, the only change is in the -validator image, so it is only a required upgrade if you are running a validator.
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.2-52e8959
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.9.2-52e8959-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint (no need to override the default entrypoint).
What's Changed
- Prune old wasm module roots: #4015
- Port - Fix parent chain reader bug in creating smart contract wallet [PR-4019]: #4020
- Add legacy validator back for split validator: #4017
Full Changelog: v3.9.1...v3.9.2
Arbitrum Nitro v3.9.2-rc.1
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.1-241cd93
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.9.1-241cd93-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint (no need to override the default entrypoint).
What's Changed
Remove old wasm module roots
Internal Highlights
- Prune old wasm module roots: #4015
Full Changelog: v3.9.1...v3.9.2-rc.1
Arbitrum Nitro v3.9.1
This release fixes an issue with -validator docker image, it is not a required upgrade if you are already running v3.9.0.
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.1-241cd93
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.9.1-241cd93-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint (no need to override the default entrypoint).
What's Changed
Fix permissions on split-val-entry.sh in -validator docker image.
Internal Highlights
- Fix permissions for split-val-entry: #4005
Full Changelog: v3.9.0...v3.9.1
Arbitrum Nitro v3.9.0
This release adds support for ArbOS50, all nodes are required to upgrade before ArbOS50 is enabled on each respective chain.
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.0-cca645a
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.9.0-cca645a-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint (no need to override the default entrypoint).
Configuration Changes
--execution.rpc.state-schemehas been removed
What's Changed
Added support for ArbOS50 and various bug fixes and improvements.
User-facing Changes
- Add support for new beacon chain /blobs endpoint: #3830
- Add
OverwriteContractCodemethod to ArbDebug precompile: #3867 - Optional graceful shutdown if block hash from feed mismatches with locally computed one: #3859
- Allow archive mode for path scheme: #3932
Internal Highlights
- Hide blob-related DataPoster config in some contexts: #3810
- Correct the order TransactionStreamer and PopulateFeedBacklog: #3812
- avoid unnecessary warnings from sequencer expectedSurplus mechanism: #3784
- Add a BoLD system test that uses external signer: #3753
- Enable EIP7883 and EIP7823 for Arbos50: #3807
- make stylus usage of result more consistent: #3809
- Reject Estimates for BoLD Txs that Exceed Fusaka's Max Tx Gas Cap: #3814
- mel: rename DelayedMessagedSeen to DelayedMessagesSeen: #3789
- stabilize database conversion test: #3783
- For L3 on arbitrum return false for shouldEnableCellProofs instread of erroring out: #3825
- don't open freezer for wasm and arbitrumdata databases: #3828
- Toggle blobs rpc endpoint used on errors: #3834
- Fix out of bounds config access in dataposter: #3838
- update testnode pin: #3736
- getNextBlockToRead does not depend on FillInBatchGasField: #3851
- Add linter for imposible json omitempty: #3849
- Prevent HTTP connection reuse in BlobClient error recovery: #3811
- Use structured logging for startup error: #3840
- Add test for "Regression in v3.8.x PopulateFeedBacklog depends on un-started InboxReader": #3847
- Exclude
BatchDataStatsfrom feed for old ArbOS versions: #3853 - Don't treat error as fatal when signature behavior fails: #3852
- Add gas constraints to L2 Pricing storage: #3861
- Identify already exists errors correctly while creating assertions: #3875
- Fix broadcast client shutdown deadlock: #3882
- Turn off feed-signed flag for sepolia: #3891
- DA client: use streaming optionally: #3884
- validator api: json unit test: #3894
- Compute gas price based on multiple constraints: #3872
- During the ArbOS 50 Upgrade also SetMaxWASMStackDepth 22k: #3888
- Make 'chain is catching up to the execution state' logs info level: #3869
- Add hardcoded transaction hash for ArbSepolia: #3876
- Add option to pull Chain Configs in parent.go from a json file: #3856
- Avoid races in system_tests changing config by making the changes atomic: #3829
- Update gas in hardcoded transaction hash for arbSepolia: #3901
- Fix fast confirm not working for EOA on pre - bold: #3902
- Unify
ExecutionClientinterface: remove unnecessary context: #3883 - Add proof enhancer system with customda enhancers: #3750
- Pin cbindgen to version 0.24.3: #3905
- Show more details in failed blob fetch logs: #3881
- Rewrite SequencingHooks as an interface and don't stop sequencing on large transactions: #3821
- Fix unknown multi-gas: #3906
- Prevent nil deref in downloadFile when checking HTTPResponse on error: #3842
- Script behavior for safer execution and error handling: #3823
- Check multi-dimensional gas in block re-execution: #3791
- Fix SCW initialization bug in staker: #3695
- Fix Fusaka Cell Proof support for external signers: #3910
- Arbos version getter: #3893
- Replace period with inertia in multi constraints: #3913
- remove lock when setting finality data: #3916
- update sepolia contract address: #3917
- Add precompiles for Multi-Constraint Pricer: #3860
- Full ReferenceDA implementation: #3873
- Make TestEthSyncing not flaky: #3920
- Test enable and disable multi constraint pricer: #3919
- Add support for consensus v50 (rc.6) to Docker: #3925
- Test that batch poster actually posts blobs to L1: #3918
- Change memory limit warning to error for block_validator: #3938
- Add comment about extra Multi-Constraint pricer read cost: #3943
- Update check-build.sh: #3937
- Fix PopulateFeedBacklog implementation: #3953
- Remove redundant DataStreamer retry mechanism: #3959
- Address a bunch of new lint errors: #3944
- Fix tests anytrust legacy fallback and signing: #3930
- Bump github.com/consensys/gnark-crypto from 0.18.0 to 0.18.1: #3934
- Check for failures during state initialization: #3898
- Transient nonce too high should not log error right away: #3939
- Add tx streamer message processing duration metric: #3698
- Enhance Promise API: #3899
- Fix datool rpc client opts: #3963
- Added periodic log during FindLastAvailableState: #3951
- Update geth pin to include pathdb rpc changes + enabling pathdb archival mode for tests + added tests: #3945
- Add
execution.caching.pathdb-max-diff-layersconfig option: #3966 - Fix ValidationInput exhaustive initialization: #3924
- Add cmd-line tool to simulate the l2pricing model: #3970
- Investigate and fix flakey go-tests
Buildstep: #3971 - Add support for consensus-v50 to docker: #3984
- Set max ArbOS version to v50: #3986
- Remove internal daprovider server for AnyTrust: #3992
- Add back split-val-entry: #3999
Full Changelog: v3.8.0...v3.9.0