github OffchainLabs/nitro v3.10.0-rc.1
Arbitrum Nitro v3.10.0-rc.1

pre-release7 hours ago

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.10.0-rc.1-3a25bb0
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

Important for any chains still on ArbOS40:

  • 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.10.0-rc.1-3a25bb0-validator which has the extra script /usr/local/bin/split-val-entry.sh as the default entrypoint (no need to override the default entrypoint). This will run both v3.10.0 and v3.7.6 validator workers for you.
  • If you are using a split validator, you do not want to use -validator image, you need to run a validator worker on v3.7.6 as well as a worker for v3.10.0

Configuration Changes

Executables renamed

  • cmd/daserver -> cmd/anytrustserver
  • cmd/datool -> cmd/anytrusttool

Nitro parameters changed

  • --node.data-availability.* -> --node.da.anytrust.*
  • --node.batch-poster.das-retention-period -> --node.batch-poster.anytrust-retention-period
  • --node.data-availability.rpc-aggregator.das-rpc-client.* -> --node.data-availability.rpc-aggregator.rpc-client.*
  • --node.batch-poster.max-size -> --node.batch-poster.max-calldata-batch-size
  • --node.da-provider.* -> --node.da.external-provider.*

anytrusttool parameters changed

  • anytrusttool --das-retention-period -> --anytrust-retention-period
  • anytrusttool --das-rpc-client.* -> --rpc-client.*

daprovider parameters changed

  • daprovider --anytrust.parent-chain.node-url -> --parent-chain-node-url
  • daprovider --anytrust.parent-chain.connection-attempts -> --parent-chain-connection-attempts
  • daprovider --anytrust.parent-chain.sequencer-inbox-address -> --parent-chain-sequencer-inbox-address
  • daserver --anytrust.parent-chain.node-url -> --parent-chain-node-url
  • daserver --anytrust.parent-chain.connection-attempts -> --parent-chain-connection-attempts
  • daserver --anytrust.parent-chain.sequencer-inbox-address -> --parent-chain-sequencer-inbox-address

Added

  • Enable Execution and Consensus to connect to the other via json-rpc [PR]
  • Merge go-ethereum v1.16.7: [PR]
  • Add log for genesis assertion validation: [PR]
  • Precompiles for multi dimensional multi constraint pricer: [PR]
  • Add return error in case of missing code for SetProgramCached: [PR]
  • Guard zero batch count in inbox search and avoid validator underflow: [PR]
  • Custom DA Complete Fraud Proof Support: [PR]
  • Make uncompressed batch size limit configurable: [PR]
  • Add new option to allow BlocksReExecutor to commit state to disk: [PR]
  • Implement Execution/Consensus interface over RPC: [PR]
  • Add comment about blob decoding failure: [PR]
  • Add metric when validator stops validating because of low memory: [PR]
  • Add address-based transaction filtering for sequencer. [PR]
  • Add support for Geth state size tracking with a flag --execution.caching.state-size-tracking. [PR]
  • Added a note to the --node.feed.output.signed flag that this will use batch poster's wallet for signing. [PR]
  • Add GetMultiGasBaseFee precompile to retrieve fees per resource kind. [PR]
  • Add execution.caching.trie-cap-batch-size option that sets batch size in bytes used in the TrieDB Cap operation (0 = use geth default). [PR]
  • Add execution.caching.trie-commit-batch-size option that sets batch size in bytes used in the TrieDB Commit operation (0 = use geth default). [PR]
  • Add database batch size checks to prevent panic on pebble batch overflow. [PR]
  • new wasm import programPrepare. [PR]
  • new wasm import programRequiresPrepare. [PR]
  • Enable running JIT validation with native input mode. [PR]
  • Enabled consensus node to communicate with ExecutionRecorder over RPC. [PR]
  • Implement recording of txs for MEL validation. [PR]
  • Added a new endpoint to arb namespace called arb_getMinRequiredNitroVersion that returns minimum required version of the nitro node software. [PR]
  • Add new precompile ArbFilteredTransactionsManager to manage filtered transactions. [PR]
  • Add transaction filterers to ArbOwner to limit access to ArbFilteredTransactionsManager. [PR]
  • Limit ArbOwners' ability to create transaction filterers with TransactionFilteringFromTime. [PR]

