Releases: OffchainLabs/nitro
Arbitrum Nitro v3.5.0-rc.2
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.5.0-rc.2-fcb4018
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.5.0-rc.2-fcb4018-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
What's Changed
Prevent leaking classic redirect URL in error message, and various timeboost miscellaneous updates.
User-facing Improvements
- Avoids leaking execution.rpc.classic-redirect URL: #2908
Internal Highlights
- Express lane timeboost auctioneer rpc forwarding and sequencer coordinator: #2903
- chainInfo supports track-block-metadata-from: #2917
- Timeboost: Don't store or publish to feed blockMetadata of blocks lower than TrackBlockMetadataFrom config: #2918
- allow sequencer to collect metadata without timeboost: #2919
- Add small sleep in BoLD when chain is behind: #2909
- Add block-metadata to sepolia chain-info: #2920
Full Changelog: v3.5.0-rc.1...v3.5.0-rc.2
Arbitrum Nitro v3.5.0-rc.1
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.5.0-rc.1-1d9c68d
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.5.0-rc.1-1d9c68d-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
What's Changed
This Nitro release adds support for Timeboost, a novel transaction ordering policy for Arbitrum chains. This includes changes to both the sequencer to add an express lane for time-advantaged transaction inclusion and a new process for managing the second price, sealed bid auction for the rights to use said express lane.
To read more about how Timeboost works, the goals behind TImeboost, and how to use it, please visit our Gentle Introduction docs here
Also added a fix for flatCallTracer that was present in v3.3.2
, but wasn't included in v3.4.0
User-facing Improvements
- fix for flatcalltracer originally just on v3.3.x branch: #2902
- Implement Express Lane Timeboost: #2561
- Skip AutoDeposit if Staked, Use Latest Data for Auto-Operations: OffchainLabs/bold#722
Internal Highlights
- fix some problematic method name and typos in comment: #2810
- Add mock external signer binary: #2842
- fix typos in
validator/server_jit/spawner.go
: #2634 - Upgrade actions/upload-artifact in CI: #2884
- Add the installation of the cbindgen binary: #2888
- Add cbindgen to both workflows: #2890
- Bump github.com/golang-jwt/jwt/v4 from 4.5.0 to 4.5.1: #2771
- Bump golang.org/x/net from 0.26.0 to 0.33.0: #2891
- add retryable expiry system tests: #2799
- chore: fix some function names in comment: #2886
- More benchmarks in stylus_benchmark: #2870
- geth-pin update: performance and metrics improvements: #2895
- Flush triedb during maintenance: #2892
- Update BoLD Submodule to Include Contracts v3.0.0: #2901
- Attempt to Reduce Flakiness of BoLD Virtual Block System Tests: #2905
- database maintenance api: #2897
- TransactionStreamer should only fetch block metadata when necessary: #2910
Full Changelog: v3.4.0...v3.5.0-rc.1
Arbitrum Nitro v3.4.0
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.4.0-d896e9c
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.4.0-d896e9c-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
What's Changed
Flatcalltracer issues have been fixed, various performance improvements have been implemented, and it is now possible to initialize chain with a genesis.json
file.
Configuration Changes
--node.inbox-reader.hard-reorg
has been removed
User-facing Improvements
- Add redis sentinel support: #2738
- Update go-ethereum fork to v1.14.3: #2806
- Add support for standard genesis.json format: #2761
- Start node only after the block containing rollup creation tx has been finalized (if supported): #2582
- Set ensure-rollup-deployment to false in testnode: #2831
- Pebble config: Enable no-sync mode and increase level sizes to improve performance: #2800
- Add flag to disable DAS chunked stores: #2796
- Remove HardReorg config from InboxReader: #2542
- Add metrics for how many Stylus calls and gas used: #2852
- Fix flatcalltracer: #2867
- Create a metric for local block execution time: #2871
- Fix
--execution.rpc.gas-cap=0
to again mean infinite gas: #2873 - Update google-cloud-storage parameters and object retention setting: #2794
- Enable the geth trie prefetcher to improve sequencer performance: #2877
Internal Highlights
- Fix StopOnly followed by StopAndWait: #2815
- Refactor: using maps.Clone: #2729
- Don’t print redis errors when sequencer coordinator enabled node is syncing: #2558
- Fix das store related error logging: #2795
- Modify the batch poster to support the delay buffer feature: #2758
- Add missing precompiles comments based on interfaces: #2685
- Deduplicate arbitrator RustBytes types: #2830
- Remove probably leftover println: #2829
- Add bold stake token to sepolia chain info: #2828
- Fix the delayed sequencer missing messages in tests: #2651
- Add prestateTracer system_tests: #2553
- Bump default message pruner min batches left to 1k: #2843
- Use pre-bold instead of develop as the exception branch used to check submodule pin for nitro-contracts: #2846
- Test ArbOS11 to ArbOS32 upgrade: #2837
- BlockValidator is added twice to LatestStakedNotifiers in pre-BOLD case: #2844
- Include tx compression level in calldata units cache: #2849
- Consolidate ArbOS version constants into a single file: #2848
- Get rid of receiver methods on aliased cgo types: #2840
- Stylus benchmark: #2827
- Filter transaction: #2807
- Fall back to the confirmed state if the agreed state is nil: #2854
- Prevent calling arbtrace_* against nitro with
latest
as block number: #2845 - Remove most occurences of log.Crit: #2864
- Allow waiting for a minimum amount of time since parent assertion was created to post a new assertion: #2825
- Store last message pruned in database: #2838
- Update BoLD Submodule and Add Newly Supported Flags to BoLD Staker: #2835
- On-demand module compile: #2739
- Bump golang.org/x/crypto from 0.24.0 to 0.31.0: #2847
- Fix arbitrator-ci: #2872
- Create ADR-0001 Avoid primative constraint types: #2812
Full Changelog: v3.3.0...v3.4.0
Arbitrum Nitro v3.4.0-rc.2
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.4.0-rc.2-d896e9c
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 offchain-labs/nitro-node:v3.4.0-rc.2-d896e9c-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
User-facing Improvements
- Update google-cloud-storage parameters and object retention setting: #2794
- Enable the geth trie prefetcher to improve sequencer performance: #2877
- Revert wasmer upgrade: #2878
Internal Highlights
- Create ADR-0001 Avoid primative constraint types: #2812
Full Changelog: v3.4.0-rc.1...v3.4.0-rc.2
Arbitrum Nitro v3.4.0-rc.1
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.4.0-rc.1-dc53b51
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 offchain-labs/nitro-node:v3.4.0-rc.1-dc53b51-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
Configuration Changes
--node.inbox-reader.hard-reorg
has been removed
User-facing Improvements
- Add redis sentinel support: #2738
- Update go-ethereum fork to v1.14.3: #2806
- Add support for standard genesis.json format: #2761
- Start node only after the block containing rollup creation tx has been finalized (if supported): #2582
- Set ensure-rollup-deployment to false in testnode: #2831
- Pebble config: Enable no-sync mode and increase level sizes to improve performance: #2800
- Add flag to disable DAS chunked stores: #2796
- Remove HardReorg config from InboxReader: #2542
- Add metrics for how many Stylus calls and gas used: #2852
- Fix flatcalltracer: #2867
- Merge wasmer 4.3.7: #2741
- Create a metric for local block execution time: #2871
- Fix
--execution.rpc.gas-cap=0
to again mean infinite gas: #2873
Internal Highlights
- Fix StopOnly followed by StopAndWait: #2815
- Refactor: using maps.Clone: #2729
- Don’t print redis errors when sequencer coordinator enabled node is syncing: #2558
- Fix das store related error logging: #2795
- Modify the batch poster to support the delay buffer feature: #2758
- Add missing precompiles comments based on interfaces: #2685
- Deduplicate arbitrator RustBytes types: #2830
- Remove probably leftover println: #2829
- Add bold stake token to sepolia chain info: #2828
- Fix the delayed sequencer missing messages in tests: #2651
- Add prestateTracer system_tests: #2553
- Bump default message pruner min batches left to 1k: #2843
- Use pre-bold instead of develop as the exception branch used to check submodule pin for nitro-contracts: #2846
- Test ArbOS11 to ArbOS32 upgrade: #2837
- BlockValidator is added twice to LatestStakedNotifiers in pre-BOLD case: #2844
- Include tx compression level in calldata units cache: #2849
- Consolidate ArbOS version constants into a single file: #2848
- Get rid of receiver methods on aliased cgo types: #2840
- Stylus benchmark: #2827
- Filter transaction: #2807
- Fall back to the confirmed state if the agreed state is nil: #2854
- Prevent calling arbtrace_* against nitro with
latest
as block number: #2845 - Remove most occurences of log.Crit: #2864
- Allow waiting for a minimum amount of time since parent assertion was created to post a new assertion: #2825
- Store last message pruned in database: #2838
- Update BoLD Submodule and Add Newly Supported Flags to BoLD Staker: #2835
- On-demand module compile: #2739
- Bump golang.org/x/crypto from 0.24.0 to 0.31.0: #2847
- Fix arbitrator-ci: #2872
Full Changelog: v3.3.0...v3.4.0-rc.1
Arbitrum Nitro v3.3.2
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.3.2-9d70997
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 offchain-labs/nitro-node:v3.3.2-9d70997-validator
which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
What's Changed
This release fixes an issue with flatcalltracer
What's Changed
- Pull in flatcalltracer fix in #2866
Full Changelog: v3.3.1...v3.3.2
Arbitrum Nitro v3.3.2-rc.1
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.3.2-rc.1-9d70997
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.3.2-rc.1-9d70997-validator
which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
What's Changed
This release fixes an issue with flatcalltracer
What's Changed
- Pull in flatcalltracer fix in #2866
Full Changelog: v3.3.1...v3.3.2-rc.1
Arbitrum Nitro v3.3.1
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.3.1-e326369
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.3.1-e326369-validator
which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
What's Changed
This release includes a fix for a tracing regression introduced in v3.2.1
Internal Highlights
- update geth: cherry-pick tracing fix: #2865
Full Changelog: v3.3.0...v3.3.1
Arbitrum Nitro v3.3.1 Release Candidate 1
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.3.1-rc.1-e326369
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.3.1-rc.1-e326369-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
What's Changed
This release includes a fix for a tracing regression introduced in v3.2.1
Internal Highlights
*update geth: cherry-pick tracing fix: #2865
Full Changelog: v3.3.0-rc.4...v3.3.1-rc.1
Arbitrum Nitro v3.3.0
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.3.0-5b5e179
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.3.0-5b5e179-validator
which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
What's Changed
A new parameter --node.batch-poster.max-empty-batch-delay
with a default of 3 days has been added. Nitro chains turn validation permissionless if there have been no assertions created within a 2 week period, so this was added to regularly create an empty batch so that validators can post an assertion even if no traffic has been sent to the chain.
This version includes initial support for BoLD: permissionless validation for Arbitrum chains. More information available here: https://docs.arbitrum.io/how-arbitrum-works/bold/gentle-introduction
Configuration Changes
--execution.caching.stylus-lru-cache
has been replaced by--execution.caching.stylus-lru-cache-capacity
which is now measured in megabytes.--blocks-reexecutor.blocks-per-thread
has been renamed to--blocks-reexecutor.min-blocks-per-thread
--chain.info-ipfs-url
and--chain.info-ipfs-download-path
have been removed, however, they were already nonfunctional in previous releases.--node.block-validator.redis-validation-client-config.producer-config.*
no longer has theenable-reproduce
,check-pending-interval
,keepalive-timeout
andcheck-pending-items
config options.--validation.arbitrator.redis-validation-server-config.consumer-config.keepalive-timeout
has been removed.
User-facing Improvements
- Allow external-signer for batch-poster with DA: #2669
- Make timeout configurable for block validator jit execution: #2698
- Sort storage_flush_cache to make Stylus tracing deterministic: #2693
- Support multiple producers in redis streams for stateless block validators: #2581
- Support google cloud storage as das: #2643
- Document the fact OCL does not support google cloud storage: #2727
- Create a build diagnostic tool V1: #2733
- Support seamless switchover redis for sequencer coordinator: #2526
- This has not been tested in a real chain setup yet, and may be unstable to use.
- New parameter
--node.batch-poster.max-empty-batch-delay
added: #2657 - Support the Arbitrum BoLD Challenge Protocol in Nitro: #2362
- Fix nitro-node validator docker image graceful shutdown: #2780
Internal Highlights
- Merge in go-ethereum v1.14.0: #2517
- RPC posting gas hook refactor: #2774
- Init-reorg: fix logic: #2681
- Improve stability of getNodeCreationBlock for L3s: #2682
- Be more precise when selecting firstMsg in the batch poster: #2646
- Fix CaptureHostIO when slices are bigger than 2^16: #2704
- Stylus LRU cache with bytes capacity instead of number of entries capacity : #2595
- Stylus cache improvements: #2712
- Add dangerous batch poster options to cli: #2776
- Do not use SetFinalizer to remove entries from preimageResolvers to free memory sooner from block validators: #2752
- Use MessageCommitMode when executing future head block messages: #2705
- Gives preference to IPv4 when connecting to Sequencer's feed: #2650
- Jit prover should accept InputJSON format and execute a full block: #2730
- Adjusts benchbin's args to have the same names as prover's args: #2724
- Add Gas and Ink types in rust: #2736
- Improve BlocksReExecutor implementation: #2714
- Add flags and other info for nitro --dev: #2751
- Redis streams: Attempt to clear from PEL again after successfull deletion of Lower: #2755
- Fix inbox reading window after a reorg: #2673
- Use Golang version 1.23: #2711
- Update aws-sdk-go-v2: #2720
- Log from batch poster for which das backends are using chunked vs legacy store: #2747
- Log the DAS public key on startup: #2717
- Remove brotli build dir in make clean: #2703
- Fix spurious refund error log to just be debug: #2617
- Fix spurious "failed to re-send transaction" error logs: #2627
- Validation Inputs wiring: #2604
- DAS RPC Client Metrics: #2549
- Remove arbutil's L1Interface and use *ethclient.Client instead: #2641
- Adjusts log levels for some logs: #2719
- Remove IPFS support: #2636
- Fix memory leak when getting stylus cache metrics: #2734
- Add buildspec.yml for AWS CodeBuild: #2645
- Allow builds without Docker inside of Docker for cbrotli-wasm: #2748
- Merge in upstream go-ethereum v1.14.2: #2552
- Explicitly create zombies for geth v1.14.2: #2732
- Update config description for batch poster max batch size: #2790
- Make golangci-lint 1.62.0 happy: #2785
- Bump google.golang.org/grpc from 1.64.0 to 1.64.1: #2726
- Blocks ReExecution should require --init.then-quit: #2792
- Get rid of the hardcoded list of chains in config_arbitrum.go (geth) instead use arbitrum_chain_info.json (nitro): #2658
- Remove gobwas/ws handshake extensions race condition workaround : #2793
- Move ArbOS upgrade handling to a bit later in block production: #2791
- Update AEP link: #2813
- Revert accidental change to tipReceipient: OffchainLabs/go-ethereum#386
- Include tx compression level in calldata units cache: #2849