Skip to content

Releases: OffchainLabs/nitro

consensus-v60-alpha.2

27 Feb 02:46

Choose a tag to compare

consensus-v60-alpha.2 Pre-release
Pre-release

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

24 Feb 02:06
26d4dc2

Choose a tag to compare

v3.10.0-rc.3 Pre-release
Pre-release

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-valid and --node.bold.dangerous.assume-valid-hash to 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

21 Feb 03:45
91bf578

Choose a tag to compare

v3.9.6-rc.2 Pre-release
Pre-release

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.5 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.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

19 Feb 21:51
0b4a8fa

Choose a tag to compare

consensus-v60-alpha.1 Pre-release
Pre-release

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

20 Feb 20:53
e5dab35

Choose a tag to compare

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

13 Feb 23:59
e5dab35

Choose a tag to compare

consensus-v51.1-rc.1 Pre-release
Pre-release

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

12 Feb 23:09
e1733dd

Choose a tag to compare

v3.9.6-rc.1 Pre-release
Pre-release

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.5 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.9.5

User-facing changes

  • Fix expected surplus in sequencer (#4038): #4371
  • Add support for consensus v51.1 to Docker: #4370

Internal highlights

  • Add assume-valid flags to bold: #4342

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

v3.10.0-rc.2

11 Feb 22:08
746bda2

Choose a tag to compare

v3.10.0-rc.2 Pre-release
Pre-release

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.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

  • Changed --node.batch-poster.compression-level to --node.batch-poster.compression-levels
  • Remove --initial-l1-base-fee CLI flag from genesis-generator

Batch Poster Compression Levels Configuration

  • The new --node.batch-poster.compression-levels flag 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 backlog values 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

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 empty when genesis-json-file is present: [PR]
  • Configurable event filterer: [PR]
  • Merge wasm-libraries workspace with the main one: [PR]
  • Do not defer in 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

24 Jan 16:44
3a25bb0

Choose a tag to compare

Pre-release

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 ar...
Read more

Arbitrum Nitro v3.9.5

07 Jan 21:16
66e42c4

Choose a tag to compare

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.5 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.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