Scroll Upgrades

As the team continues to progress on Scroll’s roadmap, we will be upgrading the Scroll network to include new features and improvements.

The following contracts are used to initiate upgrades and execute upgrades after the two-week timelock period:

ContractNetworkAddress
L1 Scroll MultisigEthereum0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe
L1 TimelockEthereum0x1A658B88fD0a3c82fa1a0609fCDbD32e7dd4aB9C
L2 Scroll MultisigScroll0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe
L2 TimelockScroll0xf6069DB81239E5194bb53f83aF564d282357bc99

You can join our Telegram channel for technical updates, which includes future upgrade announcements and on-chain operation events.

Bernoulli Upgrade

Overview

This upgrade features a significant reduction in transaction costs by introducing support for EIP-4844 data blobs and supporting the SHA2-256 precompile.

Timeline

  • Scroll Sepolia
    • Network Upgrade: April 15th, 2024
  • Scroll Mainnet
    • Upgrade Initiation: April 15th, 2024
    • Timelock Completion & Upgrade: April 29th, 2024

Technical Details

Contract changes

The contract changes for this upgrade are in this PR, along with the audit fixes here. The main changes are as follows:

  • ScrollChain now accepts batches with either calldata or blob encoding in commitBatch.
  • ScrollChain now supports finalizing blob-encoded batches through finalizeBatchWithProof4844.
  • MultipleVersionRollupVerifier can now manage different on-chain verifiers for each batch encoding version.

Node changes

The new node version is v5.3.0. See here for the release log.

zkEVM circuit changes

The new version of zkevm circuits is v0.10.3. See here for the release log.

Audits

Compatibility

Sequencer and follower nodes (l2geth)

This upgrade is a hard fork as it introduces the new blob data type and the SHA2-256 precompiled contract. Operators running an l2geth node are required to upgrade before the hard fork block. See the node releases for more information.

Indexers and Bridges

This upgrade changes the format that Scroll uses to publish data to Ethereum. Projects that rely on this data should carefully review the new data format, and check whether their decoders need to be adjusted. A summary of the new format:

Provers

This upgrade involves a breaking change in zkevm-circuits. Operators running a prover node are required to upgrade.

Bridge Upgrade

Overview

To reduce bridging costs, we implemented several gas optimizations on our bridge and rollup contract suite. The optimization techniques used include the following:

  • We will now use constants to store some companion contract addresses, instead of using storage variables. This is possible since these values should (almost) never change. With this change we can save on a few storage load operations.
  • We updated the intrinsic gas estimation in L1MessageQueue to use a simple upper bound instead of an exact calculation. The two results will be similar for most bridge transactions but the new implementation is significantly cheaper.
  • We merged two contracts L1MessageQueue and L2GasPriceOracle to save on call costs from one contract to the other.

Timeline

  • Scroll Sepolia:
    • Network Upgrade: January 19, 2024
  • Scroll Mainnet:
    • Upgrade Initiation: February 7, 2024
    • Timelock Completion & Upgrade: February 21, 2024

Technical Details

Code Changes

Audits

List of Changes

Changes to L1 contracts:

  • In ScrollChain, change messageQueue and verifier to immutable.
  • In L1ScrollMessenger, change counterpart, rollup, and messageQueue to immutable.
  • In all token gateways, change counterpart, router, and messenger to immutable.
  • Merge L1MessageQueue and L2GasPriceOracle into a single contract L1MessageQueueWithGasPriceOracle (deployed on the same address as the previous L1MessageQueue). In this contract, we also change messenger and scrollChain to immutable, and simplify calculateIntrinsicGasFee.

Changes to L2 contracts:

  • In L2ScrollMessenger, change counterpart to immutable.
  • In all token gateways, change counterpart, router, and messenger to immutable.

Contracts affected:

  • L1: L1MessageQueue, L2GasPriceOracle, ScrollChain, L1WETHGateway, L1StandardERC20Gateway, L1GatewayRouter, L1ScrollMessenger, L1CustomERC20Gateway, L1ERC721Gateway, L1ERC1155Gateway.
  • L2: L2ScrollMessenger, L2WETHGateway, L2StandardERC20Gateway, L2GatewayRouter, L2CustomERC20Gateway, L2ERC721Gateway, L2ERC1155Gateway.

Compatibility

Sequencer and follower nodes (l2geth)

Operators running an l2geth node do not need to upgrade. The changes in this upgrade will not affect l2geth.

Dapps and indexers

Dapps and indexers (and similar off-chain infrastructure) that query contracts or rely on contract interfaces would, in most cases, not need to be changed. The majority of the contract changes are internal and/or backward compatible.

If your application depends on L2GasPriceOracle to monitor how Scroll keeps track of the L2 gas price on L1, from the upgrade block number you will need to start monitoring L1MessageQueueWithGasPriceOracle.

The original gas price oracle contract will be deprecated: it will no longer be updated or used by the Scroll bridge.

Stay up-to-date on the latest Scroll Developer news
Roadmap updates, virtual and live events, ecosystem opportunities and more
Thank you for subscribing!

Resources

Follow Us