github OffchainLabs/nitro v3.8.0
Arbitrum Nitro v3.8.0

11 hours ago

This release has many bug fixes and improvements. This is not a mandatory upgrade, but any nodes running v3.8.0-rc.* versions are highly encouraged to upgrade.

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.8.0-62c0aa7
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-62c0aa7-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.

Special Note about ArbOS 50 Support

Release v3.8.0 is unrelated to ArbOS50. A future version of Nitro that supports ArbOS50 will eventually be mandatory if the DAO votes to adopt ArbOS50, but this will be addressed later.

Special Note For Database Schema

  • Nitro 3.8.0 changes the database schema, so once a database has been run with 3.8.0, the database can no longer be opened with Nitro 3.7.x.

Schema Change

  • ArbOS database schema version is updated to version 2. This is a one-way upgrade and nodes may not be downgraded to a pre-v3.8.0 release without restoring their database from a backup.

Configuration Changes

nitro

  • --node.batch-poster.data-poster.post-4844-blobs has been removed, now detected automatically
  • --node.bold.strategy has been removed, should use --node.staker.strategy instead
  • --node.data-availability.rpc-aggregator.enable-chunked-store has been removed
  • --node.data-availability.rpc-aggregator.max-store-chunk-body-size has been removed
  • --node.staker.data-poster.blob-tx-replacement-times has been removed
  • --node.staker.data-poster.max-blob-tx-tip-cap-gwei has been removed
  • --node.staker.data-poster.min-blob-tx-tip-cap-gwei has been removed
  • --node.staker.data-poster.post-4844-blobs has been removed, now detected automatically

datool

  • --url changed to --server-url

User-Facing Changs

  • Allow same prevTimestamp in eth_simulateV1: #3535
  • Add GetNativeTokenManagementFrom precompile to ArbOwnerPublic: #3534
  • Fix EIP 2537 in nitro enable it as part of arbos 50 dia: #3492
  • Implement EIP-7825: #3545
  • Update EIP-7910 implementation: #3571
  • Handle --node.staker.strategy and --node.bold.strategy appropriately: #3582
  • Remove deprecated AnyTrust db storage service: #3701

