Releases: OffchainLabs/nitro
Arbitrum Nitro v2.2.0 Alpha 1
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v2.2.0-alpha.1-fdd098e
What's Changed
This release continues work on the execution split, and has many improvements, such as allowing chains to increase the contract size limit and adding a --dev
flag to the node to easily spin up a local dev node.
Configuration Changes
- The
--node.caching.*
,--node.forwarder.*
,--node.forwarding-target
,--node.parent-chain-reader.*
,--node.rpc.*
,--node.tx-lookup-limit
,--node.sequencer.*
,--node.tx-pre-checker.*
, and--node.recording-database
flags have all been moved from--node.*
to--execution.*
. E.g.--node.caching.archive
is now--execution.caching.archive
. - If you were running a sequencer with
--node.sequencer.enable
, you must now specify both--execution.sequencer.enable
and--node.sequencer
. - The
--node.archive
flag was deprecated for a while as it was being moved, and it has now been removed in favor of--execution.caching.archive
.
User-facing Improvements
- Add
--dev
flag to easily start up a local L2-only dev chain: #1914 - Change default sequencer MaxBlockSpeed to 250ms: #1927
- Implement external signer for dataposter: #1919
- Create access lists for batchposter transactions to reduce storage access cost: #1905
- Add access list entries for dynamic storage slots for bridge contract: #1907
- Add new metrics for inbox: #1909
- Add --log-type option for daserver to allow for JSON logging: #1925
- Add secondary feed support to go relay: #1908
- Fix restarting of stopped secondary feeds: #1944
- Support creating ERC20 rollup: #1879
Pending Consensus v10.3 Improvements
This will require a new consensus release and WASM module root to work, which should be part of the next beta nitro release.
- Make contract size limit configurable: OffchainLabs/go-ethereum#255
Internal Highlights
- Execution service 3: initial execution-node, interface+implementation: #1537
- Retain new feed messages when cache is cleared: #1945
- Cache ArbOS storage keys: #1767
- Use new DataPoster storage encoding by default: #1954
- Match against "execution reverted" case insensitive: #1955
- Node builder pattern for running test nodes in tests: #1883
- Refactor System Tests: #1936
- Add a CI step to start up a dev test node: #1917
- Fix retryable gas estimation when overriding gas price to zero: #1929
- Don't ignore target/machines for Docker builds: #1918
- Add metrics to time each part of WSBroadcastServer’s StartWithHeader: #1926
- Prevent double
v
in reported version: #1942 - Fix typo and let potuz have a nitro PR: #1910
Full Changelog: v2.1.1...v2.2.0-alpha.1
Arbitrum Nitro v2.1.3
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v2.1.3-e815395
What's Changed
This release fixes enabling the delayed sequencer and feed broadcast output without also enabling the sequencer coordinator, which previously got stuck at startup due to a misordered startup. This release is only necessary if you're running the sequencer on an Arbitrum chain.
Internal Highlights
- arbnode: Init broadcast server before sequencing: #1950
Full Changelog: v2.1.2...v2.1.3
Arbitrum Nitro v2.1.2
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v2.1.2-4c55843
What's Changed
This release fixes eth_createAccessList
which was broken and always returned "method handler crashed" on the last release (2.1.1).
User-facing Improvements
- Fix the
eth_createAccessList
RPC by handling a nil BlockContext in the Arbitrum ApiBackend OffchainLabs/go-ethereum#262
Full Changelog: v2.1.1...v2.1.2
Arbitrum Nitro v2.1.1
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v2.1.1-e9d8842
What's Changed
This release fixes archive nodes which were broken on the last release (2.1.0).
User-facing Improvements
- Add support for pebble db (not enabled by default yet): #1859
- Allow using different redis keys for dataposter: #1863
Pending ArbOS Version 12 Improvements (work in progress)
- Add methods to configure brotli compression level in ArbOS 12 by @ganeshvanahalli in #1865
Internal Highlights
- Disable skipping saving state in archive node by default: #1900
- Use sequencer inbox isSequencer to verify feed signatures: #1630
- Support new preimage types in proving: #1814
- Upgrade log level to Error when losing connection to L1 for too long: #1783
- Only warn if we hit an issue polling for batch reverts: #1892
Full Changelog: v2.1.0...v2.1.1
Arbitrum Nitro v2.1.0
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v2.1.0-72ccc0c
Warning
We're investigating reports of a crash on archive nodes on this version. If you run an archive node, we'd recommend skipping to v2.1.1.
What's Changed
This release adds support for L3 Arbitrum Orbit chains, improves batch poster reliability, and adds various new RPC features.
Configuration Changes
All changes are referred to by the CLI argument but the equivalent JSON options have also been changed accordingly.
--l2.chain-id
has been renamed to--chain.id
- You can now optionally specify
--chain.name
instead, with the possibilities "arb1", "nova", and "goerli-rollup"
- You can now optionally specify
--l1.url
has been renamed to--parent-chain.connection.url
--l1.connection-attempts
was removed (see the--parent-chain.connection.*
family of options for replacements, but the defaults should result in a good number of attempts already)--l1.chain-id
has been renamed to--parent-chain.id
- All other
--l2.*
options have been renamed to--chain.*
- All other
--l1.*
options have been renamed to--parent-chain.*
--node.batch-poster.poll-delay
has been renamed to--node.batch-poster.poll-interval
User-facing Improvements
- Orbit chain (L3) support
- Add sepolia-rollup testnet support: #1829
- Fix sepolia-rollup feed connection scheme: #1830
- Fix the eth_estimateGas RPC gas cap: #1615
- Add option to disable L1 charging to the eth_call RPC: #1790
- Add new RPC GetL2BlockRangeForL1 to fetch L2 block range for L1 block number: #1860
- Upgrade ConditionalOptions variables (for the eth_sendRawTransactionConditional RPC) to type math.HexOrDecimal64: #1848
- Allow separate wallets for validator and batch poster: #1605
- Execution service 2: separate block validation from the rest of the node: #1536
- This is useful to separate block validator resource consumption (and potential out of memory kills) from the rest of the node
- Separate block validation node command: #1578
- Prune old messages and delayed messages: #1569
- Don't save every state on archive node: #1542
- Recreate missing state for RPCs on archive nodes: #1455
- Reject RPC requests if optional memory limit is exceeded: #1738
- Implement leveldb storage for dataposter: #1736
- Make the default data poster storage backend LevelDB: #1856
- Wait for block bounds to be safe before posting batches: #1665
- Add gas used since startup to prometheus metric: #1762
- Rename "arb/sequencer/gasused" to "arb/gas_used": #1800
- Run pprof (by default disabled) on a separate port than metrics: #1758
- Introduce initial max tip cap for dataposter: #1797
- Add ability to dump das keyset bytes to datool: #1698
- Add a raw l1 private key option to the deploy script: #1748
- Use the data poster for validators/stakers, improving transaction posting reliability
- Default to using "safe" instead of "finalized" for delayed sequencing: #1804
- Add sequencer coordinator management terminal UI tool: #1822
Consensus v10.2: L3 Orbit Chain Improvements
This consensus upgrade is only for Arbitrum Orbit L3 chains and need not be applied to L2s like Arbitrum One or Arbitrum Nova.
- Parse the initial data cost out of the init message: #1704
- Parse new BatchPostingReport field extraGas: #1701
Pending ArbOS Version 11 Improvements (work in progress)
- Add EVM Shanghai support: #1583
- Resolve chain owners list in ArbOS version 11 upgrade: #1768
- Update L1 pricing params to more accurate values: #1549
- Add GetL1RewardRate and GetL1RewardRecipient methods to ArbGasInfo: #1775
- Fix retrayble fee refund: #1789
Internal Highlights
- L3 support implementation details
- replay: load chain config from init msg / arbos state: #1598
- Update GetPendingCallBlockNumber to handle l3 chains: #1593
- Use ParentChainBlockNumber instead of assuming that parent is l1: #1594
- Store rollup node ArbSys block numbers if on an Arbitrum host chain: #1597
- Add support for consensus v10.2 to Dockerfile: #1722
- Use create2 to deploy the RollupProxy and predict address: #1629
- Sequence txs with the L1 (not parent chain) block number: #1693
- Make the staker NodeInfo BlockProposed an L1 block: #1695
- Miscellaneous L3 timing fixes: #1717
- Improve batch poster reliability for L3s: #1835
- Fix batch bounds calculation on L3s: #1841
- Disable wait-for-l1-finality on L3 data posters: #1846
- Improve batch size and tx size limit defaults for L3s: #1855
- Update arb1 and nova feed URLs to new domain: #1886
- inbox_tracker: bugfix - remove values from batchMeta cache: #1699
- Fix lost txQueueItems in sequencer: #1808
- Fix changing the basefee in non-mutating calls: #1850
- In the data poster, properly allocate fee spending across transactions: #1818
- Make the data poster nonce query resilient: #1640
- Fix data poster nonce query: #1682
- Add a safety check that we aren't reposting a known batch: #1685
- If the data poster fails to acquire the redis lock, retry quicker: #1684
- Store haveUsefulMessage in buildingBatch: #1696
- Handle nil parent chain BaseFee in data poster instead of crashing: #1707
- Check that the nonce is correct in the data poster: #1834
- Fix batch poster fixAccErr not resetting when the error stops: #1849
- Add the missing ContractAddress field to the logs receipt RLP format: #1632
- seq_coordinator: only take over if all blocks were built: #1623
- When acquiring the lockout, populate the feed backlog: #1627
- Populate the feed backlog on sequencer startup even if coordinator disabled: #1634
- Merge in upstream go-ethereum v1.12.0: #1691
- block_processor: fix header for block being built: #1650
- Create rpcclient: #1603
- Fix error handling in block validator: #1697
- Add maintenance lock to sequencers: #1709
- Track validation count in client: https://github.com/Offcha...
Arbitrum Nitro v2.1.0 Beta 16
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v2.1.0-beta.16-ad8cfe5
What's Changed
This release fixes spurious batch poster error logs compared to the previous beta release.
Internal Highlights
- Don't confirmDataPosterIsReady if watchtower: #1858
- Handle block "not found" case in batch revert polling: #1857
- Reorder prechecker balance and conditional options checks: #1862
Full Changelog: v2.1.0-beta.15...v2.1.0-beta.16
Arbitrum Nitro v2.1.0 Beta 15
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v2.1.0-beta.15-38ad1f1
What's Changed
This release fixes the default batch poster configuration and enables LevelDB storage for the data poster by default compared to the previous beta release.
User-facing Improvements
- Improve batch size and tx size limit defaults for L3s: #1855
- This PR expects a new field for chain information:
parentChainIsArbitrum
. This should be set to true if the parent chain is an Arbitrum chain (i.e. this chain information is for an Orbit chain). For now, this field is automatically filled in if not present, but we will expect this field to be present in chain information JSONs going forward.
- This PR expects a new field for chain information:
- Make the default data poster storage backend LevelDB: #1856
- Default to using "safe" instead of "finalized" for delayed sequencing: #1804
Internal Highlights
- Fix Start/Stop of the staker wallet's data poster: #1854
- Check validity of input before setting pendingWasmModuleRoot of StatelessBlockValidator: #1853
Full Changelog: v2.1.0-beta.14...v2.1.0-beta.15
Arbitrum Nitro v2.1.0 Beta 14
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v2.1.0-beta.14-9a65598
What's Changed
This release fixes data poster backwards compatibility compared to the previous beta release.
User-facing Improvements
- Implement legacy storage encoding with hot-reload flag to change encoding strategy on the fly: #1844
Internal Highlights
- Fix changing the basefee in non-mutating calls: #1850
Full Changelog: v2.1.0-beta.13...v2.1.0-beta.14
Arbitrum Nitro v2.1.0 Beta 13
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v2.1.0-beta.13-8252c29
What's Changed
This release improves batch posting for L3s compared to the previous beta release.
User-facing Improvements
- Fix batch bounds calculation on L3s: #1841
- Disable wait-for-l1-finality on L3 data posters: #1846
- Fix batch poster fixAccErr not resetting when the error stops: #1849
- Fix batch poster pollForReverts channel reading: #1845
- Upgrade ConditionalOptions variables to type math.HexOrDecimal64: #1848
Internal Highlights
Full Changelog: v2.1.0-beta.12...v2.1.0-beta.13
Arbitrum Nitro v2.1.0 Beta 12
This release is available as a Docker image on Docker Hub at offchainlabs/nitro-node:v2.1.0-beta.12-8af8cbf
What's Changed
This release hardens the data poster compared to the previous beta release.
User-facing Improvements
- Improve batch poster reliability for L3s: #1835
- Move ExtraGas to L1ValidatorConfig and use it for eoa wallets too: #1831
- This is a configuration change but this configuration option was only introduced in the last beta so it likely isn't in use
Internal Highlights
- Check that the nonce is correct in the data poster: #1834
- Fix flag initializations in sample_hmac.go, init.go and data_poster.go: #1824
Full Changelog: v2.1.0-beta.11...v2.1.0-beta.12