Releases: OffchainLabs/nitro
consensus-v60-alpha.2
This release signifies a WASM fraud proof consensus version, and is not a good version to run a node on
WAVM Module Root: 0x5a79438ff2ab312234ee23839ea03b0c9348e856298b5ab1d2c067bf3c725bd0
This is an alpha consensus release for ArbOS v60 with wasmer 7
Full Changelog: consensus-v60-alpha.1...consensus-v60-alpha.2
v3.10.0-rc.3
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.10.0-rc.3-26d4dc2
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.3-26d4dc2-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
Added
- New dangerous parameters
--node.bold.dangerous.assume-validand--node.bold.dangerous.assume-valid-hashto have validator assume all messages up to given message have already been validated. [PR] - Filtered retryable submission redirect: when an ArbitrumSubmitRetryableTx is in the onchain filter, redirect beneficiary/feeRefundAddr and skip auto-redeem. [PR]
- Add consensus v51.1 to dockerfile. [PR]
Fixed
- Fix expose-multigas feature when using a live tracer. [PR]
- Gracefully handle missing sequencerClient in TransactionFilterer. [PR]
- Fix filtered
ArbitrumDepositTx(L1-to-L2 ETH deposits) permanently stalling the delayed sequencer. [PR] - Version-gate FilteredTransactionsState so it is not opened on pre-v60 blocks. [PR]
Internal
- Introduce MachineLocator for Validator. [PR]
- Fix machine locator tests. [PR]
- Add support for consensus v60-alpha.1. [PR]
Full Changelog: v3.10.0-rc.2...v3.10.0-rc.3
v3.9.6-rc.2
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:TBD
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:TBD-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.9.5andv3.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.9.5
User-facing changes
- Enable consensus v51.1 for v3.9.x: #4420
Full Changelog: v3.9.6-rc.1...v3.9.6-rc.2
consensus-v60-alpha.1
This release signifies a WASM fraud proof consensus version, and is not a good version to run a node on
WAVM Module Root: 0xe237db4636ba7878fb1d6998f40fa155260a26484f81db732f9aa7dc1b684bf7
This is a consensus release for ArbOS 60-alpha.1
Full Changelog: consensus-v51...consensus-v60-alpha.1
Arbitrum Nitro Consensus v51.1
This release signifies a WASM fraud proof consensus version, and is not a good version to run a node on
WAVM Module Root: 0xc2c02df561d4afaf9a1d6785f70098ec3874765c638e3cb6dbe8d3c83333e14c
This is a consensus release for ArbOS 51.1
Full Changelog: consensus-v51...consensus-v51.1
consensus-v51.1-rc.1
This release signifies a WASM fraud proof consensus version, and is not a good version to run a node on
WAVM Module Root: 0xc2c02df561d4afaf9a1d6785f70098ec3874765c638e3cb6dbe8d3c83333e14c
This is a consensus release for ArbOS 51.1-rc.1.
Full Changelog: consensus-v51...consensus-v51.1-rc.1
v3.9.6-rc.1
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:TBD
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:TBD-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.9.5andv3.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.9.5
User-facing changes
Internal highlights
- Add assume-valid flags to bold: #4342
Full Changelog: v3.9.5...v3.9.6-rc.1
v3.10.0-rc.2
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.10.0-rc.2-746bda2
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.2-746bda2-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
- Changed
--node.batch-poster.compression-levelto--node.batch-poster.compression-levels - Remove
--initial-l1-base-feeCLI flag from genesis-generator
Batch Poster Compression Levels Configuration
- The new
--node.batch-poster.compression-levelsflag allows operators to specify different compression strategies based on the current backlog of batches to be posted. The configuration is provided as a JSON array of objects, each containing:backlog: The minimum backlog size (in number of batches) at which this configuration applies. First entry must be zero.level: The initial compression level applied to messages when they are added to a batch once the backlog reaches or exceeds the configured threshold.recompression-level: The recompression level to use for already compressed batches when the backlog meets or exceeds the threshold.- Example configuration:
[ { "backlog": 0, "level": 3, "recompression-level": 5 }, { "backlogThreshold": 10, "level": 5, "recompression-level": 7 }, { "backlogThreshold": 20, "level": 7, "recompression-level": 9 } ]
- Validation rules:
- The
backlogvalues must be in strictly ascending order. - Both level and recompression-level must be weakly descending (non-increasing) across entries
- recompression-level must be greater than or equal to level within each entry (recompression should be at least as good as initial compression)
- All levels must be in valid range: 0-11
- The
What's Changed
- Implement capacity endpoint for Rust Validator: [PR]
- ZK: Run the Rust validator with the real block input: [PR]
- ZK: Reduce boilerplate in RPC client: [PR]
- Ensure BoLD Uses Relative Message Counts When Capping the Assertion: [PR]
- Increase Stylus smart contract size limit via merge-on-activate: [PR]
- Make compression level adaptive and configurable #NIT-4153: [PR]
- generate forward_stub at compile time: [PR]
- Reduce parallelism in pebble nightly tests: [PR]
- feat(compliance-chains): s3 polling + hash-store: [PR]
- Improve forwarding transaction log in case of error: [PR]
- stylus params: only use one byte for MaxFragmentCount: [PR]
- ZK: Introduce continuous mode to JIT Validator: [PR]
- ZK: Implement the sender side of the validation communication protocol in Rust: [PR]
- ZK: Delegate EC recovery: [PR]
- Improve inline comments in retryable precompile: [PR]
- Hooking before the first IO instruction in
replay.wasm: [PR] - Forbid init config from being
emptywhengenesis-json-fileis present: [PR] - Configurable event filterer: [PR]
- Merge wasm-libraries workspace with the main one: [PR]
- Do not
deferin a loop: [PR] - Halt delayed sequencer on filtered messages and execute as no-ops: [PR]
- License header update: [PR]
- Add test for batch resizing via ErrMessageTooLarge: [PR]
- Add init message data into genesis.config: [PR]
- resolve small PR review comments for stylus merge on activate: [PR]
- update ProgramPrepare to accept wasm instead of statedb and code: [PR]
- Add S3 custom endpoint support for MinIO/localstack compatibility: [PR]
- Horizontal Scaling of Validation Node: [PR]
- Fix typed nil ExecutionSequencer in CreateConsensusNode: [PR]
- Add test for addressfilter for self-destruct post eip-6780 specification #NIT-4262: [PR]
- Add retry mechanism for anytrust DA connections: [PR]
- Add multi-gas constraints to L2-pricing simulator: [PR]
- Ensure dependabot changelog files are unique: [PR]
- Add support for multiple module roots for Validator: [PR]
- Refactor openInitializeChainDb for Execution/Consensus split: [PR]
- [MEL] - Implement L2 messages accumulation and introduce MessageReader to extract messages from preimages: [PR]
- Multi-fragment activation: charge gas per fragment: [PR]
- Add hashed address filter: [PR]
- Add sequencer queue and tx size metrics: [PR]
- Add benchmarks to L2-Pricing model: [PR]
- Stop using Genesis.Config: [PR]
- Add filteredFundsRecipient ArbOS state field and precompile: [PR]
- Support Address Aliasing for addressfiltering regarding L1 -> l2 msgs #NIT-4249: [PR]
- arb_getL1Confirmations and arb_findBatchContainingBlock RPC APIs in Consensus side: [PR]
- Sequencer calls cmd/transaction-filterer: [PR]
- Introduce genesis-json-file-directory config option: [PR]
- Add events for managing NativeTokenOwner and ChainOwner: [PR]
- Fix expected surplus in sequencer: [PR]
- transaction-filterer command: [PR]
Full Changelog: [PR]
Arbitrum Nitro v3.10.0-rc.1
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 ar...
Arbitrum Nitro v3.9.5
This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.9.5-66e42c4
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.9.5-66e42c4-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.9.5andv3.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.9.5
What's Changed
Various stability fixes. Required for batch poster using blobs, recommended but not required for other nodes.
User-facing changes
- Fix dumpkeyset: #4175
- Stylus: refactor out of gas: #4201
- fix go-ethereum crash in TraceCall with BlockOverrides: #4202
- Add missing BPO configs: #4205
Full Changelog: v3.9.4...v3.9.5