github OffchainLabs/nitro v3.6.0
Arbitrum Nitro v3.6.0

latest releases: v3.9.4, v3.9.4-rc.2, v3.9.4-rc.1...
7 months ago

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.enable has 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
  • 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
    • Hide eip7623 behind an ArbOwner contract call: #3033
    • Add support for setting MaxWasmSize as a StylusParam: #3056
  • 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:
    • Integrate CaptureArbitrumStorageGet/Set into the prestate tracer: #2602
    • Utilize BalanceChangeReason in tracing: #2789
    • More exact balance change reasons in tracing: #3040
  • 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

Don't miss a new nitro release

NewReleases is sending notifications on new releases.