This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.8.0-rc.5-6c74ee2
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.8.0-rc.5-6c74ee2-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
Special Note 1
Nitro 3.7.0 pulled in go-ethereum 1.15.6 which changed log index from bloombits to filtermap. This means that database previously running pre-Nitro 3.7.0 on startup there will be elevated CPU usage for 50+ hours while new FilterMaps are generated for log indexing. If log queries are not used, the parameter --execution.rpc.log-no-history
can be used to completely disable log indexing.
Special Note 2
Nitro 3.7.0 pulled in go-ethereum 1.15.11 which includes a brand new log indexing system called filtermaps
that has resulted in an increase in log indexing latency due to Nitro’s current reliance on HashDB (instead of PathDB). In some cases, this can delay log queries from being served anywhere between 5 seconds to 2 minutes on Arbitrum One during long tail unindexing. We’ve observed that this happens roughly once per day based on Arbitrum One mainnet traffic levels. Teams who need to serve log queries with consistent latency (e.g. eth_getLogs
, eth_getFilterLogs
, eth_getFilterChanges
) can use the configuration parameter --execution.rpc.log-history=0
to keep all log history, which will only slightly increase database growth. Teams running their own log indexer may be unaffected. At some point, a future release of Nitro is expected to fix the issue of log index pruning being able to block log queries.
What's changed
Final touches on ArbOS50 support, continue adding multi-dimensional gas support, minor fixes throughout codebase.
User facing changes
- Remove deprecated AnyTrust db storage service: #3701
Internal highlights
- Fix some tests: #3657
- stylus target: infer support of previous sse versions from more advanced ones: #3649
- Wire cranelift flag through compileNative in testcompile: #3634
- Reduce error message to trace: #3660
- Instrument multi-gas in emitLog HostIO: #3646
- Fix data race in LocalFileStorageService pruning goroutine: #3659
- Use the t.TempDir() for L1 data directory in tests: #3671
- Overhaul GitHub actions and workflows to add a merge queue: #3655
- fix(fuzz): validate --fuzzcache-path against fuzzcachepath, not binpath: #3656
- Fix DAS server http.Server.Addr and add graceful shutdown timeout: #3673
- Data stream improvements: #3661
- Revert change to the server address: #3677
- Fail the can_proceed job instead of skipping it: #3676
- arbos: Instrument multi-gas in create HostIO: #3672
- Cancel heavy jobs in progress when git.ref is updated: #3674
- fix: correct safe-wait delta calculation in edge tracker and transact: #3633
- Do not run CI workflow on push event (redundant with merge queue): #3679
- arbos: Instrument multi-gas in doCall HostIO: #3663
- Fix underflow inside the gas charging hook: #3688
- fix sendroot generation for genesis generator: #3686
- fix: enable ReadHeaderTimeout config and add tests: #3683
- Remove the quadrupling of MaxPerBlockGasLimit: #3692
- fix: expected hash in parent-chain linkage error: #3628
- Detailed batch post report: #3696
- Move funding common accounts to genesis block for L1: #3682
- arbos: Fixup log messages in attributeWasmComputation: #3709
- chore: remove no-op OS-specific prerequisites block in check-build.sh: #3675
- fix: missing reassignment of rivals when recording creation times in block snapshot: #3619
- update CI/CD infrastructure: standardize actions and upgrade linting tools: #3702
- fix(events): use stable subscription ids and remove by id: #3563
- System tests should use BOLD contracts by default: #3690
- Fix timer leaks in transaction streamer retry logic: #3717
- arbos: Instrument multi-gas in setTrieSlots HostIO: #3713
- fix: correct error message formatting in blockchain and genesis generator: #3722
- Interpolate the RUN_URL in Slack notification: #3723
- fix: use Counter for nonceFailureCache overflow metric: #3648
- Close HTTP response body to prevent connection leaks in REST URL list fetcher: #3715
- Fix secondary beacon URL parsing in BlobClient: #3721
- fix(solimpl): correct UpperChild zero-check to use UpperChildId: #3703
- Add multi-dimensional gas metrics: #3726
- Instrument multi-gas in precompiles: #3729
- Enable CodeCov analysis: #3714
- Refactor caller context creation and remove redundant argument: #3733
- Merge go-ethereum v1.16.4: #3734
- timeboost: replace time.After in loop with cancellable timer to prevent leaks: #3728
- feat(nitro-val): implement ValidationNodeConfig.Validate with logging and persistent checks: #3735
- remove: delete unused HashPlusInt function from arbos/util: #3730
- Use also head_ref for limiting CI concurrency: #3741
- Add support for consensus-v50-rc.5 to Dockerfile: #3744
Full Changelog: v3.8.0-rc.4...v3.8.0-rc.5