Skip to content

Releases: scroll-tech/go-ethereum

scroll-v5.8.23

05 Mar 20:53
scroll-v5.8.23
478940e
Compare
Choose a tag to compare

Overview

This release enables the upcoming Euclid upgrade on the Scroll Sepolia testnet. Euclid consists of two phases (two forks):

  • Euclid phase-1 at timestamp 1741680000 (Tue Mar 11 2025 08:00:00 GMT+0000).
  • Euclid phase-2 at timestamp 1741852800 (Thu Mar 13 2025 08:00:00 GMT+0000).

This upgrade enables a series of important changes including:

  • Support for MPT state commitment.
  • Disable CCC and transaction skipping.
  • Enable EIP-7702 and RIP-7212.
  • Support for DaCodecV7 and MessageQueueV2.
  • Deprecate Clique and migrate to the new SystemContract Proof-of-Authority consensus.
  • Add tools for permissionless batch submission and recovery.

Who should upgrade?

Node operators running on Scroll Sepolia must upgrade to this release.

Node operators running on Scroll mainnet should not upgrade to this release. We will publish a separate release for mainnet around the end of March.

How to upgrade?

DA Sync

From this release on, nodes that fetch rollup data from L1 (nodes running with the --rollup.verify flag, and L1 follower nodes) must connect to a blob data source.

We recommend directly connecting to a beacon node endpoint:

--da.blob.beaconnode "http://l1geth-cl:5052" // change to your endpoint

In addition, you can also configure other blob sources:

--da.blob.blobscan "https://api.sepolia.blobscan.com/blobs/"

You must configure at least one of these flags. (You can configure both.)

MPT Mode

In the Euclid upgrade Scroll will migrate to a new state commitment scheme (from zktrie to MPT). In this release we continue supporting both modes. From here on we will refer to these as l2geth-zktrie and l2geth-mpt nodes. Both types of nodes use the same binary / Docker image, but slightly different configuration.

Existing nodes (l2geth-zktrie) can be upgraded in place without any changes to the database. These nodes will work just fine prior to the Euclid fork and provide all the functionality they normally provide. After the fork boundary, they will be allowed to stay connected to the network, follow the chain, and take part in the P2P gossip network. But they will stop verifying state roots that come with block headers and they won’t be able to provide state proofs for any of the Euclid blocks.

We recommend that node operators set up new l2geth-mpt nodes. This requires a full resync:

  • Set up a new node. You can use your previous configuration flags, but add --scroll-mpt to enable mpt mode.
  • Wait for the node to fully sync.
  • If you maintain a load balancer (e.g. RPC operators), redirect it to the new l2geth-mpt nodes during or shortly after Euclid phase-1. This will ensure that eth_getProof returns correct results.
  • After Euclid, you can remove all the previous l2geth-zktrie nodes.

For faster sync, node operators can use the Sepolia l2geth-mpt snapshot: https://scroll-sepolia-l2geth-snapshots.s3.us-west-2.amazonaws.com/scroll-mpt-2025-03-02.tar

Compatibility

This release updates the embedded hard fork block timestamp for Scroll Sepolia. Nodes that are not upgraded will be unable to follow the network after the hard fork block. To follow the Euclid upgrade, simply run your node with the --scroll-sepolia flag.

If you do not use the --scroll-sepolia flag, then you must update and reimport genesis.json.

