Skip to content

Releases: OffchainLabs/nitro

Arbitrum Nitro v3.3.0 Release Candidate 1

08 Nov 04:26
v3.3.0-rc.1
a81da40
Compare
Choose a tag to compare

This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v3.3.0-rc.1-a81da40

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-rc.1-a81da40-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

What's Changed

This release makes miscellaneous improvements to the batch poster, Stylus execution, block validation, and merges in upstream go-ethereum v1.14.0.

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 the enable-reproduce, check-pending-interval, keepalive-timeoutandcheck-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.
  • PeriodToAllowPostingBatchWithOnlyBatchPostingReport config: #2657

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

Full Changelog: v3.2.1...v3.3.0-rc.1

Arbitrum Nitro v3.2.1

24 Sep 15:38
v3.2.1
d81324d
Compare
Choose a tag to compare

This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v3.2.1-d81324d

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.2.1-d81324d-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

What's Changed

This release adds support for ArbOS 32 for validators.

Internal Highlights

  • Add support for consensus v32 to Docker: #2697

Full Changelog: v3.2.0...v3.2.1

Arbitrum Nitro v3.2.0

24 Sep 14:51
v3.2.0
cb8c8f9
Compare
Choose a tag to compare

This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v3.2.0-f847be0

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.2.0-f847be0-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

The hash in the Docker image tag is different than this commit hash because the published commit was squashed.

What's Changed

This release contains security fixes activated by a new upgrade, ArbOS 32. The Arbitrum Security council is planning to execute an emergency action in order to activate ArbOS 32 in the coming days which is why the version upgrade is required. A binary of the release has been provided ahead of time to allow for more time to upgrade, and the source code will be made available some time before the upgrade action is taken.

If you encounter the error "cpu flags not supported on local cpu", your CPU may be missing support for standard x86 extensions. This can be resolved by adding the --execution.stylus-target.amd64=x86_64-linux-unknown+sse4.2 flag to disable use of these extensions.

User-facing Improvements

  • Add support for ArbOS 32
  • Add custom native tracer for cargo stylus replay: #2560
  • Allow force rebuilding of local wasm store: #2606
    • Support rebuilding of wasm store on init: #2618
  • Remove wasm database after downloading snapshot: #2607

Internal Highlights

  • Geth: pull in change to bubble up snapshot db errors: #2662
  • Support cross-compilation of stylus programs: #2605
  • Update default Stylus x86 architecture: #2614
  • Fix setupFastConfirmation not getting called: #2668
  • Only warn on potentially incompatible WASM module roots: #2663
  • Redis consumer: workers and buffers: #2622
    • Redis consumer fix: #2633
    • Validator recording fix: #2660
  • Block_validator: introduce recording-iter-limit: #2637
  • Disable preimage validation in JIT: #2620
  • Close opened files explicitly instead of relying on the GC: #2628
  • Fix: deploy both erc20 based and eth based templates: #2664
  • Populate stylus target cache before rebuilding wasm store: #2612
  • Add safety check that min basefee must be positive for gas estimation: #2621
  • Creates validator wallet through Staker's DataPoster: #2573
  • Small changes to database conversion: #2591
  • Resolve parent chain block by hash when resolving delayed messages: #2649
  • Lower a couple of info logs down to debug: #2603
  • Add Mac OSX environment variables: #2624

Full Changelog: v3.1.2...v3.2.0

Arbitrum Nitro Consensus v32

24 Sep 15:07
consensus-v32
ce7d035
Compare
Choose a tag to compare

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

WAVM Module Root: 0x184884e1eb9fefdc158f6c8ac912bb183bf3cf83f0090317e0bc4ac5860baa39

This consensus release supports ArbOS 32.

Full Changelog: consensus-v31...consensus-v32

Arbitrum Nitro v3.2.0 Binary Release

23 Sep 20:47
v3.2.0-binary-release
755b95b
Compare
Choose a tag to compare

This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v3.2.0-f847be0

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.2.0-f847be0-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

What's Changed

This release contains security fixes activated by a new upgrade, ArbOS 32. The Arbitrum Security council is planning to execute an emergency action in order to activate ArbOS 32 in the coming days which is why the version upgrade is required. A binary of the release has been provided ahead of time to allow for more time to upgrade, and the source code will be made available some time before the upgrade action is taken.

User-facing Improvements

  • Add support for ArbOS 32
  • Add custom native tracer for cargo stylus replay: #2560
  • Allow force rebuilding of local wasm store: #2606
    • Support rebuilding of wasm store on init: #2618
  • Remove wasm database after downloading snapshot: #2607