Changed

  • Arbos storage for multi dimensional constraints: [PR]
  • Arbitrator workspace enhancements: [PR]
  • Only sign important fields in feed: [PR]
  • Post report-only batch after MaxEmptyBatchDelay: [PR]
  • Remove bold/util/StopWaiter use util/StopWaiter instead: [PR]
  • Enhance state management in StopWaiterSafe: [PR]
  • Log critical error when fails to flush batch in setHead: [PR]
  • Broadcaster refactor: [PR]
  • Use stateless keccak where possible: [PR]
  • Optimize ConcatByteSlices to avoid repeated reallocations: [PR]
  • Centralize validator worker throttling in BlockValidator #NIT-3339: [PR]
  • Do not require BatchMetadata for reading DelayedInbox: [PR]
  • redis pubsub: add retries limit and option to disable retries: [PR]
  • Extract saturating arithmetics: [PR]
  • Add MaxTxSize check to ValidateExpressLaneTx(): [PR]
  • Adjust pricing formula with weight normalisation by max weight: [PR]
  • Make bids receiver buffer size configurable: [PR]
  • Improve utility for ensuring batch posting and processing: [PR]
  • Issue refunds based on multi-dimensinal base fee: [PR]
  • Rename bold packages: [PR]
  • Add isActiveSequencer to ExpressLaneTracker log messages: [PR]
  • Remove ExecutionRecorder.MarkValid and rely on ExecutionClient.SetFinalityData: [PR]
  • Unify keccaking: [PR]
  • Rename database variable names: [PR]
  • [config] Multiple DA provider infrastructure: [PR]
  • [config] Rename DAS to AnyTrust: [PR]
  • For wasm compilation target, keccak256 hashing is now expected to be provided by an external module. For JIT and arbitrator provers we inject Rust-based implementation. [PR]
  • Renamed execution subpackages and RPC structs, removing redundancy in names and making them more idiomatic. [PR]
  • Reorganize and refactor JIT validator CLI configuration. [PR]
  • Update contracts-legacy submodule pin to v2-main branch. [PR]
  • Rename database variable names [PR]
  • Move whole Rust codebase from arbitrator/ to crates/ directory. Move workspace files to the root. [PR]
  • Align the execution.ExecutionRecorder interface API with the other execution interfaces. Makes it more suitable for RPC calling. [PR]
  • Fix fifo lock flakey tests and implementation for bold. [PR]
  • Merged ethereum/go-ethereum v1.16.8. [PR]
  • Treat finality msg count as an intermittent issue. Only if it doesn't resolve itself within a short period of time, it will be logged as error. [PR]
  • Changed state-history default to zero for path archive. [PR]
  • Make the --cranelift flag turned on by default for JIT validator. [PR]
  • Remove manual gas math from ArbRetryableTx.Redeem by using static L2 pricing backlog update cost. [PR]

Removed

  • remove gas dimension tracers, system tests, and mock contracts. Multigas is now in the stf. [PR]
  • Remove bold/util/backend.go: [PR]

Fixed

  • Clarify Redis DAS signing key config: [PR]
  • Enhance data poster internal state handling: [PR]
  • Align ArbOwner precompile docs: [PR]
  • Update GenesisBlockNum to first nitro block in chain info: [PR]
  • Do not set init.empty to true when init.genesis-json-file is set: [PR]
  • Show correct value in redis database number error: [PR]
  • Fix timer leak in redislock refresh goroutine: [PR]
  • Use RWLock in StopWaiter: [PR]
  • Fix RecentWasms cache bug by using pointers in methods: [PR]
  • Fix maintenance ticker leak: [PR]
  • Prevent unintended mutation of latestHeader.Number [PR]
  • Fix invalid DA cert branch in inbox: [PR]
  • Solve reexecutor panic if header unavailable: [PR]
  • Prevent unintended mutation of latestHeader.Number in ParentChainIsUsingEIP7623: [PR]
  • Disable chunked-store in datool dumpkeyset [PR]
  • Add sequencer message length check in for the daprovider.Reader implementations. [PR]
  • Fix nil pointer panic in auctioneer_submitBid RPC method when receiving malformed bid data. [PR]
  • Fixed ValidateCertificate proof generation to panic on preimageType overflow (> 255) instead of silently using a fallback value, aligning with the Solidity one-step prover which reverts for this case. [PR]
  • Update implementation of receipts and txs fetching in mel-replay. [PR]
  • Added testing for recording and fetching of logs and txs needed for MEL validation. [PR]
  • Fixed batch poster on L3s not waiting for transaction receipt before posting next batch, causing duplicate batch attempts and spurious error logs. [PR]

Internal

  • [MEL] - Implement delayed message accumulation in native mode: [PR]
  • [MEL] - Update melextraction package to use logs instead of receipts and implement logs and headers fetcher: [PR]
  • [MEL] - Implement preimage recorder for DelayedMessageDatabase interface: [PR]
  • [MEL] - Implement recording of preimages related to sequencer batches (DA providers): [PR]
  • Add new boolean option to BlocksReExecutor called CommitStateToDisk that will allow BlocksReExecutor.Blocks range to not only re-executes blocks but it will also commit their state to triedb on disk. [PR]

Full Changelog: v3.9.5...v3.10.0-rc.1

Don't miss a new nitro release

NewReleases is sending notifications on new releases.