Skip to content

Releases: OffchainLabs/nitro

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.

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

Arbitrum Nitro v3.1.1 Release Candidate 2

22 Aug 21:38
v3.1.1-rc.2
4650d89
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.2-4650d89

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

What's Changed

This release fixes S3 Anytrust DAS expiry compared to the last release candidate.

Internal Highlights

  • Fix inverted expiry logic for DAS S3 backends: #2600
  • Lower a couple of info logs down to debug: #2603

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

Arbitrum Nitro v3.1.1 Release Candidate 1

20 Aug 21:45
v3.1.1-rc.1
75f3aaf
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.1-75f3aaf

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

What's Changed

This release fixes the validator, adds a tool to convert leveldb databases to pebbledb, and adds EVM-like tracing for Stylus programs compared to the last beta release.

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.

User-facing Improvements

  • Add tool for database conversion from leveldb to pebbledb: #2061
  • Add EVM tracing for Stylus programs: #2530
  • Disable fast confirmations by default: #2579
  • 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

  • Lower data poster max tip pre-rbf from 5 gwei to 1.2 gwei: #2569
  • Stylus: add compilation target config, support multiple targets in wasm store: #2463
  • 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

Full Changelog: v3.1.1-beta.3...v3.1.1-rc.1

Arbitrum Nitro v3.1.1 Beta 3

14 Aug 00:19
v3.1.1-beta.3
3031234
Compare
Choose a tag to compare
Pre-release

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

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

What's Changed

This release contains various validation fixes compared to the last beta release.

However, please note that Stylus validation is still incompatible in this version with previous databases. As a workaround, you can remove the wasm folder from your database if you're running a Stylus enabled chain (e.g. Arbitrum Sepolia).

Configuration Changes

  • --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.

User-facing Improvements

  • Change comma separated string values in config to string slice: #2480
  • Split-val-entry: allow options for validators: #2574

Internal Highlights

  • 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

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

Arbitrum Nitro v3.1.1 Beta 2

06 Aug 21:31
v3.1.1-beta.2
6073359
Compare
Choose a tag to compare
Pre-release

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

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

What's Changed

This release adds support for fast confirmation, improves Anytrust DAS stability, adds additional metrics, and improves tracing support.

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

User-facing Improvements

  • Add option to enable fast confirmation: #2434
    • Try to fast confirm past nodes too: #2520
  • Pathdb support for full nodes: #2324
  • 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

Internal Highlights

  • Merge in upstream go-ethereum v1.13.15: #2512
  • 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

Full Changelog: v3.1.0...v3.1.1-beta.2

Arbitrum Nitro v3.1.0

15 Jul 21:29
v3.1.0
7d1d84c
Compare
Choose a tag to compare

This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v3.1.0-7d1d84c

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.0-7d1d84c-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 31, which is a required upgrade for Arbitrum Sepolia by Tuesday, July 23nd, 2024 13:00 ET, and should the on-chain vote pass, will be required in approximately a month for Arbitrum One and Arbitrum Nova. This release also improves the Anytrust data availability system.

Configuration Changes

  • The --p2p.* options were removed, as the P2P system doesn't do anything in nitro yet and was causing incompatibilities loading Arbitrum Classic blocks.
  • If you're running a batch poster, non-default Anytrust DAS signermasks are no longer supported. The signermask must now be consecutive powers of two for each signer in the keyset. If this is not the case, a new keyset must be generated to be compatible with this version's batch poster. As part of this change, the signermask field in DAS keyset backends is now ignored and no longer required.
  • The Anytrust DAS local-db-storage is deprecated in this release, and will soon be removed. To migrate to the new filesystem database, use --data-availability.migrate-local-db-to-file-storage

User-facing Improvements

  • Make DAS backends and keyset easier to configure, fixes: NIT-2594: #2427
  • Anytrust DAS filestore trie layout migrator and expiry: #2385
  • Deprecate local-db-storage, add migration opt: #2409
  • Don't post a batch that would cause a reorg due to being near the layer 1 minimum block or timestamp bounds: #2411
  • Support auto-detection of database engine (pebbledb vs leveldb): #2447
  • Add iostat system metrics: #2398
  • Metric for any das.Aggregator Store errors: #2410
  • Add GAS opcode to Stylus tracing, and after producing a fake EVM GAS opcode in a trace, add a POP afterwards: #2382
  • Add LOG opcodes to Stylus tracing: #2452
  • Export redis-url for valnode: #2464
  • Drop nitro p2p config options: #2462
    • Fix disabling P2P: #2485

