This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.6.0-fc07dd2
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
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.6.0-fc07dd2-validator which has the extra script /usr/local/bin/split-val-entry.sh as the entrypoint.
What's Changed
This is the first version of Nitro with support for the features in Pectra https://eips.ethereum.org/EIPS/eip-7600
This release includes updates to the nitro fork of go-ethereum equivalent to v1.15.5.
Purposefully NOT included in this release are these 4 EIPs related to supporting consensus-layer client operations like deposits, withdrawals, and consolidation since Arbitrum uses a very different consensus mechanism which does not rely on proof of stake:
- EIP-6110: Supply validator deposits on chain
- EIP-7002: Execution layer triggerable exits
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7685: General purpose execution layer requests
Support for EIP-7623 (increased calldata cost) has been added, but hidden behind a new ArbOwner precompile method setCalldataPriceIncrese(bool) which is disabled by default. Contract Code
Configuration Changes
--node.bold.enablehas been removed, will be enabled if BoLD is enabled on-chain
User facing changes
- Add support for ArbOS 40
- Add Orbit chain support for BoLD: #3088
- Configuration changes:
- Remove need for
--node.bold.enable: #3016
- Remove need for
- New Configuration:
- Add a nitro option to stop syncing at a given block number: #2749
- Feat: add sequencer dangerous flag to disable tx size checks: #2885
- Add a node.batch-poster.dangerous.fixed-gas-limit flag: #3099
- Extend blocks re-executor to support multiple block ranges: #3140
- Make max bids per sender configurable: #3137
- Add minimal pruning mode: #3143
- New Precompiles
- Logging improvements:
- When a batch is full, log why it is full: #2968
- Validate sequencer's my-url on startup by logging an error if its unreachable or not on the redis' priorities list: #3000
- Only log nonce too high error for batch poster if persistent: #2977
- Lower log level of "Pushed finality data" message: #3049
- Error when discard-after-timeout is set for DAS S3 storage service: #3052
- Tracing improvements:
- Add HistoryStorageAddress as part of arbos 40 upgrade: #3132
- Enable blockmetadata syncing by default for arb1/nova: #3131
Internal Highlights
- Update gethpin v1.14.4: #2820
- Update gethpin v1.14.6: #2822
- Update gethpin v1.14.7: #2823
- Update gethpin v1.14.8: #2978
- Update gethpin v1.14.10: #2982
- Update gethpin v1.14.11: #3007
- Update gethpin v1.14.12: #3011
- Update gethpin v1.14.13: #3012
- Update gethpin v1.15.0 & v1.15.1 & v1.15.2 & v1.15.3 & v1.15.4 & v1.15.5: #3014
- Message index/count refactor - Part 1: #2535
- Use flag instead of env var for system_test: #2802
- Export IMAGE_TAG in buildspec: #2970
- Create manifest buildspec: #2973
- Fix manifest buildspec filename typo: #2989
- Contracts legacy separation: #3048
- Add CONTRIBUTING.md: #3055
- Skip Flakey Challenge Test to Unclog CI While It is Investigated: #3057
- Split PathDB Tests Into Separate Workflow and Skip Challenge Test: #3058
- Fix data race in timeboost_test.go: #3059
- Move Legacy Challenge, Race, and Stylus Long Tests to Nightly CI: #3060
- Correctly start and stop validation node: #3064
- Fix Yaml Syntax Error in Nightly CI: #3070
- Run Docker Build on Design Approval and Send CI Slack Notification on Failure: #3071
- Speedup timeboost systemTests: #3083
- Add rerun-fails back to ci: #3092
- Fix Slack Notify on Nightly CI Failure With Correct Yaml Args: #3094
- Consensus pushes finality data to Execution. Execution sets finalized block in blockchain: #2936
- ExecutionClient returns PromiseInterface: #2856
- Logs ValidatedMsgCount as a value instead of address in ConsensusExecutionSyncer: #2993
- Uses Info instead of Warn in logs from ConsensusExecutionSyncer when finality is not supported: #2994
- Make Consensus interface async: #3001
- Add TestFastConfirmationWithdrawal: #2935
- Test flatCallTracer on Arbitrum blocks inside existing tests: #2676
- Test redeeming many retryables in the same block: #3034
- Self destruct test: #3062
- Add TestOutOfGasInStorageCacheFlush: #3025
- Allow pubsub interface to return an error: #2753
- Parallelize pruning inside accounts: #2898
- Creates new http client in BlobClient in case of request errors: #2913
- Only post delay buffer proof when its updatable: #2915
- Check if the JSON-RPC error code is 3 for confirming execution reverted: #2924
- Fix race condition in testBatchPosterDelayBuffer: #2925
- BatchPoster takes into consideration that the parent chain can be using EIP-7623: #2984
- Do not cache in last_code if no code exists: #2998
- Stylus: record all writes on setTrieSlots: #3019
- Locks insertionMutex with timeout in WriteMessageFromSequencer: #3038
- Fix eth_syncing crash, move SyncMonitor.Initialize after SeqCoordinator is started: #3053
- Make sure to not start redis key with stream name: #3054
- Use cloudflare bn256 also for wasm build: #3075
- Minor fix in the batch poster's logic for seeing if EIP-7623 is enabled on the parent chain.
- Use the new nolint directive: #3103
- Fix Broken Challenge Test CI: #3104
- Minor fix for timeboost system_tests: #3106
- Consistent bash imports in scripts (new PR for collaboration): #3102
- Fix panic in sync-till-block option: #3113
- Properly enable metrics based on latest geth: #3112
- Fix race in TestTimeboostExpressLaneTransactionHandlingComplex: #3114
- batch_poster: override delayed inbox pointer when sending future txs: #3117
- Fail on gas estimation when trying to redeem a duplicate retryable: #3110
- Fix path concatenation and GCS data write logic: #3115
- Add config option for trie-time-limit random offset: #3105
- Add bold support for pruning in validator mode: #3118
- Simple block-recording test: #3122
- Test batch poster with delay proofs and backlog: #3116
- Fix a challenge test due to changed signature: #3124
- Fix paths to licensing information: #3125
- Implement detailed retryable comparison in initialization tests: #3119
- Call ProcessParentBlockHash during InternalTxStartBlock: #3129
- Remove recommendation to force push in CONTRIBUTING.md: #3134
- Fix Broken Challenge Tests on Master: #3135
- Cleanup github actions: #3126
- Fix Challenge Test Failures due to Improper Resource Cleanup: #3136
- Lint cleanup: #3139
- Handle reorg issues when setting finality data in Execution: #3051
- Avoid CI cache key collision: #3141
- Move Challenge Tests to Nightly Ensuring They Still Build in Each PR: #3142
- Bump golang.org/x/net from 0.36.0 to 0.38.0: #3144
- Check chainid before starting BlockMetadataFetcher: #3149
- Use Error Log Levels in Tests, Introduce L3 Challenge Workflow: #3152
- Enable TestL3ChallengeProtocolBOLD: #3155
- Log an error when unable to forward transaction to any of the targets: #3150
- Get Bold L3 Test Passing: #3166
- Additional documentation for usage of StateDB object in preTxFilters: #3164
- Auction resolution tx should not be considered as timeboosted: #3161
- Feed disconnect error should be logged at level error if it happens more than once per minute: #3151
- Add a separate interface for BOLD ExecutionSpawner: #3165
- Updated HistoryStorageCodeArbitrum: #3162
- ExpressLane txs erroring due to context timing out at the end of a round shouldn't be logged as an error: #3168
- Sets finality to nil in case node is out of sync: #3147
- Reduce the Noise of Sequencer Coordinator Logging: #3154
- Enable TestSequencerInboxReader system test: #3145
- Add support for consensus v40 to Docker: #3169
- Cleanup github actions: #3160
- Support logging at different level for ephemeral BoLD errors: #3171
- Comparing two gas estimations must be on same block: #3172
- Fix timeboost signature checking: #3177
- Enable blockmetadata syncing by default for arb1/nova: #3131
- Re-execute execution reverted for eth_estimateGas as eth_call for better logs in batch poster: #3178
- Cleanup github actions: #3160
- Support logging at different level for ephemeral BoLD errors: #3171
- Comparing two gas estimations must be on same block: #3172
- Fix timeboost signature checking: #3177
- Enable blockmetadata syncing by default for arb1/nova: #3131
- Re-execute execution reverted for eth_estimateGas as eth_call for better logs in batch poster: #3178
- Cleanup github actions: #3160
- Support logging at different level for ephemeral BoLD errors: #3171
- Comparing two gas estimations must be on same block: #3172
- Fix timeboost signature checking: #3177
- Re-execute execution reverted for eth_estimateGas as eth_call for better logs in batch poster: #3178
- sync_monitor: not synced when starting up: #3180
- delay buffer always updateable: #3182
- Refractor PostAssertionBasedOnParent to avoid calling ReadAssertionCreationInfo: #3183
Full Changelog: v3.5.6...v3.6.0