genesis.json for l2geth-zktrie nodes
{
  "config": {
    "chainId": 534351,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "berlinBlock": 0,
    "londonBlock": 0,
    "archimedesBlock": 0,
    "shanghaiBlock": 0,
    "bernoulliBlock": 3747132,
    "curieBlock": 4740239,
    "darwinTime": 1723622400,
    "darwinV2Time": 1724832000,
    "euclidTime": 1741680000,
    "euclidV2Time": 1741852800,
    "clique": {
      "period": 3,
      "epoch": 30000
    },
    "systemContract": {
      "period": 3,
      "system_contract_address": "0xC706Ba9fa4fedF4507CB7A898b4766c1bbf9be57",
      "system_contract_slot": "0x0000000000000000000000000000000000000000000000000000000000000067"
    },
    "scroll": {
      "useZktrie": true,
      "maxTxPerBlock": 100,
      "maxTxPayloadBytesPerBlock": 122880,
      "feeVaultAddress": "0x5300000000000000000000000000000000000005",
      "l1Config": {
        "l1ChainId": "11155111",
        "l1MessageQueueAddress": "0xF0B2293F5D834eAe920c6974D50957A1732de763",
        "l1MessageQueueV2Address": "0xA0673eC0A48aa924f067F1274EcD281A10c5f19F",
        "l1MessageQueueV2DeploymentBlock": 7773746,
        "scrollChainAddress": "0x2D567EcE699Eabe5afCd141eDB7A4f2D0D6ce8a0",
        "numL1MessagesPerBlock": "10"
      },
      "genesisStateRoot": "0x20695989e9038823e35f0e88fbc44659ffdbfa1fe89fbeb2689b43f15fa64cb5"
    }
  },
  "nonce": "0x0",
  "timestamp": "0x64cfd015",
  "extraData": "0x000000000000000000000000000000000000000000000000000000000000000048C3F81f3D998b6652900e1C3183736C238Fe4290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "8000000",
  "difficulty": "0x1",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {
    "0x18960EEc21b1878C581937a14c5c3C43008F6b6B": {
      "balance": "10000000000000000000"
    },
    "0xBa50f5340FB9F3Bd074bD638c9BE13eCB36E603d": {
      "balance": "226156424291633194186662080095093570025917938800079226629565593765455331328"
    },
    "0x5300000000000000000000000000000000000000": {
      "balance": "0x0",
      "code": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c806383cc76601161006657806383cc7660146100fc5780638da5cb5b1461010f578063c4d66de814610122578063d4b9f4fa14610135578063f2fde38b1461013e57600080fd5b806326aad7b7146100985780633cb747bf146100b4578063600a2e77146100df578063715018a6146100f2575b600080fd5b6100a160015481565b6040519081526020015b60405180910390f35b6053546100c7906001600160a01b031681565b6040516001600160a01b0390911681526020016100ab565b6100a16100ed36600461054a565b610151565b6100fa6101f6565b005b6100a161010a36600461054a565b61022c565b6052546100c7906001600160a01b031681565b6100fa610130366004610563565b610243565b6100a160005481565b6100fa61014c366004610563565b6102db565b6053546000906001600160a01b031633146101a45760405162461bcd60e51b815260206004820152600e60248201526d37b7363c9036b2b9b9b2b733b2b960911b60448201526064015b60405180910390fd5b6000806101b084610367565b60408051838152602081018890529294509092507ffaa617c2d8ce12c62637dbce76efcc18dae60574aa95709bdcedce7e76071693910160405180910390a19392505050565b6052546001600160a01b031633146102205760405162461bcd60e51b815260040161019b90610593565b61022a6000610486565b565b602a816028811061023c57600080fd5b0154905081565b6052546001600160a01b0316331461026d5760405162461bcd60e51b815260040161019b90610593565b600154156102b15760405162461bcd60e51b815260206004820152601160248201527063616e6e6f7420696e697469616c697a6560781b604482015260640161019b565b6102b96104d8565b605380546001600160a01b0319166001600160a01b0392909216919091179055565b6052546001600160a01b031633146103055760405162461bcd60e51b815260040161019b90610593565b6001600160a01b03811661035b5760405162461bcd60e51b815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f2061646472657373000000604482015260640161019b565b61036481610486565b50565b60035460009081906103bb5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c206265666f726520696e697469616c697a6174696f6e000000000000604482015260640161019b565b6001548360005b8215610456576103d36002846105e0565b60000361041f5781602a82602881106103ee576103ee6105ca565b01556104188260028360288110610407576104076105ca565b015460009182526020526040902090565b915061044a565b610447602a8260288110610435576104356105ca565b01548360009182526020526040902090565b91505b600192831c92016103c2565b81602a826028811061046a5761046a6105ca565b0155506000819055600180548082019091559590945092505050565b605280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b60286104e8826001610618565b10156103645761051960028260288110610504576105046105ca565b015460028360288110610407576104076105ca565b6002610526836001610618565b60288110610536576105366105ca565b01558061054281610631565b9150506104db565b60006020828403121561055c57600080fd5b5035919050565b60006020828403121561057557600080fd5b81356001600160a01b038116811461058c57600080fd5b9392505050565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000826105fd57634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b8082018082111561062b5761062b610602565b92915050565b60006001820161064357610643610602565b506001019056fea26469706673582212208fb1cb9933bb17dd0a7c17de7c890919b08d2fd7eb2bede7b41caa32709b30b564736f6c63430008100033",
      "storage": {
        "0x0000000000000000000000000000000000000000000000000000000000000052": "0x18960EEc21b1878C581937a14c5c3C43008F6b6B"
      }
    },
    "0x5300000000000000000000000000000000000002": {
      "balance": "0x0",
      "code": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c578063bede39b511610066578063bede39b51461018d578063de26c4a1146101a0578063f2fde38b146101b3578063f45e65d8146101c657600080fd5b8063715018a614610147578...
Read more

scroll-v5.8.0

20 Dec 12:19
scroll-v5.8.0
ac8164f
Compare
Choose a tag to compare

Overview

This is a maintenance release that introduces various minor improvements and the new experimental L1 follower mode. Upgrading is optional.

Compatibility

This release is fully backward-compatible.

L1 Follower Mode

#1098 adds experimental support for L1 follower mode in l2geth.

In L1 follower mode, the node syncs the chain directly from L1 DA (consuming events, calldata, and blobs) instead of acquiring the block data from the L2 peer-to-peer network. As such, this is a safer and more censorship-resistant way to sync the ledger, but the current release has important caveats:

  • L1 follower mode sync is slower as it relies heavily on L1 EL and CL endpoints and 3rd-party APIs.
  • Currently only finalized Ethereum blocks are processed.
  • L1 follower nodes are able to reconstruct L2 state. However, their derived L2 chain will have different block hashes compared to other L2 nodes. This will be fixed in a later upgrade.
  • L1 follower mode is experimental and it is not considered production ready in this release.

Current node operators can safely upgrade their nodes to scroll-v5.8.0, but they should not enable L1 follower mode.

For non-production nodes, we invite the community to experiment with L1 follower modes and provide feedback. To run an L1 follower node, simply specify the --da.sync and --da.blob.beaconnode "<L1 beacon node>" CLI flags when running l2geth.

For more instructions and details, please refer to the documentation.

Other Notable Changes

#1096 sets the default gas tip returned by the GPO as 100 wei. This should help clients avoid certain types of issues when bumping gas (see the PR description for details). This value is configurable through the newly added --gpo.defaultgastipcap flag.

#1095 adopts an eth_call RPC adjustment from upstream geth.

What's Changed

Full Changelog: scroll-v5.7.25...scroll-v5.8.0

scroll-v5.7.25

19 Nov 17:47
9fff27e
Compare
Choose a tag to compare

Overview

This is a maintenance release, including various minor fixes and improvements.

This release also fixes incorrect base fee estimation in various RPC APIs. We recommend that all RPC node operators gradually upgrade their nodes to this version.

Compatibility

This release is fully backward-compatible.

What's Changed

New Contributors

Full Changelog: scroll-v5.7.0...scroll-v5.7.25

scroll-v5.7.0

27 Aug 06:08
scroll-v5.7.0
ff23c52
Compare
Choose a tag to compare

Overview

This is a mandatory release for nodes running with rollup verification enabled. For other nodes, this is a recommended release.

This is a small follow-up release after the recent Darwin upgrade. This release embeds the fork timestamps for DarwinV2 for Scroll mainnet and Scroll Sepolia.

Compatibility

Similar to the previous release, this upgrade does not change Scroll's state transition function, so it is backward compatible. However, the format of the batch data committed to Ethereum changes. As a result, nodes that enabled rollup verification (--rollup.verify) must upgrade to be able to follow the chain.

To follow the DarwinV2 upgrade, simply upgrade your node and run it with the --scroll or --scroll-sepolia flag respectively. If you do not use these flags, then you must update your genesis.json file and reimport it using geth init genesis.json:

  • Add "darwinV2Time": 1725264000 for Scroll mainnet.
  • Add "darwinV2Time": 1724832000 for Scroll Sepolia.

What's Changed

New Contributors

Full Changelog: scroll-v5.6.0...scroll-v5.7.0

scroll-v5.6.0

05 Aug 17:19
scroll-v5.6.0
dfd4039
Compare
Choose a tag to compare

Overview

This is a mandatory release for nodes running with rollup verification enabled. For other nodes, this is a recommended release.

We recommend that all node operators subscribe to release notifications on this repository.

This release introduces timestamp-based upgrades and embeds the Darwin upgrade timestamp for Scroll mainnet and Scroll Sepolia.

This release also includes additional robustness and compatibility improvements.

Compatibility

The Darwin upgrade does not change Scroll's state transition function, so this upgrade is backward compatible. However, the format of the batch data committed to Ethereum changes. As a result, nodes that enabled rollup verification (--rollup.verify) must upgrade to be able to follow the chain.

To follow the Darwin upgrade, simply upgrade your node and run it with the --scroll or --scroll-sepolia flag respectively. If you do not use these flags, then you must update your genesis.json file and reimport it using geth init genesis.json:

  • Add "darwinTime": 1724227200 for Scroll mainnet.
  • Add "darwinTime": 1723622400 for Scroll Sepolia.

Note for RPC Node Operators

We recommend that RPC node operators configure the following flag:

--gpo.congestionthreshold=500

This configuration allows nodes to provide more accurate fee estimates.

What's Changed

  • feat: make descartes a timestamp based fork by @omerfirmak in #852
  • fix: add missing CA certificates to Dockerfile.mockccc by @jonastheis in #861
  • feat: rename next upgrade to Darwin by @Thegaram in #863
  • feat(rollup_sync_service): handle multiple batches in FinalizeBatch event by @amoylan2 in #865
  • feat: update to ccc v0.11.4 by @Thegaram in #872
  • fix(CI): remove libzktrie.so by @colinlyguo in #878
  • feat: Configure l2geth Docker pipeline to push latest tag by @NazariiDenha in #831
  • fix(p2p): re-enable ENRUpdater by @HAOYUatHZ in #869
  • fix(signer): update LatestSigner logic by @HAOYUatHZ in #880
  • fix: scroll greeting message by @omerfirmak in #885
  • feat: add codecv3 for darwin batches by @amoylan2 in #866
  • feat: update L2 base fee formula by @Thegaram in #891
  • fix(GPO): min suggested tip cap if there's congestion to avoid filtering through DefaultIgnorePrice by @jonastheis in #883
  • feat(txpool): StatsWithMinBaseFee by @jonastheis in #884
  • fix: return early as expected when engine.Prepare fails by @omerfirmak in #886
  • fix(tracing): fix error handling in fillBlockTrace by @HAOYUatHZ in #890
  • feat(txpool): use GasFeeCapIntCmp to check min fee by @Thegaram in #901
  • fix(rollup-verifier): decode commitBatchWithBlobProof calldata by @colinlyguo in #896
  • refactor(trace): clean outdated fields by @lispc in #842
  • fix(l2geth-verifier): only check last batch of the bundle by @colinlyguo in #904
  • fix(verifier): nil panic due to batch write by @colinlyguo in #911
  • fix(miner,rpc): fix updateSnapshot by @HAOYUatHZ in #916
  • fix: log Rust trace parsing error by @Thegaram in #918
  • feat(libzkp):unbounded depth serde json by @georgehao in #920
  • fix: treat JSON errors as CCC error by @omerfirmak in #922
  • feat: defer txpool reorg until worker fetches txns for the next block by @omerfirmak in #905
  • feat(clique): allow shadowforking a clique network by @omerfirmak in #828
  • refactor: reduce number of heap allocations in tracing by @omerfirmak in #952
  • feat: update L2 base fee formula by @HAOYUatHZ in #951
  • Revert "refactor: reduce number of heap allocations in tracing (#952)" by @omerfirmak in #959
  • feat: schedule Darwin hard fork by @Thegaram in #963

Full Changelog: scroll-v5.5.0...scroll-v5.6.0

scroll-v5.5.0

24 Jun 14:28
scroll-v5.5.0
7da0bd5
Compare
Choose a tag to compare

Overview

This is a mandatory release for Scroll mainnet nodes.

This release updates the embedded Scroll mainnet fork height for the upcoming Curie upgrade.

This release also includes additional robustness and compatibility improvements.

Compatibility

This release updates the embedded hard fork block height for Scroll mainnet. Nodes that are not upgraded will be unable to follow the network after the hard fork block. To follow the Curie upgrade, simply upgrade your node and run it with the --scroll flag.

If you do not use the --scroll flag, then you must upgrade your genesis.json file to "curieBlock": 7096836 and reimport it using geth init genesis.json. In this case, upgrading to this release is optional but recommended.

For Scroll Sepolia nodes, upgrading to this version is optional.

What's Changed

Full Changelog: scroll-v5.4.2...scroll-v5.5.0

scroll-v5.4.2

12 Jun 12:15
scroll-v5.4.2
69aae68
Compare
Choose a tag to compare

⚠️ For Scroll mainnet nodes, this version has been superseded by scroll-v5.5.0, please use this newer version.

Overview

This is a mandatory release for Scroll mainnet and Scroll Sepolia nodes.

This release embeds the Scroll mainnet fork height for the upcoming Curie upgrade.

The Curie hard fork upgrade contains the following changes:

  • Pack more chunks into each batch and compress blob data using zstd.
  • Support EIP-1559 transactions.
  • Support the BASEFEE, MCOPY, TLOAD, TSTORE opcodes.
  • More accurate transaction pricing for both execution (gas) fee and L1 data fee.

Other notable changes:

  • Significant performance and robustness improvements. In particular, the storage requirements of running an l2geth node on Scroll mainnet are reduced by about 50% (only applicable to newly synced nodes).
  • l2geth nodes will no longer automatically configure the --cache.noprefetch flag. For now, we recommend that node operators still run their nodes with this flag.
  • Added support for the eth_getBlockReceipts API.

Compatibility

This release introduces a hard fork upgrade on both Scroll mainnet and Scroll Sepolia. Nodes that are not upgraded will be unable to follow the network after the hard fork block.

To follow the Curie upgrade, simply upgrade your node and run it with the --scroll or --scroll-sepolia flag, depending on which network you want to join.

If you do not use this flag but provide a custom genesis file instead, then you must add "curieBlock": N (replace N with the fork block from the previous section) to the fork list in genesis.json, and reimport it using geth init genesis.json.

What's Changed

New Contributors

Full Changelog: scroll-v5.3.0...scroll-v5.4.2

scroll-v5.3.0

22 Apr 07:53
scroll-v5.3.0
246955a
Compare
Choose a tag to compare

Overview

This is a mandatory release for Scroll mainnet nodes.

This release embeds the Scroll mainnet fork height for Bernoulli, scheduled to go live at block 5220340 (within a few hours after Mon Apr 29 02:00 am UTC). The Bernoulli hard fork upgrade contains the following changes:

  • Enable SHA-256 precompile.
  • Use EIP-4844 blobs for Data Availability (not part of l2geth).

Compatibility

This release introduces a hard fork upgrade on Scroll mainnet. Nodes that are not upgraded will be unable to follow the network after the hard fork block.

To follow the Bernoulli upgrade on Scroll mainnet, simply upgrade your node and run it with the --scroll flag. If you do not use this flag but provide a custom genesis file instead, then you must add "bernoulliBlock": 5220340 to the fork list in genesis.json.

Please refer to this document for further notes on compatibility.

What's Changed

  • fix(rollup-verifier): hardcode genesis codec version as codecv0 and sync codecv1 implementation by @colinlyguo in #699
  • feat: add more state_transition, worker, and tracing metrics by @georgehao in #700
  • CI: build image which supports arm64 platform by @sbaizet-ledger in #702
  • Ci add support for arm64 platform by @sbaizet-ledger in #703
  • fix(ci): fix version bot by @HAOYUatHZ in #705
  • feat(worker): add a commit tx failed metric by @colinlyguo in #704
  • feat(worker): seal block early if we're over target block time by @Thegaram in #706
  • feat: add block time metric by @Thegaram in #707
  • feat: enable Bernoulli upgrade on Scroll mainnet by @Thegaram in #710

New Contributors

Full Changelog: scroll-v5.2.0...scroll-v5.3.0

scroll-v5.2.0

08 Apr 09:35
scroll-v5.2.0
85447ec
Compare
Choose a tag to compare

Overview

This release embeds the Scroll Sepolia testnet fork height for Bernoulli, scheduled to go live at block 3747132 (within a few hours after Mon Apr 15 02:30 am UTC). The Bernoulli hard fork upgrade contains the following changes:

  • Enable SHA-256 precompile.
  • Use EIP-4844 blobs for Data Availability (not part of l2geth).

Additionally, this release contains new features and important robustness improvements. This release aims to fix a long-standing bug #592 that would lead to database corruption in rare cases when the L1 endpoint would become temporarily unavailable. When this happens, the best recourse is to re-sync the node. To avoid this, it is recommended to upgrade to this release.

For nodes running on Scroll Sepolia, upgrading is mandatory. On Scroll mainnet, upgrading is optional but recommended.

Compatibility

This release introduces a hard fork upgrade on the Scroll Sepolia testnet. Nodes that are not upgraded will be unable to follow the testnet after the hard fork block.

To follow the Bernoulli upgrade on Scroll Sepolia, simply upgrade your node and run it with the --scroll-sepolia flag. If you do not use this flag but provide a custom genesis file instead, then you must add "bernoulliBlock": 3747132 to the fork list in genesis.json.

Please refer to this document for further notes on compatibility.

Notable changes

  • #679 and #682 aim to fix a long-standing bug #592 that would lead to database corruption in some rare cases.
  • #627 fixes an issue where unexecutable transactions would in certain cases be kept in the transaction pool.
  • #636 aims to fix building l2geth on Windows systems.
  • #688 enables the Bernoulli hard fork on Scroll Sepolia.

What's Changed

  • fix(txpool): revert duplicated l1 data fee check by @colinlyguo in #612
  • fix(receipt): L1 message type tx RLP decoding by @colinlyguo in #616
  • feat: add mux tracer for native call tracer and native prestate tracers by @HAOYUatHZ in #615
  • docs: update README.md by @crzrh in #593
  • fix(ethclient): support new cancun fields in header by @colinlyguo in #623
  • feat(transactions): support blob tx only in encoding/decoding by @colinlyguo in #626
  • ci: fix goimports lint in CI by @Thegaram in #628
  • feat: setup configuration for upcoming hard fork and re-enable sha256 precompile by @NazariiDenha in #562
  • fix(rollup sync service): remove syscall.Kill by @colinlyguo in #636
  • ci: fix blocktraces submodule url by @qezz in #632
  • feat: add metric to evm call by @georgehao in #646
  • feat: add transactions len metrics of block processer by @georgehao in #650
  • fix(txJSON): L1 message type MarshalJSON by @colinlyguo in #630
  • feat(ethclient): export GetTxBlockTraceOnTopOfBlock & GetNumSkippedTransactions & GetSkippedTransactionHashes & GetSkippedTransaction by @HAOYUatHZ in #644
  • feat: re-enable EIP-1559 in Banach hard fork by @Thegaram in #634
  • feat(ethclient & gethclient): support blob transaction by @colinlyguo in #661
  • chore(docker): make sure the libzkp directory is clean by @omerfirmak in #664
  • chore(libzkp): upgrade to v0.9.10, optimize ccc for follower&chunking by @lispc in #676
  • fix: ensure L1 messages are stored in db consistently by @Thegaram in #679
  • feat: update upcoming fork names by @Thegaram in #680
  • fix(zktrie): fix NewZktrieDatabase by @HAOYUatHZ in #638
  • fix(sync-service): only add queue index when message index is not zero by @colinlyguo in #682
  • fix: Check L1DataFee in txpool promoteExecutables and demoteUnexecutables by @vyzo in #627
  • feat: add metrics to block validation by @Thegaram in #677
  • fix(tracing): disable storage for block_traces by @HAOYUatHZ in #684
  • ci: add bump_version bot by @HAOYUatHZ in #538
  • feat(rollup-verifier): support codecv1 by @colinlyguo in #678
  • fix(state): fix iterativeDump.OnAccount by @HAOYUatHZ in #649
  • fix(txpool): rollback false optimization by @georgehao in #694
  • chore(libzkp): upgrade to v0.9.13, support next hard fork transition by @lispc in #693
  • feat(sepolia): enable Bernoulli hard fork by @Thegaram in #688

New Contributors

Full Changelog: scroll-v5.1.10...scroll-v5.2.0

scroll-v5.1.10

04 Jan 15:57
scroll-v5.1.10
5b7079b
Compare
Choose a tag to compare

Overview

This release contains new features and robustness improvements.

For nodes running on Scroll mainnet and Scroll Sepolia, upgrading is optional but recommended.

Compatibility

This version is compatible with the previous release scroll-v5.0.0.

If you run your node with the --scroll or --scroll-sepolia flag, you do not need to change anything. If you use a custom genesis.json configuration, you will need to add scroll.l1Config.scrollChainAddress (see here for Scroll mainnet and here for Scroll Sepolia).

Rollup Verification

#515 adds additional verification by syncing finalized batch data from L1 and comparing it with the node's local ledger. This ensures that the node's local data matches the data committed to L1. This check is optional; to enable it, simply add the --rollup.verify flag when starting your node.

Note: There is an initial catch-up phase when you first enable this feature on a node, as the node needs to sync all finalized batches from L1. This initial sync happens in the background, it does not prevent the node from syncing the L2 ledger or from serving queries. During this period, it is expected to see increased L1 RPC load (on the node specified through the --l1.endpoint flag), as well as higher CPU and memory load.

#548 enables the "finalized" tag on a number of APIs. This tag is only supported when rollup verification is enabled (--rollup.verify flag, see above). eth_getBlockByNumber("finalized", false) will return the latest L2 block that is finalized on L1.

An L2 block is considered finalized when all of the following hold: (1) the block has been published to L1 (as part of a batch), (2) the state root after the execution of the batch has been published to L1 along with a correct validity proof (see the relevant contract code), and (3) the transaction that submitted the validity proof to L1 is considered finalized by L1 consensus.

Other Notable Features

  • #537 fixes a bug where it was impossible to call eth_estimateGas with a sender account with zero balance.
  • #548 adds new APIs scroll_syncStatus and scroll_estimateL1DataFee.
  • #564 and #561 change the Scroll tracing API. If you rely on this API, please consult the Scroll team.

What's Changed

  • fix(libzkp): upgrade to use prover v0.9.7 by @silathdiir in #535
  • refactor(tracing): refactor wrappedProof by @HAOYUatHZ in #536
  • fix (libzkp): free Rust CString by from_raw (potential memory leak) by @silathdiir in #539
  • fix: eth_estimateGas error in zero balance address by @colinlyguo in #537
  • feat(rollup): sync finalized batches from L1 by @colinlyguo in #515
  • perf(miner): reduce rawdb calls for getting StartL1QueueIndex when inniting environment by @GDdark in #550
  • feat(rpc): add scroll_* rollup APIs by @colinlyguo in #548
  • Add metrics around block commit, block traces, and CCC by @vyzo in #552
  • refactor(evm): Remove duplicate defined variables by @GDdark in #559
  • fix(worker): prioritize overflow tx as first tx in next block by @Thegaram in #563
  • feat: add scroll_getTxBlockTraceOnTopOfBlock API by @HAOYUatHZ in #558
  • feat (libzkp-v0.9.8): recordStorageDetail even when LogConfig.DisableStorage == true by @lispc in #564
  • fix(tracing): fix getTxResult returned error format by @HAOYUatHZ in #561
  • feat(rollup): add fallback if TransactionByHash fails in getting commitBatch calldata by @colinlyguo in #601
  • feat: improve balance check by @HAOYUatHZ in #607
  • feat: remove instead of pop insufficient-funds tx by @HAOYUatHZ in #608
  • fix(tx-pool): consider L1 data fee in validateTx by @colinlyguo in #609

New Contributors

Full Changelog: scroll-v5.0.0...scroll-v5.1.10