Arbitrum Nitro v3.1.1
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 toarb/sequencer/conditionaltx/*
andarb/txprechecker/condtionaltx/*
metrics were similarly renamed toarb/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
- 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 toarbdebug_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
- 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