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.0andv3.7.6validator workers for you. - If you are using a split validator, you do not want to use
-validatorimage, you need to run a validator worker onv3.7.6as well as a worker forv3.10.0
Configuration Changes
Executables renamed
cmd/daserver->cmd/anytrustservercmd/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-periodanytrusttool--das-rpc-client.*->--rpc-client.*
daprovider parameters changed
daprovider--anytrust.parent-chain.node-url->--parent-chain-node-urldaprovider--anytrust.parent-chain.connection-attempts->--parent-chain-connection-attemptsdaprovider--anytrust.parent-chain.sequencer-inbox-address->--parent-chain-sequencer-inbox-addressdaserver--anytrust.parent-chain.node-url->--parent-chain-node-urldaserver--anytrust.parent-chain.connection-attempts->--parent-chain-connection-attemptsdaserver--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.signedflag 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-sizeoption that sets batch size in bytes used in the TrieDB Cap operation (0 = use geth default). [PR] - Add
execution.caching.trie-commit-batch-sizeoption 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.MarkValidand rely onExecutionClient.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-legacysubmodule pin tov2-mainbranch. [PR] - Rename database variable names [PR]
- Move whole Rust codebase from
arbitrator/tocrates/directory. Move workspace files to the root. [PR] - Align the
execution.ExecutionRecorderinterface 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 countas 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
--craneliftflag 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.Readerimplementations. [PR] - Fix nil pointer panic in
auctioneer_submitBidRPC 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
DelayedMessageDatabaseinterface: [PR] - [MEL] - Implement recording of preimages related to sequencer batches (DA providers): [PR]
- Add new boolean option to
BlocksReExecutorcalledCommitStateToDiskthat will allowBlocksReExecutor.Blocksrange 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