ArbOS 31

  • Stylus compilation version 2: #2425
  • Separate cached from call cost: #2426
    • Minor fixes to "separate cached from call cost": #2430
    • Update minInitGas for stylus v2: #2436
  • Specify address when caching Stylus program: #2423
  • Require program.version == params.Version when caching: #2435
  • Add a minimum cost to Stylus return data: #2424
  • ArbOS 31: #2461

Internal Highlights

  • Sequencer coordinator shouldn't want lockout if local blockchain is lagging too much behind transaction streamer: #2437
  • init: allow classic node exported data in db dir: #2454
  • Add consensus-v31 to Dockerfile: #2465
  • Separate DAS keyset and batch fetching logic: #2429
  • Build arbitrator.h on test-go-deps: #2438
  • Update testnode pin: #2439
  • Snapshot downloading changes:
    • Add option to enable the checksum validation: #2384
    • Support latest snapshot with tar.gz extension: #2446
    • Init: define parts with manifest file: #2376
  • Feed Client should log loud error when rate limited: #2458
  • Fetch Published Machine to test compatibility: #2394
  • Don't close the sigint channel: #2472
  • [DAS] Always make expiry index: #2470
  • init: fix loading db with custom ancient path: #2474
  • Fix validator pending validations metric: #2473
  • Define Execution Run Method to Compute Machine Hashes With Step Size for BOLD: #2392
  • Break down query log range for validators: #2443

Full Changelog: v3.0.3...v3.1.0

Arbitrum Nitro v3.1.0 Release Candidate 2

12 Jul 00:35
v3.1.0-rc.2
1fcaf60
Compare
Choose a tag to compare

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

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

What's Changed

This release candidate deprecates the Anytrust DAS local-db-storage and improves batch poster safety compared to v3.1.0-rc.1.

Configuration Changes

  • The Anytrust DAS local-db-storage is deprecated in this release, and will soon be removed. To migrate to the new filesystem database, use --data-availability.migrate-local-db-to-file-storage

User-facing Improvements

  • Don't post a batch that would cause a reorg due to being near the layer 1 minimum block or timestamp bounds: #2411
  • Deprecate local-db-storage, add migration opt: #2409

Internal Highlights

  • Add consensus-v31 to Dockerfile: #2465
  • Don't close the sigint channel: #2472
  • [DAS] Always make expiry index: #2470
  • init: fix loading db with custom ancient path: #2474
  • Fix validator pending validations metric: #2473
  • Define Execution Run Method to Compute Machine Hashes With Step Size for BOLD: #2392

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

Arbitrum Nitro v3.1.0 Release Candidate 1

10 Jul 00:56
v3.1.0-rc.1
2c1feee
Compare
Choose a tag to compare

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

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

What's Changed

This release candidate adds support for ArbOS 31 and a new Anytrust filestore layout compared to v3.3.4-beta.1.

Configuration Changes

  • The --p2p.* options were removed, as the P2P system doesn't do anything in nitro yet and was causing incompatibilities loading Arbitrum Classic blocks.

User-facing Improvements

  • Add LOG opcodes to Stylus tracing: #2452
  • Anytrust DAS filestore trie layout migrator and expiry: #2385
  • Export redis-url for valnode: #2464
  • Drop nitro p2p config options: #2462

ArbOS 31

  • Stylus compilation version 2: #2425
  • Separate cached from call cost: #2426
    • Minor fixes to "separate cached from call cost": #2430
    • Update minInitGas for stylus v2: #2436
  • Specify address when caching Stylus program: #2423
  • Require program.version == params.Version when caching: #2435
  • Add a minimum cost to Stylus return data: #2424
  • ArbOS 31: #2461

Internal Highlights

  • init: allow classic node exported data in db dir: #2454
  • Snapshot downloading changes:
    • Add option to enable the checksum validation: #2384
    • Support latest snapshot with tar.gz extension: #2446
    • Init: define parts with manifest file: #2376
  • Feed Client should log loud error when rate limited: #2458
  • Fetch Published Machine to test compatibility: #2394

Full Changelog: v3.0.4-beta.1...v3.1.0-rc.1