Internal Highlights

  • fix(backend): fix error handling and add comprehensive tests: #3510
  • Optimize sender address derivation: #3518
  • Don't log error if unable to return expired nonce cache failure: #3486
  • Add multi-dimensional gas collector: #3453
  • Refactor move multigascollector to arbos: #3524
  • Add debug flag to enable deep copy of backlog msgs: #3519
  • Merge geth v1.16.0: #3523
  • Use the parent chain for BlobFeePerByte instead of an RPC call: #3531
  • fix acquiring redis lock in batch poster: #3511
  • Merge geth v1.16.1: #3528
  • Account multi-gas in StartTxHook: #3533
  • Return False When Checking if Deposit Tx Type Has Poster Costs: #3536
  • Merge geth v1.16.2: #3537
  • Improve CPU performance when processing blocks: #3541
  • fix that arbos didnt get updated for l1 calldata price: #3470
  • Support passing multi gas by value: #3543
  • Skip block size cap for arbitrum chains: #3544
  • Record only specific targets needed for stylus: #3416
  • Remove rust nightly dependency: #3546
  • Enable arbos 50: #3547
  • Treat precompile code as empty during delegation after arbos 50: #3549
  • Enable ArbOS 50 in system tests: #3550
  • Add consensus v41 to Dockerfile: #3555
  • prover: remove unnecessary wasm exports: #3554
  • Move the MaxTxGas limit enforcement: #3557
  • Add support for consensus v50 to Docker: #3551
  • Store single-gas in multi-gas collector: #3552
  • fix: correct error aggregation for multi-target compile results: #3532
  • fix: prevent HTTP response body leaks in restful DAS client: #3558
  • Instrument multi-gas in StylusPrograms (just for getBytes32): #3539
  • fix: correct rightshift linter documentation: #3562
  • Update gammazero dependency: #3565
  • Update go version to 1.24.x across github workflows: #3567
  • Merge geth v1.16.3: #3568
  • Multigas: support geth multigas api changes: #3569
  • Add suppoort for Consensus V50 (rc.3) to Docker: #3574
  • fix: Correctly count struct fields in the structinit linter: #3579
  • Fix PublishedMachine tests to handle cases when latest release is behind latest ArbOS: #3581
  • Multigas: Instrument GasChargingHook with multi-gas: #3576
  • Run execution-spec-tests in nightly CI: #3577
  • Fix: Return proper error on non-200 in RestfulDasClient.ExpirationPolicy: #3585
  • Move output dir setup to constructor; make Start launch-only: #3578
  • Small fixes related to DA: #3591
  • fix: Make structinit linter work cross packages: #3586
  • Test Genesis assertion on nitro init: #3570
  • Update Rust to 1.88.0: #3553
  • CustomDA core Arbitrator & WASM infra: #3548
  • Remove redundant Background context initialization in poster_test: #3595
  • Include msg.SetCodeAuthorizations field when constructing arbitrum.TransactionArgs: #3598
  • Fail instead of panic when building second node if first node was not built with L1: #3601
  • Turn bold into a sub-package of nitro: #3599
  • Unify DAS interfaces: #3593
  • Add to chain_info: feed-signed: #3583
  • Update the implementation of EIP-7825: #3589
  • Fix l1 pricing state field order: #3602
  • Multigas: Add multi gas to transaction receipt and remove collector: #3594
  • bugfix: genesis validation without l1 reader: #3607
  • Extract streaming protocol (sender): #3603
  • Hide multi-gas behind feature flag: #3613
  • Fix race in DAS chunk assembly by adding per-batch locking: #3588
  • Arbos50 block gaslimit: #3606
  • bold/e2e: fix Anvil startup race causing RPC hangs in end-to-end tests: #3612
  • Fix ProduceBlockAdvanced handling of txs that don't need sequencing hooks: #3627
  • Extract streaming protocol (receiver): #3625
  • Gas floor: #3618
  • Multigas: Fix api.go to use new evm.Create signature: #3630
  • Add suppoort for Consensus V50 (rc.4) to Docker: #3638
  • Make sure to retry fast confirmation on failure: #3640
  • fix: recreate-missing-state-from panic: #3464
  • Add FloorGasAdditionalTokens to floor-gas computation: #3642
  • Fix redefining of staker related metrics: #3592
  • Multigas: Fix api.go to use new callcode/delegatecall/staticcall signatures: #3635
  • Instrument multi-gas in account HostIOs: #3645
  • fix: use RLock instead of Lock in CollectMachineHashes for concurrent…: #3632
  • fix: extract SerializedChainConfig from json directly: #3636
  • Remove unnecessary alias imports: #3637
  • Fix goroutine loop variable capture in sequencer shutdown forwarding: #3623
  • fix: Docker and tool version checks for accurate reporting: #3643
  • Account for multi-gas in transaction intrinsic gas: #3639
  • batch_posting report: fix addition of batchExtraGas: #3654
  • Fix some tests: #3657
  • stylus target: infer support of previous sse versions from more advanced ones: #3649
  • test(programs): wire cranelift flag through compileNative in testcompile: #3634
  • Reduce error message to trace: #3660
  • arbos: Instrument multi-gas in emitLog HostIO: #3646
  • Fix data race in LocalFileStorageService pruning goroutine: #3659
  • 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
  • arbos: Instrument multi-gas in create HostIO: #3672
  • fix: correct safe-wait delta calculation in edge tracker and transact: #3633
  • arbos: Instrument multi-gas in doCall HostIO: #3663
  • Fix underflow inside the gas charging hook: #3688
  • fix sendroot generation for genesis generator: #3686
  • 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
  • Revert #3700: #3711
  • arbos: Fixup log messages in attributeWasmComputation: #3709
  • 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
  • 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
  • Refactor caller context creationi and remove redundant argument: #3733
  • Merge 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
  • Add support for consensus-v50-rc.5 to Dockerfile: #3744
  • Remove Double Account Creation in BoLD Challenge Tests: #3746
  • Add DA proof support to daprovider interface: #3600
  • Refactor consensus-execution sync to push sync data: #3538
  • update arbdb schema version to 2: #3759
  • Extend CodeCov operations in CI: #3749
  • rpcclient: respect context cancellation during reconnect wait: #3751
  • Support multi-dimensional resource constraints: #3755
  • fix: Close response body on non-200 Beacon REST responses to prevent connection leaks: #3756
  • DataPoster: Verify external-signer transaction is signed by the expected address: #3731
  • Hardening: fix CloseExec race, secure chunk-size tests, enforce gci: #3747
  • fix: IP address string conversion in connection limiter: #3762
  • DataStreaming: Fix last-chunk size validation when totalSize is a multiple of chunkSize: #3732
  • feature(das): make trie iterators robust to stray files: #3739
  • Import data streaming changes: #3770
  • Fix falkiness in TestTimeboostBulkBlockMetadataAPI: #3781
  • Remove pre sylus validation: #3785
  • tests: Assert multi gas in system tests: #3752
  • Consolidate gotestsum to run all packages at once for CI performance gains: #3743
  • Add flag to enable cell proofs for fusaka: #3788
  • Fix stylus multi-gas test: #3795
  • Fix precision on the calculation of the backlog cost and the l1 gas p…: #3777
  • Change MaxArbosVersionSupported to 40: #3800
  • Fix backward incompatible data-streaming protocol change: #3802
  • Backport Correct the order TransactionStreamer and PopulateFeedBacklog (#3812): #3813
  • Reject Estimates for BoLD Txs that Exceed Fusaka's Max Tx Gas Cap (#3…: #3815
  • Add support for new beacon chain /blobs endpoint: #3831
  • For L3 on arbitrum return false for shouldEnableCellProofs instread of erroring out: #3827
  • don't open freezer for wasm and arbitrumdata databases : #3832
  • misleading blob-related dataposter config to v3.8.x-release: #3833
  • Toggle rpc endpoint used on errors: #3837
  • Fix out of bounds config access in dataposter: #3839
  • getNextBlockToRead does not deped on FillInBatchGasField (#3851): #3864
  • Fix broadcast client shutdown deadlock: #3885
  • Turn off feed-signed flag for sepolia (#3891): #3895
  • Fix fast confirm not working for EOA on pre - bold (#3902): #3903
  • Add hardcoded transaction hash and gas for ArbSepolia (#3876, #3901): #3904
  • identify already exists errors correctly while creating assertions (#3875): #3878
  • Fix Fusaka Cell Proof support for external signers (#3910): #3911
  • remove lock when setting finality data (#3916): #3921
  • update sepolia contract address (#3917): #3922
  • Fix PopulateFeedBacklog implementation (#3953): #3955
  • Remove internal daprovider server for AnyTrust: #3956
  • Remove redundant DataStreamer retry mechanism: #3957

Full Changelog: v3.7.6...v3.8.0

Don't miss a new nitro release

NewReleases is sending notifications on new releases.