Internal Highlights

  • Geth: pull in change to bubble up snapshot db errors: #2662
  • Support cross-compilation of stylus programs: #2605
  • Update default Stylus x86 architecture: #2614
  • Fix setupFastConfirmation not getting called: #2668
  • Only warn on potentially incompatible WASM module roots: #2663
  • Redis consumer: workers and buffers: #2622
    • Redis consumer fix: #2633
    • Validator recording fix: #2660
  • Block_validator: introduce recording-iter-limit: #2637
  • Disable preimage validation in JIT: #2620
  • Close opened files explicitly instead of relying on the GC: #2628
  • Fix: deploy both erc20 based and eth based templates: #2664
  • Populate stylus target cache before rebuilding wasm store: #2612
  • Add safety check that min basefee must be positive for gas estimation: #2621
  • Creates validator wallet through Staker's DataPoster: #2573
  • Small changes to database conversion: #2591
  • Resolve parent chain block by hash when resolving delayed messages: #2649
  • Lower a couple of info logs down to debug: #2603
  • Add Mac OSX environment variables: #2624

Arbitrum Nitro Consensus v32 Binary Release

23 Sep 20:45
consensus-v32-binary-release
755b95b
Compare
Choose a tag to compare

WAVM Module Root: 0x184884e1eb9fefdc158f6c8ac912bb183bf3cf83f0090317e0bc4ac5860baa39

This consensus release supports ArbOS 32.

Arbitrum Nitro v3.1.3 Release Candidate 2

16 Sep 16:57
v3.1.3-rc.2
4483e77
Compare
Choose a tag to compare

This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v3.1.3-rc.2-4483e77

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.1.3-rc.2-4483e77-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

What's Changed

This release adds a native tracer for Stylus calls, and contains numerous stability improvements, including a fix for a database corruption and invalid state issue in go-ethereum.

User-facing Improvements

  • Add custom native tracer for cargo stylus replay: #2560
  • Allow force rebuilding of local wasm store: #2606
    • Support rebuilding of wasm store on init: #2618
  • Remove wasm database after downloading snapshot: #2607

Internal Highlights

  • Geth: pull in change to bubble up snapshot db errors: #2662
  • Support cross-compilation of stylus programs: #2605
  • Update default Stylus x86 architecture: #2614
  • Fix setupFastConfirmation not getting called: #2668
  • Only warn on potentially incompatible WASM module roots: #2663
  • Redis consumer: workers and buffers: #2622
    • Redis consumer fix: #2633
    • Validator recording fix: #2660
  • Block_validator: introduce recording-iter-limit: #2637
  • Disable preimage validation in JIT: #2620
  • Close opened files explicitly instead of relying on the GC: #2628
  • Fix: deploy both erc20 based and eth based templates: #2664
  • Populate stylus target cache before rebuilding wasm store: #2612
  • Add safety check that min basefee must be positive for gas estimation: #2621
  • Creates validator wallet through Staker's DataPoster: #2573
  • Small changes to database conversion: #2591
  • Resolve parent chain block by hash when resolving delayed messages: #2649
  • Lower a couple of info logs down to debug: #2603
  • Add Mac OSX environment variables: #2624

Full Changelog: v3.1.2...v3.1.3-rc.2

Arbitrum Nitro v3.1.2

27 Aug 20:06
v3.1.2
309340a
Compare
Choose a tag to compare

This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v3.1.2-309340a

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.1.2-309340a-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

It's important that you only run the nitro node against trusted databases. If you want to use an untrusted database, you can first remove the wasm directory if it exists (it might be inside the a folder called nitro). Otherwise, the database may have malicious unvalidated code that can result in remote code execution. This is also mitigated by running the Arbitrum Nitro node inside docker.

What's Changed

This release fixes a crash in v3.1.1 for chains imported from Arbitrum Classic, i.e. Arbitrum One. For details on the v3.1.1 release, see the v3.1.1 release notes.

Internal Highlights

  • Return false if nil is passed to IsNotExistError: #2616

Full Changelog: v3.1.1...v3.1.2

Arbitrum Nitro v3.1.1

27 Aug 15:44
v3.1.1
b26e84e
Compare
Choose a tag to compare

Use v3.1.2 instead

This release has an issue preventing successful startup on databases with an Arbitrum Classic message lookup table such as most Arbitrum One databases. This is fixed in v3.1.2.

Release notes

This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v3.1.1-b26e84e

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.1.1-b26e84e-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

It's important that you only run the nitro node against trusted databases. If you want to use an untrusted database, you can first remove the wasm directory if it exists (it might be inside the a folder called nitro). Otherwise, the database may have malicious unvalidated code that can result in remote code execution. This is also mitigated by running the Arbitrum Nitro node inside docker.

What's Changed

This release significantly improves Stylus support including EVM-like tracing, adds support for fast confirmation, adds experimental PathDB support, improves Anytrust DAS stability, improves validator stability, adds additional metrics, and improves tracing support.

