Skip to content

Arbitrum Nitro v3.6.0-rc.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@eljobe eljobe released this 07 Apr 09:38
· 642 commits to master since this release
914d81d

This release is available as a Docker Image on Docker Hub at offchainlabs/nitro-node:v3.6.0-rc.1-914d81d

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-rc.1-914d81d-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
  • Flag changes:
    • Add a nitro option to stop syncing at a given block number: #2749
    • Feat: add sequencer dangerous flag to disable tx size checks: #2885
    • Remove need for --node.bold.enable: #3016
  • 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

Internal Highlights

  • Geth: Integrate upstream changes through v1.15.5
    • 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
  • Improve developer experience:
    • 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
  • Split the execution and consensus layers (Prepare for alternate execution clients):
    • 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
  • Increase test coverage:
    • 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
  • Improve stability and performance:
    • 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

Full Changelog: v3.5.0...v3.6.0-rc.1