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
andscroll_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 innitingenvironment
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