Configuration Changes

  • --execution.tx-pre-checker.strictness now defaults to 20 instead of 0, meaning that transactions sent to the node will have some basic checks applied (e.g. nonce isn't too low, account has enough balance, maxFeePerGas is high enough, etc.) before being forwarded to the sequencer. This will help reduce issues with the sequencer rate limiting intermediate nodes due to an influx of invalid transactions.
  • --execution.sequencer.sender-whitelist, --node.batch-poster.data-poster.replacement-times, --node.batch-poster.data-poster.blob-tx-replacement-times, --node.staker.data-poster.replacement-times, and --node.staker.data-poster.blob-tx-replacement-times were all changed from strings with commas separating their components to arrays of strings. This shouldn't affect CLI usage, but will mean that JSON configuration of these values needs to be changed from strings to arrays.
  • --init.reset-to-message has been removed and replaced with --init.reorg-to-message-batch which will reorg to the batch at or before the requested message number. There's also --init.reorg-to-block-batch which takes a block number and --init.reorg-to-batch which takes a batch number.

Metrics Changes

  • arb/sequencer/condtionaltx/* metrics were renamed to arb/sequencer/conditionaltx/* and arb/txprechecker/condtionaltx/* metrics were similarly renamed to arb/txprechecker/conditionaltx/* to fix typos

Experimental PathDB Support

This release adds experimental PathDB support with --execution.caching.state-scheme=path. However, this has not been thoroughly tested, and as such we don't recommend running it in production at this time, as it may have database corruption issues or produce incorrect results. It'll also require a resync with a new database.

User-facing Improvements

  • Add option to enable fast confirmation: #2434
    • Try to fast confirm past nodes too: #2520
    • Disable fast confirmations by default: #2579
  • Pathdb support for full nodes: #2324
  • Add tool for database conversion from leveldb to pebbledb: #2061
  • Add EVM tracing for Stylus programs: #2530
  • Metrics for total gas used for eth_call and total gas used for eth_estimateGas: #2478
  • Update tracing scopeContext's stack to have correct contract address while tracing for contract calls: #2487
  • Santize metric device names for iostat metrics: #2491
  • Fix a metrics typo omitting an "i": #2492
  • [RPC Change] Rename arbvalidator_validateMessageNumber method to arbdebug_validateMessageNumber: #2514
  • Add some dataposter metrics: #2523
  • Fix reorg on init flags: #2538
  • Change comma separated string values in config to string slice: #2480
  • Split-val-entry: allow options for validators: #2574
  • Default to pre-checker enabled: #2556
  • Update dev test chains ArbOS versions in arbitrum_chain_info.json: #2575
  • Expand all --dev flags in place: #2578
  • Lower URL case in latest database init: #2589

Internal Highlights

  • Fix inverted expiry logic for DAS S3 backends: #2600
  • Merge in upstream go-ethereum v1.13.15: #2512
  • Lower data poster max tip pre-rbf from 5 gwei to 1.2 gwei (applies to the batch poster and validator posting transactions to the parent chain): #2569
  • Move TxLookupLimit override into ParseNode: #2481
  • Check all "not found" errors (fixes default data poster config): #2532
  • Fixes block hash retrieval in PopulateFeedBacklog: #2551
  • Produce a more descriptive error when validation server url is not set to a WS/WSS server: #2475
  • validation spawner only recieves one validation binary: #2505
  • Compute and validate wasmModuleRoot while building docker: #2479
  • Avoids fetching batch in execution layer, consensus layer fills all necessary information regarding a batch to the execution layer: #2377
  • Fix "sequencer batches out of order" log: #2488
  • Improve the BOLD Challenge Cache: #2459
  • Redis val fixes: #2486
  • Add keysetHash to "Couldn't get keyset" log msg: #2502
  • Use default rpcclient config when unmarshalling JSON: #2508
  • Add DAS FS fallback to old layout, fix health check : #2510
  • Configurable timeout for HeaderReader polling: #2507
  • Make the merkle tree implementation perform better: #2273
    • Further improvements to Merkleization: #2328
    • Fix a merkle bug with odd-length resize calls: #2550
  • Change the test data stored by das fs healthcheck: #2513
  • Stores message result at consensus side: #2453
  • Fix DAS sync default retention period: #2522
  • Remove some dynamically generated metrics from DAS: #2524
  • fix: stop timer: #2516
  • Target WASM MVP spec for rust builds: #2546
  • Fix split validation: #2568
  • Remove default nitro-val RPC request size limit: #2564
  • Before posting a batch, run it through the inbox multiplexer and confirm it produces the expected set of messages: #2371
  • Update rust pinned in dockerfile from 1.80 to 1.80.1: #2563
  • Remove fast confirmer config: #2547
  • Stylus: add compilation target config, support multiple targets in wasm store: #2463
    • Populate stylus target cache before rebuilding wasm store: #2612
  • Delete messages from coordinator after they become final: #2471
  • Fix data poster replace-by-fee loop: #2590
  • Avoid '^triedb layer .+ is disk layer$' error: #2588
  • Remove parent-chain.wallet from config dump: #2592
  • Fix live reloading of staker config: #2587
  • Lower a couple of info logs down to debug: #2603

Full Changelog: v3.1.0...v3.1.1

Arbitrum Nitro v3.1.1 Release Candidate 3

26 Aug 18:25
v3.1.1-rc.3
b26e84e
Compare
Choose a tag to compare

This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v3.1.1-rc.3-b26e84e

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.1.1-rc.3-b26e84e-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

What's Changed

This release fixes rebuilding the wasm store on startup compared to the last release candidate.

Internal Highlights

  • Populate stylus target cache before rebuilding wasm store: #2612

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