Skip to content

Commit dae52ad

Browse files
Merge pull request #426 from scroll-tech/develop
Initial doc update for Euclid
2 parents c1fc210 + 69df8ed commit dae52ad

File tree

2 files changed

+103
-2
lines changed

2 files changed

+103
-2
lines changed

src/content/docs/en/developers/guides/running-a-scroll-node.mdx

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ For most developers, using [our official RPC endpoint](/en/developers/developer-
1919

2020
We recommend using the latest release at https://github.com/scroll-tech/go-ethereum/releases. The required version for Scroll Mainnet is `scroll-v5.5.0` or higher, and for Scroll Sepolia it is `scroll-v5.4.2` or higher. If you'd like to keep up with new node releases, go to https://github.com/scroll-tech/go-ethereum, click on **Watch**, **Custom**, and make sure that **Releases** is selected.
2121

22-
For the remainder of this guide, `VERSION` will denote the version tag. For example, `scroll-v5.8.0`.
22+
For the remainder of this guide, `VERSION` will denote the version tag. For example, `scroll-v5.8.34`.
2323

2424
### Hardware Requirements
2525

src/content/docs/en/technology/overview/scroll-upgrades.mdx

+102-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,106 @@ The following contracts are used to initiate upgrades and execute upgrades after
1919

2020
You can join our [Telegram channel for technical updates](https://t.me/scroll_tech_updates), which includes future upgrade announcements and on-chain operation events.
2121

22+
## Euclid Upgrade
23+
24+
### Overview
25+
This upgrade contains five main changes:
26+
- Migration to OpenVM Prover.
27+
- Migration to MPT state commitment.
28+
- Optimized rollup process.
29+
- EIP-7702 and RIP-7212 support.
30+
- Stage-1 readiness.
31+
32+
These changes will result in lower fees, higher throughput, better security, better compatibility, and more advanced features that users and developers on Scroll can enjoy.
33+
34+
### Timeline
35+
36+
- **Scroll Sepolia**
37+
- Phase 1: March 11th, 2025
38+
- Phase 2: March 13th, 2025
39+
- **Scroll Mainnet**
40+
- Phase 1: April 16th, 2025
41+
- Phase 2: April 22nd, 2025
42+
43+
### Features
44+
45+
#### OpenVM Prover
46+
Scroll has been among the pioneers of ZK technology through our EVM bytecode compatible halo2 zkEVM. ZK technology has continued to progress rapidly ever since, and now general-purpose RISC-V zkVMs are becoming practical. In the Euclid upgrade we are deprecating our halo2 circuits in favor of a new prover built on top of [OpenVM](https://scroll.io/blog/the-first-release-of-the-openvm-framework-is-live).
47+
48+
The new OpenVM prover offers numerous benefits. Prover code is easier to reason about and to audit. We can better reuse code among different components. We can also reduce proving costs and latency. Finally, the new prover will enable us to prove arbitrarily complex transactions, allowing us to remove the circuit capacity checker module that has been a major bottleneck on sequencer throughput.
49+
50+
#### MPT State Commitment
51+
Scroll currently uses a zk-friendly state commitment data structure called [zktrie](https://docs.scroll.io/en/technology/sequencer/zktrie/). With the new OpenVM prover, it is now practical to prove Ethereum’s state structure: the [Merkle-Patricia Trie](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie), also known as MPT. Scroll is now deprecating the zktrie and adopting MPT.
52+
53+
MPT unlocks better sequencer performance and offers better compatibility for dapps relying on L2 state proofs.
54+
55+
#### Optimized Rollup Process
56+
In Euclid, we are rolling out a series of optimizations to the rollup process. These result in major reductions in Data Availability (DA) overhead, and ultimately lower fees for users.
57+
58+
The main optimizations are:
59+
- Move blob verification from contract code to zk circuits.
60+
- Amortize message queue commitment cost.
61+
- Move L2 block header data from calldata to blobs.
62+
- Commit multiple blobs in a single transaction.
63+
- These changes combined are estimated to reduce batch commitment costs by up to 90%.
64+
65+
In addition, Scroll L2 nodes will deprecate Clique (the current Proof-of-Authority consensus) and will start reading the authorized L2 block signer from the new system config contract on L1.
66+
67+
#### Powerful Smart Accounts
68+
69+
In Euclid, Scroll is adopting [EIP-7702](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7702.md) and [RIP-7212](https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md). Adopting 7702 in parallel with Ethereum’s [Pectra upgrade](https://blog.ethereum.org/2025/02/14/pectra-testnet-announcement) ensures that Scroll maintains a high degree of compatibility with Ethereum. These features will also allow Scroll users and developers to tap into the latest technologies in smart accounts: Users can add smart contract functionalities to their existing accounts, use passkeys for signing authorizations, and benefit from the emerging UX improvements that these new standards enable.
70+
71+
#### Stage-1
72+
73+
In Euclid, we are rolling out important safety guarantees that will allow Scroll to reach Stage-1 based on the [standard defined by L2BEAT](https://medium.com/l2beat/introducing-stages-a-framework-to-evaluate-rollups-maturity-d290bb22befe).
74+
75+
Enforced transaction inclusion is a censorship resistance mechanism. It allows users to enqueue a transaction directly from Ethereum, forcing the sequencer to include it.
76+
Permissionless batch submission is a mechanism to prevent liveness failure. In the unlikely scenario that the Scroll sequencer stops posting or finalizing batches for an extended period of time, this mechanism allows anyone to step up and start posting and finalizing batches.
77+
Both mechanisms force the Scroll sequencer to do its job. As such, they serve as deterrents, and they offer important safety guarantees to the users.
78+
79+
We have also recently transferred control to the [Security Council](https://scroll.io/blog/introducing-scroll-security-council), an independent body of 12 reputable members, forming a 9/12 multisig. The Euclid upgrade will be the first upgrade to be executed by the Security Council.
80+
81+
### Compatibility
82+
83+
#### Node Operators
84+
85+
##### Phase 1 Changes
86+
* Node operators should migrate to the new MPT version of l2geth. This requires a full resync (from network or from snapshot). We will provide a node release and snapshots later.
87+
Please refer to [Node Runner State Migration Guideline](https://www.notion.so/Node-Runner-State-Migration-Guideline-17b7792d22af80e4ab4bdc294f4f7541?pvs=21) for node runner state migration guide.
88+
* Zktrie nodes will continue to operate, but they will stop verifying state roots on the received block headers. We encourage node operators to migrate to mpt nodes shortly before Euclid.
89+
90+
##### Phase 2 Changes
91+
* Node operators need to be aware of stage-1 (permissionless batches). While this mechanism will most likely not be triggered in practice, if it is, it will require manual steps to recover the nodes. We will provide detailed documentation about this in our next node release notes.
92+
93+
#### Dapps and Indexers
94+
95+
##### Phase 1 Changes
96+
* State commitment structure switches from zktrie to MPT
97+
* Any dapp relying on zktrie proofs must migrate to MPT proofs
98+
* Batch versions will use v5 and v6 (format identical to previous v4 batches)
99+
100+
##### Phase 2 Changes
101+
* Batch headers and blob payload will use a new encoding. The batch versions used in phase-2 will be v7.
102+
* Commit batch calldata will no longer contain block headers. Projects that need this information from L1 must fetch and decode the blob.
103+
* Previously, one `CommitBatch` event would correspond to one commit transaction that carried a single blob. After Euclid phase-2, a single commit transaction can carry multiple batches. This means that indexers should be able to process multiple batches from the same L1 transaction. We maintain the 1 batch = 1 blob semantics and emit a `CommitBatch` event for each batch.
104+
* In permissionless batch mode, the batch submitter commits and finalizes a single batch in a single atomic step through the newly added `commitAndFinalizeBatch` function. While this will be rare in practice, indexers should prepare to handle this case.
105+
* Function signatures will change for commit, finalize, and revert batch. Projects that decode transaction calldata should add support for the new signatures. See the contract changes for the detailed function signatures.
106+
107+
Pre-Euclid-phase-2: `commitBatchWithBlobProof`, `finalizeBundleWithProof`, `revertBatch`
108+
109+
Post-Euclid-phase-2: `commitBatches`, `finalizeBundlePostEuclidV2`, `commitAndFinalizeBatch`, `revertBatch` (new).
110+
111+
* The `committedBatches` array in the `ScrollChain` will become sparse: Only the last batch hash from each commit batch transaction will be stored in the contract state.
112+
* We will migrate to a new message queue contract (`L1MessageQueueV2`) that will store messages by a different (rolling) hash.
113+
114+
In addition, L2 unsafe blocks will no longer include a signature or vanity tag in the `ExtraData` field.
115+
116+
#### Resources
117+
* [Contract changes on GitHub](https://github.com/scroll-tech/scroll-contracts/pull/79)
118+
* [DA codec repository](https://github.com/scroll-tech/da-codec)
119+
120+
Projects requiring additional guidance should open a [ticket on Discord](https://discord.com/channels/853955156100907018/1280768286124146732).
121+
22122
## DarwinV2 Upgrade
23123

24124
### Overview
@@ -340,4 +440,5 @@ The original gas price oracle contract will be deprecated: it will no longer be
340440
- `L1MessageQueueWithGasPriceOracle`: [`0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B`](https://etherscan.io/address/0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B)
341441
- Sepolia:
342442
- `L2GasPriceOracle`: [`0x247969F4fad93a33d4826046bc3eAE0D36BdE548`](https://sepolia.etherscan.io/address/0x247969F4fad93a33d4826046bc3eAE0D36BdE548)
343-
- `L1MessageQueueWithGasPriceOracle`: [`0xF0B2293F5D834eAe920c6974D50957A1732de763`](https://sepolia.etherscan.io/address/0xF0B2293F5D834eAe920c6974D50957A1732de763)
443+
- `L1MessageQueueWithGasPriceOracle`: [`0xF0B2293F5D834eAe920c6974D50957A1732de763`](https://sepolia.etherscan.io/address/0xF0B2293F5D834eAe920c6974D50957A1732de763)
444+

0 commit comments

Comments
 (0)