diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index c03a4809a..8fbda6450 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -141,7 +141,12 @@ "cpuProverRepo": "CPU Prover Repo", "security": "Security", "auditsAndBugBounty": "Audits & Bug Bounty", - "l2BeatAssessment": "L2Beat Assessment" + "l2BeatAssessment": "L2Beat Assessment", + "euclidUpgrade": "Euclid Upgrade", + "darwinV2Upgrade": "Darwin v2 Upgrade", + "darwinUpgrade": "Darwin Upgrade", + "curieUpgrade": "Curie Upgrade", + "bernoulliUpgrade": "Bernoulli Upgrade" }, "learn": { "ethereumAndProtocols": "Ethereum & Protocols", diff --git a/public/locales/es/translation.json b/public/locales/es/translation.json index 8d0caabcd..242184b7c 100644 --- a/public/locales/es/translation.json +++ b/public/locales/es/translation.json @@ -142,7 +142,13 @@ "security": "Seguridad", "auditsAndBugBounty": "Auditorías y recompenzas por encontrar bugs", - "l2BeatAssessment": "Análisis de L2Beat" + "l2BeatAssessment": "Análisis de L2Beat", + + "euclidUpgrade": "Actualización de Euclid", + "darwinV2Upgrade": "Actualización de Darwin v2", + "darwinUpgrade": "Actualización de Darwin", + "curieUpgrade": "Actualización de Curie", + "bernoulliUpgrade": "Actualización de Bernoulli" }, "learn": { "ethereumAndProtocols": "Ethereum y Protocolos", diff --git a/public/locales/tr/translation.json b/public/locales/tr/translation.json index bfc9681a4..8c39a62ca 100644 --- a/public/locales/tr/translation.json +++ b/public/locales/tr/translation.json @@ -143,7 +143,13 @@ "security": "Güvenlik", "auditsAndBugBounty": "Denetimler ve Hata Ödül Programı", - "l2BeatAssessment": "L2Beat Değerlendirmesi" + "l2BeatAssessment": "L2Beat Değerlendirmesi", + + "euclidUpgrade": "Euclid Yükseltmesi", + "darwinV2Upgrade": "Darwin v2 Yükseltmesi", + "darwinUpgrade": "Darwin Yükseltmesi", + "curieUpgrade": "Curie Yükseltmesi", + "bernoulliUpgrade": "Bernoulli Yükseltmesi" }, "learn": { "ethereumAndProtocols": "Ethereum & Protokoller", diff --git a/public/locales/zh/translation.json b/public/locales/zh/translation.json index 93395b2ae..64ef59d47 100644 --- a/public/locales/zh/translation.json +++ b/public/locales/zh/translation.json @@ -142,7 +142,13 @@ "security": "安全", "auditsAndBugBounty": "审计和漏洞赏金", - "l2BeatAssessment": "L2Beat 评估" + "l2BeatAssessment": "L2Beat 评估", + + "euclidUpgrade": "Euclid 升级", + "darwinV2Upgrade": "Darwin v2 升级", + "darwinUpgrade": "Darwin 升级", + "curieUpgrade": "Curie 升级", + "bernoulliUpgrade": "Bernoulli 升级" }, "learn": { "ethereumAndProtocols": "以太坊与协议", diff --git a/src/config/sidebar.ts b/src/config/sidebar.ts index eea487edc..3cc4d78f7 100644 --- a/src/config/sidebar.ts +++ b/src/config/sidebar.ts @@ -202,7 +202,29 @@ export const getSidebar = () => { { title: t("sidebar.technology.scrollArchitecture"), url: formatUrl("technology") }, { title: t("sidebar.technology.scrollUpgrades"), - url: "technology/overview/scroll-upgrades", + url: formatUrl("technology/overview/scroll-upgrades"), + children: [ + { + title: t("sidebar.technology.euclidUpgrade"), + url: formatUrl("technology/overview/scroll-upgrades/euclid-upgrade"), + }, + { + title: t("sidebar.technology.darwinV2Upgrade"), + url: formatUrl("technology/overview/scroll-upgrades/darwin-v2-upgrade"), + }, + { + title: t("sidebar.technology.darwinUpgrade"), + url: formatUrl("technology/overview/scroll-upgrades/darwin-upgrade"), + }, + { + title: t("sidebar.technology.curieUpgrade"), + url: formatUrl("technology/overview/scroll-upgrades/curie-upgrade"), + }, + { + title: t("sidebar.technology.bernoulliUpgrade"), + url: formatUrl("technology/overview/scroll-upgrades/bernoulli-upgrade"), + }, + ], }, ], }, diff --git a/src/content/docs/en/technology/overview/scroll-upgrades.mdx b/src/content/docs/en/technology/overview/scroll-upgrades.mdx index ea49dea56..b01dc388f 100644 --- a/src/content/docs/en/technology/overview/scroll-upgrades.mdx +++ b/src/content/docs/en/technology/overview/scroll-upgrades.mdx @@ -15,430 +15,4 @@ The following contracts are used to initiate upgrades and execute upgrades after | L1 Scroll Multisig | Ethereum| [`0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe`](https://etherscan.io/address/0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe)| | L1 Timelock | Ethereum| [`0x1A658B88fD0a3c82fa1a0609fCDbD32e7dd4aB9C`](https://etherscan.io/address/0x1A658B88fD0a3c82fa1a0609fCDbD32e7dd4aB9C)| | L2 Scroll Multisig | Scroll| [`0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe`](https://scrollscan.com/address/0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe)| -| L2 Timelock | Scroll | [`0xf6069DB81239E5194bb53f83aF564d282357bc99`](https://scrollscan.com/address/0xf6069DB81239E5194bb53f83aF564d282357bc99)| - -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. - -## Euclid Upgrade - -### Overview -This upgrade contains five main changes: -- Migration to OpenVM Prover. -- Migration to MPT state commitment. -- Optimized rollup process. -- EIP-7702 and RIP-7212 support. -- Stage-1 readiness. - -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. - -### Timeline - -- **Scroll Sepolia** - - Phase 1: March 11th, 2025 - - Phase 2: March 13th, 2025 -- **Scroll Mainnet** - - Phase 1: April 16th, 2025 - - Phase 2: April 22nd, 2025 - -### Features - -#### OpenVM Prover -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). - -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. - -#### MPT State Commitment -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. - -MPT unlocks better sequencer performance and offers better compatibility for dapps relying on L2 state proofs. - -#### Optimized Rollup Process -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. - -The main optimizations are: -- Move blob verification from contract code to zk circuits. -- Amortize message queue commitment cost. -- Move L2 block header data from calldata to blobs. -- Commit multiple blobs in a single transaction. -- These changes combined are estimated to reduce batch commitment costs by up to 90%. - -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. - -#### Powerful Smart Accounts - -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. - -#### Stage-1 - -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). - -Enforced transaction inclusion is a censorship resistance mechanism. It allows users to enqueue a transaction directly from Ethereum, forcing the sequencer to include it. -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. -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. - -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. - -### Compatibility - -#### Node Operators - -##### Phase 1 Changes -* 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. -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. -* 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. - -##### Phase 2 Changes -* 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. - -#### Dapps and Indexers - -##### Phase 1 Changes -* State commitment structure switches from zktrie to MPT -* Any dapp relying on zktrie proofs must migrate to MPT proofs -* Batch versions will use v5 and v6 (format identical to previous v4 batches) - -##### Phase 2 Changes -* Batch headers and blob payload will use a new encoding. The batch versions used in phase-2 will be v7. -* Commit batch calldata will no longer contain block headers. Projects that need this information from L1 must fetch and decode the blob. -* 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. -* 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. -* 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. - - Pre-Euclid-phase-2: `commitBatchWithBlobProof`, `finalizeBundleWithProof`, `revertBatch` - - Post-Euclid-phase-2: `commitBatches`, `finalizeBundlePostEuclidV2`, `commitAndFinalizeBatch`, `revertBatch` (new). - -* 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. -* We will migrate to a new message queue contract (`L1MessageQueueV2`) that will store messages by a different (rolling) hash. - -In addition, L2 unsafe blocks will no longer include a signature or vanity tag in the `ExtraData` field. - -#### Resources -* [Contract changes on GitHub](https://github.com/scroll-tech/scroll-contracts/pull/79) -* [DA codec repository](https://github.com/scroll-tech/da-codec) - -Projects requiring additional guidance should open a [ticket on Discord](https://discord.com/channels/853955156100907018/1280768286124146732). - -## DarwinV2 Upgrade - -### Overview - -During internal testing, we identified that blocks may not always be compressible under certain conditions, which leads to unprovable chunks and batches. -To fix this issue, a minor upgrade has been conducted so that uncompressed blobs will be enabled when this special case is detected. - -### Timeline - -As this is a security related patch, we bypassed the 7-day timelock mechanism. - -- **Scroll Sepolia**: August 28th, 2024 -- **Scroll Mainnet**: September 2nd, 2024 - -### Compatibility - -#### Sequencer and Follower Nodes (l2geth) - -The new node version is `v5.7.0`. See the [release notes](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.7.0) for more information. - -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. - -#### Dapps and Indexers - -A change has been implemented to Scroll Mainnet to enhance sequencer throughput, which adjusted the maximum reorg depth to 17 blocks. Previously, the system performed thorough capacity checks within the signer thread to determine whether transactions exceed the circuit limit. While this ensures that all transactions within a block are compliant, it also requires additional CPU resources. -We introduced a new circuit capacity checking scheme on Mainnet. The sequencer thread now will continue to perform capacity checks, but in a more approximate manner. In parallel, 16 worker threads will accurately verify the capacity of previous blocks. As a result, a reorg could occur with a maximum depth of 17 blocks, although the likelihood of this is low. - -For indexers, the `BatchHeader` version has been upgraded to 4. This is backward compatible (the only exception is for developers decoding the blob payload, which has changed slightly). - -## Darwin Upgrade - -### Overview - -This upgrade will reduce gas fees by 34% by using a single aggregated proof for multiple batches, eliminating the need to finalize each batch individually. - -- Darwin uses a new [V3 batch codec](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv3). -- In addition to the previous notions of `chunk` and `batch`, we have introduced a new concept called `bundle`. - - `Chunk`: A unit of zkEVM proving, consisting of a list of L2 blocks. - - `Batch`: A collection of chunks encoded into one EIP-4844 blob, serving as the unit of Data Availability. - - `Bundle`: A series of batches that functions as the unit of finalization. - - The main difference compared to Curie is that Scroll will now finalize multiple batches using a single aggregated bundle proof. - -- The on-chain bundle proof verifier uses a new public input layout. - -### Timeline - -- **Scroll Sepolia** - - Network Upgrade: August 14th, 2024 -- **Scroll Mainnet** - - Upgrade Initiation: August 5th, 2024 - - Timelock Completion & Upgrade: August 21st, 2024 - -### Technical Details - -#### Contract Changes - -*Note: Since the previous Curie upgrade, we have migrated the Scroll contracts to a new repo at [scroll-contracts](https://github.com/scroll-tech/scroll-contracts).* - -The code changes for this upgrade are implemented in [this PR](https://github.com/scroll-tech/scroll-contracts/pull/4). The key changes are as follows: - -- We have introduced a new `BatchHeaderV3Codec`. -- We have changed how messages are processed in the `L1MessageQueue` contract. Prior to Darwin, we would process messages when a batch is finalized. After Darwin, most of this processing is moved to the commit step. -- We have introduced a new public input format for bundle proofs. This is implemented in a new contract `IZkEvmVerifierV2`, which is in turn added to `MultipleVersionRollupVerifier`. -- In the `ScrollChain` contract `version=3` batches will now be committed through a new function called `commitBatchWithBlobProof`. Bundles will be finalized using a new function called `finalizeBundleWithProof`. - -See the contract [release notes](https://github.com/scroll-tech/scroll-contracts/releases/tag/v1.0.0) for more information. - -#### Node Changes - -The new node version is `v5.6.0`. See the [release notes](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.6.0) for more information. - -The main changes are: - -- Implementation of timestamp-based hard forks. -- Processing V3 batch codec in rollup-verifier. - -#### zkEVM circuit changes - -The new version of zkevm circuits is `v0.12.0`. See [here](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.12.0) for the release log. - -We have introduced a `RecursionCircuit` that will bundle multiple sequential batches by recursively aggregating the SNARKs from the `BatchCircuit` (previously `AggregationCircuit`). The previously 5 layer proving system is now 7 layers as we introduce: - -- 6th Layer (layer5): `RecursionCircuit` that recursively aggregates `BatchCircuit` SNARKs. -- 7th Layer (layer6): `CompressionCircuit` that compresses the `RecursionCircuit` SNARK and produce an EVM-verifiable validity proof. - -The public input to the `BatchCircuit` is now context-aware of the “previous” `batch`, which allows us to implement the recursion scheme we adopted (described [here](https://scrollzkp.notion.site/Upgrade-4-Darwin-Documentation-05a3ecb59e9d4f288254701f8c888173) in-depth). - -#### Audits - -- TrailofBits: coming soon! - -### Compatibility - -#### Sequencer and Follower Nodes (l2geth) - -This upgrade does not alter the state transition function and is therefore backward-compatible. However, we strongly recommend node operators to upgrade to [v5.6.0](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.6.0). - -#### Dapps and Indexers - -There are some major changes to how we commit and finalize batches after Darwin. - -- Batches will be encoded using the new [V3 batch codec](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv3). This version adds two new fields: - 1. `lastBlockTimestamp` (the timestamp of the last block in this batch). - 2. `blobDataProof` (the KZG challenge point evaluation proof). - - This version removes `skippedL1MessageBitmap`. There will be no changes to how the blob data is encoded and compressed. -- Batches will be committed using the `commitBatchWithBlobProof` function (instead of the previous `commitBatch`). - - New function signature: - - ```solidity - function commitBatchWithBlobProof(uint8 _version, bytes calldata _parentBatchHeader, bytes[] memory _chunks, bytes calldata _skippedL1MessageBitmap, bytes calldata _blobDataProof) - ``` - -- Batches will be finalized using the `finalizeBundleWithProof` function (instead of the previous `finalizeBatchWithProof4844`). - - New function signature: - - ```solidity - function finalizeBundleWithProof(bytes calldata _batchHeader, bytes32 _postStateRoot, bytes32 _withdrawRoot, bytes calldata _aggrProof) - ``` - -- The semantics of the `FinalizeBatch` event will change: It will now mean that all batches between the last finalized batch and the event’s `_batchIndex` have been finalized. The event’s stateRoot and withdrawRoot values belong to the last finalized batch in the bundle. Finalized roots for intermediate batches are no longer available. - - The semantics of the `CommitBatch` and `RevertBatch` events will not change. - -Recommendations: - -- Indexers that decode committed batch data should be adjusted to use the new codec and the new function signature. -- Indexers that track batch finalization status should be adjusted to consider the new event semantics. - -## Curie Upgrade - -### Overview - -This significant upgrade will reduce gas fees on the Scroll chain by 1.5x. Highlights include: - -- Compresses the data stored in blobs using the [zstd](https://github.com/scroll-tech/da-codec/tree/main/libzstd) algorithm. This compression reduces the data size, allowing each blob to store more transactions, thereby reducing data availability cost per transaction. -- Adopts a modified version of the EIP-1559 pricing model which is compatible with the EIP-1559 transaction interface, bringing beneftis such as more accurate transaction pricing and a more predictable and stable fee structure. -- Support for new EVM opcodes `TLOAD`, `TSTORE`, and `MCOPY`. Users can safely use the latest Solidity compiler version `0.8.26` to build the contracts. -- Introduces a dynamic block time. During periods of traffic congestion, a block will be packed when the number of transactions reaches the circuit limit instead of waiting for the 3-second interval. - -### Timeline - -- **Scroll Sepolia** - - Network Upgrade: June 17th, 2024 -- **Scroll Mainnet** - - Upgrade Initiation: June 20th, 2024 - - Timelock Completion & Upgrade: July 3rd, 2024 - -### Technical Details - -#### Contract Changes - -The code changes for this upgrade are documented in the following PRs: - -- [Accept compressed batches](https://github.com/scroll-tech/scroll/pull/1317) -- [Update `L1GasPriceOracle`](https://github.com/scroll-tech/scroll/pull/1343) -- [Change `MAX_COMMIT_SCALAR` and `MAX_BLOB_SCALAR` to 1e18](https://github.com/scroll-tech/scroll/pull/1354) -- [Remove batch index check when updating a verifier](https://github.com/scroll-tech/scroll/pull/1372) - -The main changes are as follows: - -- The rollup contract (`ScrollChain`) will now accept batches with both versions 1 and 2. [Version 1](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv1) is used for uncompressed blobs (pre-Curie), while [version 2](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv2) is used for compressed blobs (post-Curie). -- The `L1GasPriceOracle` contract will be updated to change the data fee formula to account for blob DA, providing a more accurate estimation of DA costs: - - Original formula: `(l1GasUsed(txRlp) + overhead) * l1BaseFee * scalar` - - New formula: `l1BaseFee * commitScalar + len(txRlp) * l1BlobBaseFee * blobScalar` - -#### Node Changes - -The new node version is `v5.5.0`. See the [release notes](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.5.0) for the list of changes. - -#### zkEVM circuit changes - -The new version of zkevm circuits is `v0.11.4`. See [here](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.11.4) for the release log. - -#### Audits - -- TrailofBits: coming soon! -- [Zellic](https://github.com/Zellic/publications/blob/master/Scroll%20zkEVM%20-%20Zellic%20Audit%20Report.pdf) - -### Compatibility - -#### Sequencer and Follower Nodes (l2geth) - -This upgrade is a hard fork, introducing the `TLOAD`, `TSTORE`, and `MCOPY` opcodes. Operators running an `l2geth` node are required to upgrade before the hard fork block. For more information, see the [node release note](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.4.2). - -#### Dapps and Indexers - -For dApps, this upgrade is backward compatible. Developers should adjust the gas fee settings to incorporate the EIP-1559 pricing model. Note that dApps can no longer rely on the fixed 3-second block time in the application logic. - -For indexers, the [data format](https://docs.scroll.io/en/technology/chain/rollup/#codec) remains the same. The will be however changes to the data content: - -- The `version` field in `BatchHeader` will be changed to 2 since Curie block. -- The data stored in blob will be compressed and can be decompressed by [zstd v1.5.6](https://github.com/facebook/zstd/releases/tag/v1.5.6). - -## 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](https://github.com/scroll-tech/scroll/pull/1179), along with the audit fixes [here](https://github.com/scroll-tech/scroll/pulls?q=is%3Apr+created%3A2024-04-10..2024-04-11+fix+in%3Atitle+label%3Abug). 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](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.3.0) for the release log. - -#### zkEVM circuit changes - -The new version of zkevm circuits is `v0.10.3`. See [here](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.10.3) for the release log. - -#### Audits - -- [OpenZeppelin](https://blog.openzeppelin.com/scroll-eip-4844-support-audit) -- [TrailofBits](https://github.com/trailofbits/publications/blob/master/reviews/2024-04-scroll-4844-blob-securityreview.pdf) - -### 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](https://github.com/scroll-tech/go-ethereum/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](/en/technology/chain/rollup/#codec), and check whether their decoders need to be adjusted. A summary of the new format: - -- The format of [`BlockContext`](https://github.com/scroll-tech/scroll/blob/5362e28f744093495c1c09a6b68fc96a3264278b/common/types/encoding/codecv1/codecv1.go#L125) will not change. -- `Chunks` will [no longer include](https://github.com/scroll-tech/scroll/blob/5362e28f744093495c1c09a6b68fc96a3264278b/common/types/encoding/codecv1/codecv1.go#L162) the L2 transaction data. This will instead be [stored in a blob](https://github.com/scroll-tech/scroll/blob/5362e28f744093495c1c09a6b68fc96a3264278b/common/types/encoding/codecv1/codecv1.go#L284) attached to the `commitBatch` transaction. -- `BatchHeader` now contains one new field, [`BlobVersionedHash`](https://github.com/scroll-tech/scroll/blob/5362e28f744093495c1c09a6b68fc96a3264278b/common/types/encoding/codecv1/codecv1.go#L405). - -#### Provers - -This upgrade involves a breaking change in [zkevm-circuits](https://github.com/scroll-tech/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 -- [Bridge Cost Optimization](https://github.com/scroll-tech/scroll/pull/1011) -- [Audit Fixes](https://github.com/scroll-tech/scroll/pulls?q=OZ+is%3Apr+created%3A2024-01-27..2024-02-10) -- [Previously deployed version](https://github.com/scroll-tech/scroll/tree/ff380141a8cbcc214dc65f17ffa44faf4be646b6) (commit `ff380141a8cbcc214dc65f17ffa44faf4be646b6`) -- [Version deployed](https://github.com/scroll-tech/scroll/tree/6030927680a92d0285c2c13e6bb27ed27d1f32d1) (commit `6030927680a92d0285c2c13e6bb27ed27d1f32d1`) - -#### Audits - -- [OpenZeppelin](https://blog.openzeppelin.com/scroll-bridge-gas-optimizations-audit) - -#### 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`](https://etherscan.io/address/0x987e300fDfb06093859358522a79098848C33852) 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`](https://etherscan.io/address/0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B). - -The original gas price oracle contract will be deprecated: it will no longer be updated or used by the Scroll bridge. - -- Ethereum: - - `L2GasPriceOracle`: [`0x987e300fDfb06093859358522a79098848C33852`](https://etherscan.io/address/0x987e300fDfb06093859358522a79098848C33852) - - `L1MessageQueueWithGasPriceOracle`: [`0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B`](https://etherscan.io/address/0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B) -- Sepolia: - - `L2GasPriceOracle`: [`0x247969F4fad93a33d4826046bc3eAE0D36BdE548`](https://sepolia.etherscan.io/address/0x247969F4fad93a33d4826046bc3eAE0D36BdE548) - - `L1MessageQueueWithGasPriceOracle`: [`0xF0B2293F5D834eAe920c6974D50957A1732de763`](https://sepolia.etherscan.io/address/0xF0B2293F5D834eAe920c6974D50957A1732de763) - +| L2 Timelock | Scroll | [`0xf6069DB81239E5194bb53f83aF564d282357bc99`](https://scrollscan.com/address/0xf6069DB81239E5194bb53f83aF564d282357bc99)| \ No newline at end of file diff --git a/src/content/docs/en/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx b/src/content/docs/en/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx new file mode 100644 index 000000000..891bbac98 --- /dev/null +++ b/src/content/docs/en/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx @@ -0,0 +1,131 @@ +--- +section: technology +date: Last Modified +title: "Bernoulli Upgrade" +lang: "en" +permalink: "technology/overview/scroll-upgrades/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](https://github.com/scroll-tech/scroll/pull/1179), along with the audit fixes [here](https://github.com/scroll-tech/scroll/pulls?q=is%3Apr+created%3A2024-04-10..2024-04-11+fix+in%3Atitle+label%3Abug). 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](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.3.0) for the release log. + +#### zkEVM circuit changes + +The new version of zkevm circuits is `v0.10.3`. See [here](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.10.3) for the release log. + +#### Audits + +- [OpenZeppelin](https://blog.openzeppelin.com/scroll-eip-4844-support-audit) +- [TrailofBits](https://github.com/trailofbits/publications/blob/master/reviews/2024-04-scroll-4844-blob-securityreview.pdf) + +### 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](https://github.com/scroll-tech/go-ethereum/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](/en/technology/chain/rollup/#codec), and check whether their decoders need to be adjusted. A summary of the new format: + +- The format of [`BlockContext`](https://github.com/scroll-tech/scroll/blob/5362e28f744093495c1c09a6b68fc96a3264278b/common/types/encoding/codecv1/codecv1.go#L125) will not change. +- `Chunks` will [no longer include](https://github.com/scroll-tech/scroll/blob/5362e28f744093495c1c09a6b68fc96a3264278b/common/types/encoding/codecv1/codecv1.go#L162) the L2 transaction data. This will instead be [stored in a blob](https://github.com/scroll-tech/scroll/blob/5362e28f744093495c1c09a6b68fc96a3264278b/common/types/encoding/codecv1/codecv1.go#L284) attached to the `commitBatch` transaction. +- `BatchHeader` now contains one new field, [`BlobVersionedHash`](https://github.com/scroll-tech/scroll/blob/5362e28f744093495c1c09a6b68fc96a3264278b/common/types/encoding/codecv1/codecv1.go#L405). + +#### Provers + +This upgrade involves a breaking change in [zkevm-circuits](https://github.com/scroll-tech/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 +- [Bridge Cost Optimization](https://github.com/scroll-tech/scroll/pull/1011) +- [Audit Fixes](https://github.com/scroll-tech/scroll/pulls?q=OZ+is%3Apr+created%3A2024-01-27..2024-02-10) +- [Previously deployed version](https://github.com/scroll-tech/scroll/tree/ff380141a8cbcc214dc65f17ffa44faf4be646b6) (commit `ff380141a8cbcc214dc65f17ffa44faf4be646b6`) +- [Version deployed](https://github.com/scroll-tech/scroll/tree/6030927680a92d0285c2c13e6bb27ed27d1f32d1) (commit `6030927680a92d0285c2c13e6bb27ed27d1f32d1`) + +#### Audits + +- [OpenZeppelin](https://blog.openzeppelin.com/scroll-bridge-gas-optimizations-audit) + +#### 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`](https://etherscan.io/address/0x987e300fDfb06093859358522a79098848C33852) 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`](https://etherscan.io/address/0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B). + +The original gas price oracle contract will be deprecated: it will no longer be updated or used by the Scroll bridge. + +- Ethereum: + - `L2GasPriceOracle`: [`0x987e300fDfb06093859358522a79098848C33852`](https://etherscan.io/address/0x987e300fDfb06093859358522a79098848C33852) + - `L1MessageQueueWithGasPriceOracle`: [`0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B`](https://etherscan.io/address/0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B) +- Sepolia: + - `L2GasPriceOracle`: [`0x247969F4fad93a33d4826046bc3eAE0D36BdE548`](https://sepolia.etherscan.io/address/0x247969F4fad93a33d4826046bc3eAE0D36BdE548) + - `L1MessageQueueWithGasPriceOracle`: [`0xF0B2293F5D834eAe920c6974D50957A1732de763`](https://sepolia.etherscan.io/address/0xF0B2293F5D834eAe920c6974D50957A1732de763) \ No newline at end of file diff --git a/src/content/docs/en/technology/overview/scroll-upgrades/curie-upgrade.mdx b/src/content/docs/en/technology/overview/scroll-upgrades/curie-upgrade.mdx new file mode 100644 index 000000000..7d5e4375d --- /dev/null +++ b/src/content/docs/en/technology/overview/scroll-upgrades/curie-upgrade.mdx @@ -0,0 +1,70 @@ +--- +section: technology +date: Last Modified +title: "Curie Upgrade" +lang: "en" +permalink: "technology/overview/scroll-upgrades/curie-upgrade" +--- + +### Overview + +This significant upgrade will reduce gas fees on the Scroll chain by 1.5x. Highlights include: + +- Compresses the data stored in blobs using the [zstd](https://github.com/scroll-tech/da-codec/tree/main/libzstd) algorithm. This compression reduces the data size, allowing each blob to store more transactions, thereby reducing data availability cost per transaction. +- Adopts a modified version of the EIP-1559 pricing model which is compatible with the EIP-1559 transaction interface, bringing beneftis such as more accurate transaction pricing and a more predictable and stable fee structure. +- Support for new EVM opcodes `TLOAD`, `TSTORE`, and `MCOPY`. Users can safely use the latest Solidity compiler version `0.8.26` to build the contracts. +- Introduces a dynamic block time. During periods of traffic congestion, a block will be packed when the number of transactions reaches the circuit limit instead of waiting for the 3-second interval. + +### Timeline + +- **Scroll Sepolia** + - Network Upgrade: June 17th, 2024 +- **Scroll Mainnet** + - Upgrade Initiation: June 20th, 2024 + - Timelock Completion & Upgrade: July 3rd, 2024 + +### Technical Details + +#### Contract Changes + +The code changes for this upgrade are documented in the following PRs: + +- [Accept compressed batches](https://github.com/scroll-tech/scroll/pull/1317) +- [Update `L1GasPriceOracle`](https://github.com/scroll-tech/scroll/pull/1343) +- [Change `MAX_COMMIT_SCALAR` and `MAX_BLOB_SCALAR` to 1e18](https://github.com/scroll-tech/scroll/pull/1354) +- [Remove batch index check when updating a verifier](https://github.com/scroll-tech/scroll/pull/1372) + +The main changes are as follows: + +- The rollup contract (`ScrollChain`) will now accept batches with both versions 1 and 2. [Version 1](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv1) is used for uncompressed blobs (pre-Curie), while [version 2](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv2) is used for compressed blobs (post-Curie). +- The `L1GasPriceOracle` contract will be updated to change the data fee formula to account for blob DA, providing a more accurate estimation of DA costs: + - Original formula: `(l1GasUsed(txRlp) + overhead) * l1BaseFee * scalar` + - New formula: `l1BaseFee * commitScalar + len(txRlp) * l1BlobBaseFee * blobScalar` + +#### Node Changes + +The new node version is `v5.5.0`. See the [release notes](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.5.0) for the list of changes. + +#### zkEVM circuit changes + +The new version of zkevm circuits is `v0.11.4`. See [here](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.11.4) for the release log. + +#### Audits + +- TrailofBits: coming soon! +- [Zellic](https://github.com/Zellic/publications/blob/master/Scroll%20zkEVM%20-%20Zellic%20Audit%20Report.pdf) + +### Compatibility + +#### Sequencer and Follower Nodes (l2geth) + +This upgrade is a hard fork, introducing the `TLOAD`, `TSTORE`, and `MCOPY` opcodes. Operators running an `l2geth` node are required to upgrade before the hard fork block. For more information, see the [node release note](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.4.2). + +#### Dapps and Indexers + +For dApps, this upgrade is backward compatible. Developers should adjust the gas fee settings to incorporate the EIP-1559 pricing model. Note that dApps can no longer rely on the fixed 3-second block time in the application logic. + +For indexers, the [data format](https://docs.scroll.io/en/technology/chain/rollup/#codec) remains the same. The will be however changes to the data content: + +- The `version` field in `BatchHeader` will be changed to 2 since Curie block. +- The data stored in blob will be compressed and can be decompressed by [zstd v1.5.6](https://github.com/facebook/zstd/releases/tag/v1.5.6). \ No newline at end of file diff --git a/src/content/docs/en/technology/overview/scroll-upgrades/darwin-upgrade.mdx b/src/content/docs/en/technology/overview/scroll-upgrades/darwin-upgrade.mdx new file mode 100644 index 000000000..6c9fba1ae --- /dev/null +++ b/src/content/docs/en/technology/overview/scroll-upgrades/darwin-upgrade.mdx @@ -0,0 +1,108 @@ +--- +section: technology +date: Last Modified +title: "Darwin Upgrade" +lang: "en" +permalink: "technology/overview/scroll-upgrades/darwin-upgrade" +--- + +### Overview + +This upgrade will reduce gas fees by 34% by using a single aggregated proof for multiple batches, eliminating the need to finalize each batch individually. + +- Darwin uses a new [V3 batch codec](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv3). +- In addition to the previous notions of `chunk` and `batch`, we have introduced a new concept called `bundle`. + - `Chunk`: A unit of zkEVM proving, consisting of a list of L2 blocks. + - `Batch`: A collection of chunks encoded into one EIP-4844 blob, serving as the unit of Data Availability. + - `Bundle`: A series of batches that functions as the unit of finalization. + + The main difference compared to Curie is that Scroll will now finalize multiple batches using a single aggregated bundle proof. + +- The on-chain bundle proof verifier uses a new public input layout. + +### Timeline + +- **Scroll Sepolia** + - Network Upgrade: August 14th, 2024 +- **Scroll Mainnet** + - Upgrade Initiation: August 5th, 2024 + - Timelock Completion & Upgrade: August 21st, 2024 + +### Technical Details + +#### Contract Changes + +*Note: Since the previous Curie upgrade, we have migrated the Scroll contracts to a new repo at [scroll-contracts](https://github.com/scroll-tech/scroll-contracts).* + +The code changes for this upgrade are implemented in [this PR](https://github.com/scroll-tech/scroll-contracts/pull/4). The key changes are as follows: + +- We have introduced a new `BatchHeaderV3Codec`. +- We have changed how messages are processed in the `L1MessageQueue` contract. Prior to Darwin, we would process messages when a batch is finalized. After Darwin, most of this processing is moved to the commit step. +- We have introduced a new public input format for bundle proofs. This is implemented in a new contract `IZkEvmVerifierV2`, which is in turn added to `MultipleVersionRollupVerifier`. +- In the `ScrollChain` contract `version=3` batches will now be committed through a new function called `commitBatchWithBlobProof`. Bundles will be finalized using a new function called `finalizeBundleWithProof`. + +See the contract [release notes](https://github.com/scroll-tech/scroll-contracts/releases/tag/v1.0.0) for more information. + +#### Node Changes + +The new node version is `v5.6.0`. See the [release notes](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.6.0) for more information. + +The main changes are: + +- Implementation of timestamp-based hard forks. +- Processing V3 batch codec in rollup-verifier. + +#### zkEVM circuit changes + +The new version of zkevm circuits is `v0.12.0`. See [here](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.12.0) for the release log. + +We have introduced a `RecursionCircuit` that will bundle multiple sequential batches by recursively aggregating the SNARKs from the `BatchCircuit` (previously `AggregationCircuit`). The previously 5 layer proving system is now 7 layers as we introduce: + +- 6th Layer (layer5): `RecursionCircuit` that recursively aggregates `BatchCircuit` SNARKs. +- 7th Layer (layer6): `CompressionCircuit` that compresses the `RecursionCircuit` SNARK and produce an EVM-verifiable validity proof. + +The public input to the `BatchCircuit` is now context-aware of the “previous” `batch`, which allows us to implement the recursion scheme we adopted (described [here](https://scrollzkp.notion.site/Upgrade-4-Darwin-Documentation-05a3ecb59e9d4f288254701f8c888173) in-depth). + +#### Audits + +- TrailofBits: coming soon! + +### Compatibility + +#### Sequencer and Follower Nodes (l2geth) + +This upgrade does not alter the state transition function and is therefore backward-compatible. However, we strongly recommend node operators to upgrade to [v5.6.0](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.6.0). + +#### Dapps and Indexers + +There are some major changes to how we commit and finalize batches after Darwin. + +- Batches will be encoded using the new [V3 batch codec](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv3). This version adds two new fields: + 1. `lastBlockTimestamp` (the timestamp of the last block in this batch). + 2. `blobDataProof` (the KZG challenge point evaluation proof). + + This version removes `skippedL1MessageBitmap`. There will be no changes to how the blob data is encoded and compressed. +- Batches will be committed using the `commitBatchWithBlobProof` function (instead of the previous `commitBatch`). + + New function signature: + + ```solidity + function commitBatchWithBlobProof(uint8 _version, bytes calldata _parentBatchHeader, bytes[] memory _chunks, bytes calldata _skippedL1MessageBitmap, bytes calldata _blobDataProof) + ``` + +- Batches will be finalized using the `finalizeBundleWithProof` function (instead of the previous `finalizeBatchWithProof4844`). + + New function signature: + + ```solidity + function finalizeBundleWithProof(bytes calldata _batchHeader, bytes32 _postStateRoot, bytes32 _withdrawRoot, bytes calldata _aggrProof) + ``` + +- The semantics of the `FinalizeBatch` event will change: It will now mean that all batches between the last finalized batch and the event’s `_batchIndex` have been finalized. The event’s stateRoot and withdrawRoot values belong to the last finalized batch in the bundle. Finalized roots for intermediate batches are no longer available. + + The semantics of the `CommitBatch` and `RevertBatch` events will not change. + +Recommendations: + +- Indexers that decode committed batch data should be adjusted to use the new codec and the new function signature. +- Indexers that track batch finalization status should be adjusted to consider the new event semantics. \ No newline at end of file diff --git a/src/content/docs/en/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx b/src/content/docs/en/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx new file mode 100644 index 000000000..cb8f4afa9 --- /dev/null +++ b/src/content/docs/en/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx @@ -0,0 +1,34 @@ +--- +section: technology +date: Last Modified +title: "Darwin v2 Upgrade" +lang: "en" +permalink: "technology/overview/scroll-upgrades/darwin-v2-upgrade" +--- + +### Overview + +During internal testing, we identified that blocks may not always be compressible under certain conditions, which leads to unprovable chunks and batches. +To fix this issue, a minor upgrade has been conducted so that uncompressed blobs will be enabled when this special case is detected. + +### Timeline + +As this is a security related patch, we bypassed the 7-day timelock mechanism. + +- **Scroll Sepolia**: August 28th, 2024 +- **Scroll Mainnet**: September 2nd, 2024 + +### Compatibility + +#### Sequencer and Follower Nodes (l2geth) + +The new node version is `v5.7.0`. See the [release notes](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.7.0) for more information. + +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. + +#### Dapps and Indexers + +A change has been implemented to Scroll Mainnet to enhance sequencer throughput, which adjusted the maximum reorg depth to 17 blocks. Previously, the system performed thorough capacity checks within the signer thread to determine whether transactions exceed the circuit limit. While this ensures that all transactions within a block are compliant, it also requires additional CPU resources. +We introduced a new circuit capacity checking scheme on Mainnet. The sequencer thread now will continue to perform capacity checks, but in a more approximate manner. In parallel, 16 worker threads will accurately verify the capacity of previous blocks. As a result, a reorg could occur with a maximum depth of 17 blocks, although the likelihood of this is low. + +For indexers, the `BatchHeader` version has been upgraded to 4. This is backward compatible (the only exception is for developers decoding the blob payload, which has changed slightly). \ No newline at end of file diff --git a/src/content/docs/en/technology/overview/scroll-upgrades/euclid-upgrade.mdx b/src/content/docs/en/technology/overview/scroll-upgrades/euclid-upgrade.mdx new file mode 100644 index 000000000..cfa4cf394 --- /dev/null +++ b/src/content/docs/en/technology/overview/scroll-upgrades/euclid-upgrade.mdx @@ -0,0 +1,105 @@ +--- +section: technology +date: Last Modified +title: "Euclid Upgrade" +lang: "en" +permalink: "technology/overview/scroll-upgrades/euclid-upgrade" +--- + +### Overview +This upgrade contains five main changes: +- Migration to OpenVM Prover. +- Migration to MPT state commitment. +- Optimized rollup process. +- EIP-7702 and RIP-7212 support. +- Stage-1 readiness. + +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. + +### Timeline + +- **Scroll Sepolia** + - Phase 1: March 11th, 2025 + - Phase 2: March 13th, 2025 +- **Scroll Mainnet** + - Phase 1: April 16th, 2025 + - Phase 2: April 22nd, 2025 + +### Features + +##### OpenVM Prover +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). + +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. + +##### MPT State Commitment +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. + +MPT unlocks better sequencer performance and offers better compatibility for dapps relying on L2 state proofs. + +##### Optimized Rollup Process +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. + +The main optimizations are: +- Move blob verification from contract code to zk circuits. +- Amortize message queue commitment cost. +- Move L2 block header data from calldata to blobs. +- Commit multiple blobs in a single transaction. +- These changes combined are estimated to reduce batch commitment costs by up to 90%. + +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. + +##### Powerful Smart Accounts + +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. + +##### Stage-1 + +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). + +Enforced transaction inclusion is a censorship resistance mechanism. It allows users to enqueue a transaction directly from Ethereum, forcing the sequencer to include it. +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. +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. + +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. + +### Compatibility + +#### Node Operators + +##### Phase 1 Changes +* 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. +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. +* 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. + +##### Phase 2 Changes +* 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. + +#### Dapps and Indexers + +##### Phase 1 Changes +* State commitment structure switches from zktrie to MPT +* Any dapp relying on zktrie proofs must migrate to MPT proofs +* Batch versions will use v5 and v6 (format identical to previous v4 batches) + +##### Phase 2 Changes +* Batch headers and blob payload will use a new encoding. The batch versions used in phase-2 will be v7. +* Commit batch calldata will no longer contain block headers. Projects that need this information from L1 must fetch and decode the blob. +* 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. +* 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. +* 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. + + Pre-Euclid-phase-2: `commitBatchWithBlobProof`, `finalizeBundleWithProof`, `revertBatch` + + Post-Euclid-phase-2: `commitBatches`, `finalizeBundlePostEuclidV2`, `commitAndFinalizeBatch`, `revertBatch` (new). + +* 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. +* We will migrate to a new message queue contract (`L1MessageQueueV2`) that will store messages by a different (rolling) hash. + +In addition, L2 unsafe blocks will no longer include a signature or vanity tag in the `ExtraData` field. + +#### Resources +* [Contract changes on GitHub](https://github.com/scroll-tech/scroll-contracts/pull/79) +* [DA codec repository](https://github.com/scroll-tech/da-codec) + +Projects requiring additional guidance should open a [ticket on Discord](https://discord.com/channels/853955156100907018/1280768286124146732). \ No newline at end of file diff --git a/src/content/docs/es/technology/overview/scroll-upgrades.mdx b/src/content/docs/es/technology/overview/scroll-upgrades.mdx new file mode 100644 index 000000000..6494ef09d --- /dev/null +++ b/src/content/docs/es/technology/overview/scroll-upgrades.mdx @@ -0,0 +1,20 @@ +--- +section: technology +date: Last Modified +title: "Scroll Upgrades" +lang: "es" +permalink: "technology/overview/scroll-upgrades" +--- + +A medida que el equipo continúa avanzando en la hoja de ruta de Scroll, actualizaremos la red de Scroll para incluir nuevas funciones y mejoras. + +Los siguientes contratos se utilizan para iniciar y ejecutar las actualizaciones tras un período de espera de dos semanas: + +| Contract | Network | Address | +| ------------------------ | ------- | - | +| L1 Scroll Multisig | Ethereum| [`0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe`](https://etherscan.io/address/0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe)| +| L1 Timelock | Ethereum| [`0x1A658B88fD0a3c82fa1a0609fCDbD32e7dd4aB9C`](https://etherscan.io/address/0x1A658B88fD0a3c82fa1a0609fCDbD32e7dd4aB9C)| +| L2 Scroll Multisig | Scroll| [`0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe`](https://scrollscan.com/address/0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe)| +| L2 Timelock | Scroll | [`0xf6069DB81239E5194bb53f83aF564d282357bc99`](https://scrollscan.com/address/0xf6069DB81239E5194bb53f83aF564d282357bc99)| + +Puedes unirte a nuestro [canal de Telegram para actualizaciones técnicas](https://t.me/scroll_tech_updates), donde se anuncian futuras actualizaciones y eventos de operaciones on-chain. \ No newline at end of file diff --git a/src/content/docs/es/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx b/src/content/docs/es/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx new file mode 100644 index 000000000..d7638c93c --- /dev/null +++ b/src/content/docs/es/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx @@ -0,0 +1,102 @@ +--- +section: technology +date: Last Modified +title: "Bernoulli Upgrade" +lang: "es" +permalink: "technology/overview/scroll-upgrades/bernoulli-upgrade" +--- + +### Resumen + +Esta actualización introduce una reducción significativa en los costos de transacción al añadir soporte para blobs de datos EIP-4844 y la precompilación SHA2-256. + +### Cronograma + +- **Scroll Sepolia** + - Actualización de red: 15 de abril de 2024 +- **Scroll Mainnet** + - Inicio de la actualización: 15 de abril de 2024 + - Finalización del timelock y actualización: 29 de abril de 2024 + +### Detalles Técnicos + +#### Cambios en contratos + +Los cambios están en [este PR](https://github.com/scroll-tech/scroll/pull/1179), y las correcciones de auditoría [aquí](https://github.com/scroll-tech/scroll/pulls?q=is%3Apr+created%3A2024-04-10..2024-04-11+fix+in%3Atitle+label%3Abug). Cambios principales: + +- `ScrollChain` ahora acepta lotes con `calldata` o blobs. +- `ScrollChain` ahora permite finalizar lotes codificados con blob mediante `finalizeBatchWithProof4844` +- `MultipleVersionRollupVerifier` ahora gestiona diferentes verificadores por versión. + +#### Cambios en el nodo + +Nueva versión del nodo: `v5.3.0` +Ver registro [aquí](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.3.0) + +#### Cambios en circuitos zkEVM + +Nueva versión de circuitos: `v0.10.3` +Ver registro [aquí](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.10.3) + +#### Auditorías + +- [OpenZeppelin](https://blog.openzeppelin.com/scroll-eip-4844-support-audit) +- [Trail of Bits](https://github.com/trailofbits/publications/blob/master/reviews/2024-04-scroll-4844-blob-securityreview.pdf) + +### Compatibilidad + +#### Nodos l2geth + +Es un hard fork. Los operadores deben actualizar antes del bloque de fork. +Ver [node releases](https://github.com/scroll-tech/go-ethereum/releases). + +#### Indexadores y puentes + +El formato de datos ha cambiado. Ver [nuevo formato](/en/technology/chain/rollup/#codec): + +- `BlockContext` no cambia. +- `Chunks` ya no incluye datos de transacción L2, ahora están en el blob. +- `BatchHeader` añade el campo `BlobVersionedHash`. + +#### Provers + +Los operadores deben actualizar debido a cambios en `zkevm-circuits`. + +--- + +## Actualización del Puente + +### Resumen + +Se realizaron optimizaciones de gas en contratos de puente y rollup: + +- Uso de `immutable` para direcciones que no cambian. +- Estimación de gas más simple en `L1MessageQueue`. +- Unión de `L1MessageQueue` y `L2GasPriceOracle`. + +### Cronograma + +- **Scroll Sepolia:** 19 de enero de 2024 +- **Scroll Mainnet:** Inicio 7 de febrero, activación 21 de febrero de 2024 + +### Detalles Técnicos + +- [Optimización de puente](https://github.com/scroll-tech/scroll/pull/1011) +- [Fixes de auditoría](https://github.com/scroll-tech/scroll/pulls?q=OZ+is%3Apr+created%3A2024-01-27..2024-02-10) +- [Versión anterior](https://github.com/scroll-tech/scroll/tree/ff380141a8cbcc214dc65f17ffa44faf4be646b6) +- [Versión nueva](https://github.com/scroll-tech/scroll/tree/6030927680a92d0285c2c13e6bb27ed27d1f32d1) + +#### Auditoría + +- [OpenZeppelin](https://blog.openzeppelin.com/scroll-bridge-gas-optimizations-audit) + +### Compatibilidad + +##### Nodos l2geth + +No se requiere actualización. + +##### Dapps / Indexadores + +La mayoría de cambios son internos. +`L2GasPriceOracle` queda obsoleto. Usar [`L1MessageQueueWithGasPriceOracle`](https://etherscan.io/address/0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B) diff --git a/src/content/docs/es/technology/overview/scroll-upgrades/curie-upgrade.mdx b/src/content/docs/es/technology/overview/scroll-upgrades/curie-upgrade.mdx new file mode 100644 index 000000000..2a2f67393 --- /dev/null +++ b/src/content/docs/es/technology/overview/scroll-upgrades/curie-upgrade.mdx @@ -0,0 +1,70 @@ +--- +section: technology +date: Last Modified +title: "Curie Upgrade" +lang: "es" +permalink: "technology/overview/scroll-upgrades/curie-upgrade" +--- + +### Resumen + +Esta importante actualización reducirá las tarifas de gas en la cadena de Scroll en 1.5x. Los aspectos destacados incluyen: + +- Comprime los datos almacenados en blobs utilizando el algoritmo [zstd](https://github.com/scroll-tech/da-codec/tree/main/libzstd). Esta compresión reduce el tamaño de los datos, permitiendo que cada blob almacene más transacciones, lo que reduce el costo de disponibilidad de datos por transacción. +- Adopta una versión modificada del modelo de precios EIP-1559 compatible con la interfaz de transacción EIP-1559, brindando beneficios como precios de transacción más precisos y una estructura de tarifas más predecible y estable. +- Soporte para nuevos códigos de operación EVM `TLOAD`, `TSTORE` y `MCOPY`. Los usuarios pueden usar de manera segura la última versión del compilador Solidity `0.8.26` para construir contratos. +- Introduce un tiempo de bloque dinámico. Durante periodos de congestión, un bloque se empaquetará cuando el número de transacciones alcance el límite del circuito en lugar de esperar al intervalo de 3 segundos. + +### Cronograma + +- **Scroll Sepolia** + - Actualización de red: 17 de junio de 2024 +- **Scroll Mainnet** + - Inicio de la actualización: 20 de junio de 2024 + - Finalización del Timelock y actualización: 3 de julio de 2024 + +### Detalles técnicos + +#### Cambios en contratos + +Los cambios de código para esta actualización están documentados en los siguientes PRs: + +- [Aceptar lotes comprimidos](https://github.com/scroll-tech/scroll/pull/1317) +- [Actualizar `L1GasPriceOracle`](https://github.com/scroll-tech/scroll/pull/1343) +- [Cambiar `MAX_COMMIT_SCALAR` y `MAX_BLOB_SCALAR` a 1e18](https://github.com/scroll-tech/scroll/pull/1354) +- [Eliminar verificación de índice de lote al actualizar un verificador](https://github.com/scroll-tech/scroll/pull/1372) + +Cambios principales: + +- El contrato rollup (`ScrollChain`) ahora aceptará lotes con versiones 1 y 2. [Versión 1](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv1) se utiliza para blobs sin comprimir (pre-Curie), mientras que [versión 2](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv2) se usa para blobs comprimidos (post-Curie). +- El contrato `L1GasPriceOracle` se actualizará para cambiar la fórmula de tarifas de datos considerando DA de blob: + - Fórmula original: `(l1GasUsed(txRlp) + overhead) * l1BaseFee * scalar` + - Nueva fórmula: `l1BaseFee * commitScalar + len(txRlp) * l1BlobBaseFee * blobScalar` + +#### Cambios en nodos + +Nueva versión del nodo: `v5.5.0`. Ver [notas de lanzamiento](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.5.0). + +#### Cambios en zkEVM circuit + +Nueva versión de circuitos zkevm: `v0.11.4`. Ver [aquí](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.11.4). + +#### Auditorías + +- TrailofBits: ¡Próximamente! +- [Zellic](https://github.com/Zellic/publications/blob/master/Scroll%20zkEVM%20-%20Zellic%20Audit%20Report.pdf) + +### Compatibilidad + +#### Nodos Secuenciador y Follower (l2geth) + +Esta actualización es un hard fork. Los operadores deben actualizar antes del bloque de bifurcación. Ver [nota del nodo](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.4.2). + +#### Dapps e indexadores + +Para dApps, esta actualización es compatible. Los desarrolladores deben ajustar la configuración de tarifas. Las dApps ya no pueden depender del tiempo fijo de bloque de 3 segundos. + +Para indexadores, el [formato de datos](https://docs.scroll.io/en/technology/chain/rollup/#codec) sigue igual, pero el contenido cambia: + +- El campo `version` en `BatchHeader` será 2 desde Curie. +- Los datos en blob estarán comprimidos y pueden descomprimirse con [zstd v1.5.6](https://github.com/facebook/zstd/releases/tag/v1.5.6). diff --git a/src/content/docs/es/technology/overview/scroll-upgrades/darwin-upgrade.mdx b/src/content/docs/es/technology/overview/scroll-upgrades/darwin-upgrade.mdx new file mode 100644 index 000000000..c1e2ec67c --- /dev/null +++ b/src/content/docs/es/technology/overview/scroll-upgrades/darwin-upgrade.mdx @@ -0,0 +1,110 @@ +--- +section: technology +date: Last Modified +title: "Darwin Upgrade" +lang: "es" +permalink: "technology/overview/scroll-upgrades/darwin-upgrade" +--- + +### Resumen + +Esta actualización reducirá las tarifas de gas en un 34% al utilizar una única prueba agregada para múltiples lotes, eliminando la necesidad de finalizar cada lote individualmente. + +- Darwin utiliza un nuevo [códec de lote V3](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv3). +- Además de los conceptos anteriores de `chunk` y `batch`, hemos introducido un nuevo concepto llamado `bundle`. + - `Chunk`: Una unidad de prueba zkEVM, que consiste en una lista de bloques L2. + - `Batch`: Una colección de chunks codificados en un blob EIP-4844, que sirve como unidad de Disponibilidad de Datos. + - `Bundle`: Una serie de batches que funciona como unidad de finalización. + + La principal diferencia en comparación con Curie es que Scroll ahora finalizará múltiples batches utilizando una única prueba de bundle agregada. + +- El verificador de pruebas de bundle en cadena utiliza un nuevo diseño de entrada pública. + +### Cronograma + +- **Scroll Sepolia** + - Actualización de red: 14 de agosto de 2024 +- **Scroll Mainnet** + - Inicio de la actualización: 5 de agosto de 2024 + - Finalización del timelock y actualización: 21 de agosto de 2024 + +### Detalles técnicos + +#### Cambios en los contratos + +*Nota: Desde la actualización anterior de Curie, hemos migrado los contratos de Scroll a un nuevo repositorio en [scroll-contracts](https://github.com/scroll-tech/scroll-contracts).* + +Los cambios de código para esta actualización se implementan en [este PR](https://github.com/scroll-tech/scroll-contracts/pull/4). Los cambios clave son los siguientes: + +- Hemos introducido un nuevo `BatchHeaderV3Codec`. +- Hemos cambiado cómo se procesan los mensajes en el contrato `L1MessageQueue`. Antes de Darwin, procesábamos los mensajes cuando se finalizaba un batch. Después de Darwin, la mayor parte de este procesamiento se mueve al paso de commit. +- Hemos introducido un nuevo formato de entrada pública para las pruebas de bundle. Esto se implementa en un nuevo contrato `IZkEvmVerifierV2`, que a su vez se agrega a `MultipleVersionRollupVerifier`. +- En el contrato `ScrollChain`, los batches con `version=3` ahora se comprometerán a través de una nueva función llamada `commitBatchWithBlobProof`. Los bundles se finalizarán utilizando una nueva función llamada `finalizeBundleWithProof`. + +Consulta las [notas de la versión del contrato](https://github.com/scroll-tech/scroll-contracts/releases/tag/v1.0.0) para obtener más información. + +#### Cambios en los nodos + +La nueva versión del nodo es `v5.6.0`. Consulta las [notas de la versión](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.6.0) para obtener más información. + +Los principales cambios son: + +- Implementación de hard forks basados en marcas de tiempo. +- Procesamiento del códec de lote V3 en rollup-verifier. + +#### Cambios en los circuitos zkEVM + +La nueva versión de los circuitos zkEVM es `v0.12.0`. Consulta [aquí](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.12.0) el registro de la versión. + +Hemos introducido un `RecursionCircuit` que agrupará múltiples batches secuenciales mediante la agregación recursiva de los SNARKs del `BatchCircuit` (anteriormente `AggregationCircuit`). El sistema de prueba de 5 capas anterior ahora es de 7 capas al introducir: + +- 6ª Capa (layer5): `RecursionCircuit` que agrega recursivamente los SNARKs de `BatchCircuit`. +- 7ª Capa (layer6): `CompressionCircuit` que comprime el SNARK de `RecursionCircuit` y produce una prueba de validez verificable por EVM. + +La entrada pública al `BatchCircuit` ahora es consciente del contexto del "batch" anterior, lo que nos permite implementar el esquema de recursión que adoptamos (descrito [aquí](https://scrollzkp.notion.site/Upgrade-4-Darwin-Documentation-05a3ecb59e9d4f288254701f8c888173) en profundidad). + +#### Auditorías + +- TrailofBits: ¡próximamente! + +### Compatibilidad + +#### Nodos de secuenciador y seguidores (l2geth) + +Esta actualización no altera la función de transición de estado y, por lo tanto, es compatible hacia atrás. Sin embargo, recomendamos encarecidamente a los operadores de nodos que actualicen a [v5.6.0](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.6.0). + +#### Dapps e indexadores + +Hay algunos cambios importantes en cómo comprometemos y finalizamos los batches después de Darwin. + +- Los batches se codificarán utilizando el nuevo [códec de lote V3](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv3). Esta versión agrega dos nuevos campos: + 1. `lastBlockTimestamp` (la marca de tiempo del último bloque en este batch). + 2. `blobDataProof` (la prueba de evaluación del punto de desafío KZG). + + Esta versión elimina `skippedL1MessageBitmap`. No habrá cambios en cómo se codifican y comprimen los datos del blob. +- Los batches se comprometerán utilizando la función `commitBatchWithBlobProof` (en lugar de la anterior `commitBatch`). + + Nueva firma de función: + + ```solidity + function commitBatchWithBlobProof(uint8 _version, bytes calldata _parentBatchHeader, bytes[] memory _chunks, bytes calldata _skippedL1MessageBitmap, bytes calldata _blobDataProof) + ``` + +- Los batches se finalizarán utilizando la función `finalizeBundleWithProof` (en lugar de la anterior `finalizeBatchWithProof4844`). + + Nueva firma de función: + + ```solidity + function finalizeBundleWithProof(bytes calldata _batchHeader, bytes32 _postStateRoot, bytes32 _withdrawRoot, bytes calldata _aggrProof) + ``` + +- La semántica del evento `FinalizeBatch` cambiará: ahora significará que todos los batches entre el último batch finalizado y el `_batchIndex` del evento han sido finalizados. Los valores de stateRoot y withdrawRoot del evento pertenecen al último batch finalizado en el bundle. Las raíces finalizadas para los batches intermedios ya no están disponibles. + + La semántica de los eventos `CommitBatch` y `RevertBatch` no cambiará. + +Recomendaciones: + +- Los indexadores que decodifican datos de batches comprometidos deben ajustarse para usar el nuevo códec y la nueva firma de función. +- Los indexadores que rastrean el estado finalizado deben actualizar su lógica para manejar el evento `FinalizeBatch` en el contexto de múltiples batches finalizados a la vez. + + diff --git a/src/content/docs/es/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx b/src/content/docs/es/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx new file mode 100644 index 000000000..62f0fafd3 --- /dev/null +++ b/src/content/docs/es/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx @@ -0,0 +1,36 @@ +--- +section: technology +date: Last Modified +title: "Darwin v2 Upgrade" +lang: "es" +permalink: "technology/overview/scroll-upgrades/darwin-v2-upgrade" +--- + +### Resumen + +Durante las pruebas internas, identificamos que los bloques pueden no ser siempre comprimibles bajo ciertas condiciones, lo que provoca fragmentos y lotes imposibles de probar. +Para solucionar este problema, se ha realizado una actualización menor para que se habiliten blobs sin comprimir cuando se detecte este caso especial. + +### Cronograma + +Dado que se trata de un parche relacionado con la seguridad, se omitió el mecanismo de bloqueo de 7 días. + +- **Scroll Sepolia**: 28 de agosto de 2024 +- **Scroll Mainnet**: 2 de septiembre de 2024 + +### Compatibilidad + +#### Nodos de Secuenciador y Follower (l2geth) + +La nueva versión del nodo es `v5.7.0`. Consulta las [notas de la versión](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.7.0) para más información. + +Esta actualización no modifica la función de transición de estado de Scroll, por lo que es compatible con versiones anteriores. Sin embargo, cambia el formato de los datos de lote enviados a Ethereum. Por lo tanto, los nodos que tienen habilitada la verificación de rollup (`--rollup.verify`) deben actualizarse para poder seguir la cadena. + +#### Dapps e Indexadores + +Se ha implementado un cambio en Scroll Mainnet para mejorar el rendimiento del secuenciador, ajustando la profundidad máxima de reorganización a 17 bloques. +Anteriormente, el sistema realizaba comprobaciones de capacidad exhaustivas dentro del hilo del firmante para determinar si las transacciones superaban el límite del circuito. Aunque esto garantizaba el cumplimiento, también exigía más recursos de CPU. +Ahora, el hilo del secuenciador sigue realizando comprobaciones de capacidad, pero de forma aproximada, mientras que 16 hilos trabajadores verifican con precisión la capacidad de los bloques anteriores. +Como resultado, puede ocurrir una reorganización con una profundidad máxima de 17 bloques, aunque la probabilidad es baja. + +Para los indexadores, la versión de `BatchHeader` se ha actualizado a 4. Es compatible hacia atrás (excepto para desarrolladores que decodifican el contenido de los blobs, que ha cambiado ligeramente). diff --git a/src/content/docs/es/technology/overview/scroll-upgrades/euclid-upgrade.mdx b/src/content/docs/es/technology/overview/scroll-upgrades/euclid-upgrade.mdx new file mode 100644 index 000000000..b65c1e3ba --- /dev/null +++ b/src/content/docs/es/technology/overview/scroll-upgrades/euclid-upgrade.mdx @@ -0,0 +1,113 @@ +--- +section: technology +date: Last Modified +title: "Euclid Upgrade" +lang: "es" +permalink: "technology/overview/scroll-upgrades/euclid-upgrade" +--- + +### Resumen + +Esta actualización incluye cinco cambios principales: + +- Migración al Prover OpenVM. +- Migración al compromiso de estado MPT. +- Proceso de rollup optimizado. +- Soporte para EIP-7702 y RIP-7212. +- Preparación para la Etapa 1. + +Estos cambios resultarán en tarifas más bajas, mayor rendimiento, mejor seguridad, mejor compatibilidad y funciones más avanzadas que los usuarios y desarrolladores en Scroll pueden disfrutar. + +### Cronograma + +- **Scroll Sepolia** + - Fase 1: 11 de marzo de 2025 + - Fase 2: 13 de marzo de 2025 +- **Scroll Mainnet** + - Fase 1: 16 de abril de 2025 + - Fase 2: 22 de abril de 2025 + +### El Distintivo + +#### Prover OpenVM + +Scroll ha sido pionero en la tecnología ZK a través de nuestro zkEVM compatible con bytecode EVM basado en halo2. La tecnología ZK ha progresado rápidamente desde entonces, y ahora los zkVMs de propósito general basados en RISC-V se están volviendo prácticos. En la actualización Euclid, estamos reemplazando nuestros circuitos halo2 por un nuevo prover construido sobre [OpenVM](https://scroll.io/blog/the-first-release-of-the-openvm-framework-is-live). + +El nuevo prover OpenVM ofrece numerosos beneficios. El código del prover es más fácil de razonar y auditar. Podemos reutilizar mejor el código entre diferentes componentes. También podemos reducir los costos y la latencia de prueba. Finalmente, el nuevo prover nos permitirá probar transacciones arbitrariamente complejas, lo que nos permitirá eliminar el módulo de verificación de capacidad de circuito que ha sido un gran cuello de botella en el rendimiento del secuenciador. + +#### Compromiso de Estado MPT + +Scroll actualmente utiliza una estructura de datos de compromiso de estado amigable con zk llamada [zktrie](https://docs.scroll.io/en/technology/sequencer/zktrie/). Con el nuevo prover OpenVM, ahora es práctico probar la estructura de estado de Ethereum: el [Merkle-Patricia Trie](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie), también conocido como MPT. Scroll ahora está reemplazando zktrie y adoptando MPT. + +MPT desbloquea un mejor rendimiento del secuenciador y ofrece mejor compatibilidad para las dapps que dependen de pruebas de estado L2. + +#### Proceso de Rollup Optimizado + +En Euclid, estamos implementando una serie de optimizaciones en el proceso de rollup. Estas resultan en reducciones significativas en la sobrecarga de Disponibilidad de Datos (DA) y, en última instancia, tarifas más bajas para los usuarios. + +Las principales optimizaciones son: + +- Mover la verificación de blobs del código del contrato a los circuitos zk. +- Amortizar el costo de compromiso de la cola de mensajes. +- Mover los datos del encabezado del bloque L2 de calldata a blobs. +- Comprometer múltiples blobs en una sola transacción. + +Estos cambios combinados se estiman para reducir los costos de compromiso de lotes hasta en un 90%. + +Además, los nodos L2 de Scroll reemplazarán Clique (el consenso actual de Prueba de Autoridad) y comenzarán a leer el firmante autorizado del bloque L2 desde el nuevo contrato de configuración del sistema en L1. + +#### Cuentas Inteligentes Potentes + +En Euclid, Scroll está adoptando [EIP-7702](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7702.md) y [RIP-7212](https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md). Adoptar 7702 en paralelo con la [actualización Pectra](https://blog.ethereum.org/2025/02/14/pectra-testnet-announcement) de Ethereum asegura que Scroll mantenga un alto grado de compatibilidad con Ethereum. Estas características también permitirán a los usuarios y desarrolladores de Scroll aprovechar las últimas tecnologías en cuentas inteligentes: los usuarios pueden agregar funcionalidades de contrato inteligente a sus cuentas existentes, usar claves de acceso para firmar autorizaciones y beneficiarse de las mejoras emergentes en la experiencia de usuario que habilitan estos nuevos estándares. + +#### Etapa 1 + +En Euclid, estamos implementando garantías de seguridad importantes que permitirán a Scroll alcanzar la Etapa 1 según el [estándar definido por L2BEAT](https://medium.com/l2beat/introducing-stages-a-framework-to-evaluate-rollups-maturity-d290bb22befe). + +La inclusión forzada de transacciones es un mecanismo de resistencia a la censura. Permite a los usuarios encolar una transacción directamente desde Ethereum, obligando al secuenciador a incluirla. + +La presentación de lotes sin permiso es un mecanismo para prevenir fallas de disponibilidad. En el improbable escenario de que el secuenciador de Scroll deje de publicar o finalizar lotes durante un período prolongado, este mecanismo permite a cualquiera intervenir y comenzar a publicar y finalizar lotes. + +Ambos mecanismos obligan al secuenciador de Scroll a hacer su trabajo. Como tal, sirven como elementos disuasorios y ofrecen garantías de seguridad importantes a los usuarios. + +También hemos transferido recientemente el control al [Consejo de Seguridad](https://scroll.io/blog/introducing-scroll-security-council), un organismo independiente de 12 miembros reputados, formando una multisig de 9/12. La actualización Euclid será la primera actualización ejecutada por el Consejo de Seguridad. + +### Compatibilidad + +#### Operadores de Nodo + +##### Cambios de la Fase 1 + +- Los operadores de nodo deben migrar a la nueva versión MPT de l2geth. Esto requiere una resincronización completa (desde la red o desde una instantánea). Proporcionaremos una versión del nodo y instantáneas más adelante. Consulte la [Guía de Migración del Estado del Nodo](https://www.notion.so/Node-Runner-State-Migration-Guideline-17b7792d22af80e4ab4bdc294f4f7541?pvs=21) para obtener instrucciones detalladas. +- Los nodos zktrie seguirán operando, pero dejarán de verificar las raíces de estado en los encabezados de bloque recibidos. Recomendamos a los operadores de nodo migrar a nodos MPT poco antes de Euclid. + +##### Cambios de la Fase 2 + +- Los operadores de nodo deben estar al tanto de la etapa 1 (lotes sin permisos). Aunque es poco probable que este mecanismo se active en la práctica, si lo hace, requerirá pasos manuales para recuperar los nodos. Proporcionaremos documentación detallada sobre esto en nuestras próximas notas de lanzamiento del nodo. + +#### Dapps e Indexadores + +##### Cambios de la Fase 1 + +- La estructura de compromiso de estado cambia de zktrie a MPT. +- Cualquier dapp que dependa de pruebas zktrie debe migrar a pruebas MPT. +- Las versiones de lote utilizarán v5 y v6 (formato idéntico a los lotes v4 anteriores). + +##### Cambios de la Fase 2 + +- Los encabezados de lote y la carga útil del blob utilizarán una nueva codificación. Las versiones de lote utilizadas en la fase 2 serán v7. +- El calldata de compromiso de lote ya no contendrá encabezados de bloque. Los proyectos que necesiten esta información desde L1 deben obtener y decodificar el blob. +- Una sola transacción de compromiso puede transportar múltiples lotes. Los indexadores deben poder procesar múltiples lotes desde una misma transacción L1. +- En el modo de lote sin permisos, el remitente compromete y finaliza un solo lote atómicamente con `commitAndFinalizeBatch`. +- Las firmas de funciones cambiarán. Los proyectos deben agregar soporte para las nuevas funciones: + - Antes de Euclid fase 2: `commitBatchWithBlobProof`, `finalizeBundleWithProof`, `revertBatch` + - Después: `commitBatches`, `finalizeBundlePostEuclidV2`, `commitAndFinalizeBatch`, `revertBatch` +- La matriz `committedBatches` será escasa. +- Migramos a `L1MessageQueueV2`, con diferentes hashes de almacenamiento de mensajes. +- Los bloques L2 inseguros ya no incluirán firma o etiqueta de vanidad en `ExtraData`. + +#### Recursos + +- [Cambios de contrato en GitHub](https://github.com/scroll-tech/scroll-contracts/pull/79) +- [Repositorio de códec DA](https://github.com/scroll-tech/da-codec) +- [Abrir ticket en Discord](https://discord.com/channels/853955156100907018/1280768286124146732) diff --git a/src/content/docs/tr/technology/overview/scroll-upgrades.mdx b/src/content/docs/tr/technology/overview/scroll-upgrades.mdx index 9af00ea4e..a4e6b3b2a 100644 --- a/src/content/docs/tr/technology/overview/scroll-upgrades.mdx +++ b/src/content/docs/tr/technology/overview/scroll-upgrades.mdx @@ -17,74 +17,5 @@ Aşağıdaki sözleşmeler, yükseltmeleri başlatmak ve iki haftalık zaman kil | L2 Scroll Multisig | Scroll| [`0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe`](https://scrollscan.com/address/0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe)| | L2 Timelock | Scroll | [`0xf6069DB81239E5194bb53f83aF564d282357bc99`](https://scrollscan.com/address/0xf6069DB81239E5194bb53f83aF564d282357bc99)| -## Şubat 2024 Köprü Yükseltmesi -### Genel Bakış - -Köprüleme maliyetlerini azaltmak için köprü ve rollup sözleşme paketimizde çeşitli gas optimizasyonları uyguladık. Kullanılan optimizasyon teknikleri aşağıdakileri içerir: - -- Artık bazı tamamlayıcı sözleşme adreslerini depolamak için depolama değişkenleri yerine sabitleri kullanacağız. Bu değerlerin (neredeyse) asla değişmemesi gerektiğinden bu mümkündür. Bu değişiklikle birkaç depolama yükleme işleminden tasarruf edebiliriz. -- `L1MessageQueue`daki içsel gas tahminini, kesin bir hesaplama yerine basit bir üst sınır kullanacak şekilde güncelledik. Çoğu köprü işlemi için iki sonuç benzer olacaktır ancak yeni uygulama önemli ölçüde daha ucuzdur. -- Bir sözleşmeden diğerine çağrı maliyetlerinden tasarruf etmek için iki sözleşme `L1MessageQueue` ve `L2GasPriceOracle`yı birleştirdik. - -### Zaman çizelgesi - - -- **Scroll Sepolia:** -- Ağ Yükseltmesi: 19 Ocak 2024 -- **Scroll Ana Ağ:** -- Yükseltme Başlatma: 7 Şubat 2024 -- Zaman Kilidinin Tamamlanması ve Yükseltilmesi: 21 Şubat 2024 - - -### Teknik detaylar - -#### Kod Değişiklikleri -- [Köprü Maliyet Optimizasyonu](https://github.com/scroll-tech/scroll/pull/1011) -- [Denetim Düzeltmeleri](https://github.com/scroll-tech/scroll/pulls?q=OZ+is%3Apr+created%3A2024-01-27..2024-02-10) -- [Önceden dağıtılan sürüm](https://github.com/scroll-tech/scroll/tree/ff380141a8cbcc214dc65f17ffa44faf4be646b6) ('ff380141a8cbcc214dc65f17ffa44faf4be646b6' işlemini gerçekleştirin) -- [Sürüm dağıtıldı](https://github.com/scroll-tech/scroll/tree/6030927680a92d0285c2c13e6bb27ed27d1f32d1) ('6030927680a92d0285c2c13e6bb27ed27d1f32d1' işlemini gerçekleştirin) - -#### Denetimler - -- [OpenZeppelin](https://blog.openzeppelin.com/scroll-bridge-gas-optimizations-audit) - -#### Değişiklik Listesi - -**L1 sözleşmelerindeki değişiklikler:** - -- `ScrollChain`de, `messageQueue` ve `verifier`ı `immutable` yaptık. -- `L1ScrollMessenger`da, `counterpart`, `rollup`, ve `messageQueue`yu `immutable` yaptık. -- Tüm token ağ geçitlerinde, `counterpart`, `router`, ve `messenger`ı `immutable` yaptık. -- `L1MessageQueue` ve `L2GasPriceOracle`ı tek bir `L1MessageQueueWithGasPriceOracle` sözleşmesinde birleştirdik (önceki `L1MessageQueue` ile aynı adrese konuşlandırıldı). Bu sözleşmede ayrıca `messenger` ve `scrollChain`i `değişmez` olarak değiştiriyoruz ve `calculateIntrinsicGasFee`yi basitleştiriyoruz. - -**L2 sözleşmelerindeki değişiklikler:** - -- `L2ScrollMessenger`da `counterpart`ı `immutable` olacak şekilde değiştirdik. -- Tüm token ağ geçitlerinde, `counterpart`, `router`, ve `messenger`ı to `immutable` olacak şekilde değiştirdik. - -**Etkilenen sözleşmeler:** - -- **L1:** `L1MessageQueue`, `L2GasPriceOracle`, `ScrollChain`, `L1WETHGateway`, `L1StandardERC20Gateway`, `L1GatewayRouter`, `L1ScrollMessenger`, `L1CustomERC20Gateway`, `L1ERC721Gateway`, `L1ERC1155Gateway`. -- **L2:** `L2ScrollMessenger`, `L2WETHGateway`, `L2StandardERC20Gateway`, `L2GatewayRouter`, `L2CustomERC20Gateway`, `L2ERC721Gateway`, `L2ERC1155Gateway`. - -#### Uyumluluk - -##### Sıralayıcı ve takipçi düğümleri (l2geth) - -`l2geth` düğümü çalıştıran operatörlerin yükseltme yapmasına gerek yoktur. Bu yükseltmedeki değişiklikler `l2geth`i etkilemeyecektir. - -##### Dapp'ler ve indexer'lar - -Sözleşmeleri sorgulayan veya sözleşme arayüzlerine dayanan dapp'lerin ve indeksleyicilerin (ve benzer zincir dışı altyapının) çoğu durumda değiştirilmesine gerek yoktur. Sözleşme değişikliklerinin çoğunluğu dahili ve/veya geriye dönük olarak uyumludur. - -Uygulamanız, Scroll'un L1'deki L2 gas fiyatını nasıl takip ettiğini izlemek için [`L2GasPriceOracle`](https://etherscan.io/address/0x987e300fDfb06093859358522a79098848C33852)'ye bağlıysa yükseltme blok numarasından izlemeye başlamanız gerekir [`L1MessageQueueWithGasPriceOracle`](https://etherscan.io/address/0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B). - -Orijinal gas fiyatı oracle sözleşmesi kullanımdan kaldırılacak: artık Scroll köprüsü tarafından güncellenmeyecek veya kullanılmayacaktır. - -- Ethereum: - - `L2GasPriceOracle`: [`0x987e300fDfb06093859358522a79098848C33852`](https://etherscan.io/address/0x987e300fDfb06093859358522a79098848C33852) - - `L1MessageQueueWithGasPriceOracle`: [`0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B`](https://etherscan.io/address/0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B) -- Sepolia: - - `L2GasPriceOracle`: [`0x247969F4fad93a33d4826046bc3eAE0D36BdE548`](https://sepolia.etherscan.io/address/0x247969F4fad93a33d4826046bc3eAE0D36BdE548) - - `L1MessageQueueWithGasPriceOracle`: [`0xF0B2293F5D834eAe920c6974D50957A1732de763`](https://sepolia.etherscan.io/address/0xF0B2293F5D834eAe920c6974D50957A1732de763) \ No newline at end of file +Gelecekteki yükseltme duyuruları ve zincir üstü operasyon etkinlikleri için [teknik güncellemeler Telegram kanalımıza](https://t.me/scroll_tech_updates) katılabilirsiniz. \ No newline at end of file diff --git a/src/content/docs/tr/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx b/src/content/docs/tr/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx new file mode 100644 index 000000000..6fb31ff68 --- /dev/null +++ b/src/content/docs/tr/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx @@ -0,0 +1,104 @@ +--- +section: technology +date: Last Modified +title: "Bernoulli Upgrade" +lang: "tr" +permalink: "technology/overview/scroll-upgrades/bernoulli-upgrade" +--- + +### Genel Bakış + +Bu yükseltme, EIP-4844 veri blob'ları desteği ve SHA2-256 ön derlemesi ile işlem maliyetlerini önemli ölçüde azaltır. + +### Zaman Çizelgesi + +- **Scroll Sepolia** + - Ağ Yükseltmesi: 15 Nisan 2024 +- **Scroll Mainnet** + - Başlangıç: 15 Nisan 2024 + - Timelock tamamlanması ve yükseltme: 29 Nisan 2024 + +### Teknik Detaylar + +#### Sözleşme Değişiklikleri + +- PR: [Burada](https://github.com/scroll-tech/scroll/pull/1179) +- Düzeltmeler: [Burada](https://github.com/scroll-tech/scroll/pulls?q=is%3Apr+created%3A2024-04-10..2024-04-11+fix+in%3Atitle+label%3Abug) + +Ana değişiklikler: + +- `ScrollChain` artık `calldata` veya blob ile batch kabul eder. +- `finalizeBatchWithProof4844` fonksiyonu eklendi. +- `MultipleVersionRollupVerifier` farklı versiyonları destekler. + +#### Node Güncellemeleri + +Node sürümü: `v5.3.0` +[Günlükler](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.3.0) + +#### zkEVM Circuit Güncellemeleri + +Sürüm: `v0.10.3` +[Günlükler](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.10.3) + +#### Denetimler + +- [OpenZeppelin](https://blog.openzeppelin.com/scroll-eip-4844-support-audit) +- [Trail of Bits](https://github.com/trailofbits/publications/blob/master/reviews/2024-04-scroll-4844-blob-securityreview.pdf) + +### Uyumluluk + +#### l2geth Nodeları + +Bu yükseltme hard fork'tur. Yükseltme öncesi güncelleme gerekir. +[Node releases](https://github.com/scroll-tech/go-ethereum/releases) + +#### Indexleyiciler ve Köprüler + +Veri formatı değişti. [Yeni format](/en/technology/chain/rollup/#codec) incelenmeli. + +- `BlockContext` değişmez. +- `Chunks` artık L2 tx verisi içermez, blob'tadır. +- `BatchHeader` içinde `BlobVersionedHash` var. + +#### Proverlar + +Yükseltme gerektirir. [zkevm-circuits](https://github.com/scroll-tech/zkevm-circuits) değişti. + +--- + +## Köprü Yükseltmesi + +### Genel Bakış + +Köprü sözleşmelerinde gaz optimizasyonları: + +- `immutable` kullanımı artırıldı. +- `L1MessageQueue` daha basit gaz tahmini kullanıyor. +- `L1MessageQueue` ve `L2GasPriceOracle` birleşti. + +### Zaman Çizelgesi + +- **Scroll Sepolia:** 19 Ocak 2024 +- **Scroll Mainnet:** 7-21 Şubat 2024 + +### Teknik Detaylar + +- [PR](https://github.com/scroll-tech/scroll/pull/1011) +- [Audit düzeltmeleri](https://github.com/scroll-tech/scroll/pulls?q=OZ+is%3Apr+created%3A2024-01-27..2024-02-10) + +#### Denetim + +- [OpenZeppelin](https://blog.openzeppelin.com/scroll-bridge-gas-optimizations-audit) + +### Uyumluluk + +##### l2geth Nodeları + +Yükseltme gerekmez. + +##### Dapps ve Indexçiler + +Çoğu değişiklik dahili. +`L2GasPriceOracle` devre dışı kalacak. +Yeni adres: [`L1MessageQueueWithGasPriceOracle`](https://etherscan.io/address/0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B) \ No newline at end of file diff --git a/src/content/docs/tr/technology/overview/scroll-upgrades/curie-upgrade.mdx b/src/content/docs/tr/technology/overview/scroll-upgrades/curie-upgrade.mdx new file mode 100644 index 000000000..5780b42e3 --- /dev/null +++ b/src/content/docs/tr/technology/overview/scroll-upgrades/curie-upgrade.mdx @@ -0,0 +1,70 @@ +--- +section: technology +date: Last Modified +title: "Curie Upgrade" +lang: "tr" +permalink: "technology/overview/scroll-upgrades/curie-upgrade" +--- + +### Genel Bakış + +Bu önemli yükseltme, Scroll zincirindeki gaz ücretlerini 1.5 kat azaltacak. Öne çıkanlar: + +- [zstd](https://github.com/scroll-tech/da-codec/tree/main/libzstd) algoritmasını kullanarak bloblarda depolanan verileri sıkıştırır. Bu sıkıştırma, her blob'un daha fazla işlem depolamasına olanak tanır ve işlem başına veri kullanılabilirliği maliyetini azaltır. +- EIP-1559 işlem arayüzüyle uyumlu, değiştirilmiş bir EIP-1559 fiyatlandırma modelini benimser. Bu da daha doğru işlem fiyatlandırması ve daha öngörülebilir/kararlı ücret yapısı sağlar. +- Yeni EVM opcod'ları olan `TLOAD`, `TSTORE` ve `MCOPY` için destek eklenir. Kullanıcılar sözleşmelerini derlemek için güvenle `0.8.26` sürümündeki Solidity derleyicisini kullanabilir. +- Dinamik blok süresi tanıtıldı. Trafik yoğunluğu durumlarında, bir blok 3 saniyelik aralığı beklemek yerine işlem sayısı devre sınırına ulaştığında oluşturulacaktır. + +### Zaman Çizelgesi + +- **Scroll Sepolia** + - Ağ Yükseltmesi: 17 Haziran 2024 +- **Scroll Ana Ağ** + - Yükseltme Başlangıcı: 20 Haziran 2024 + - Timelock Tamamlanması ve Yükseltme: 3 Temmuz 2024 + +### Teknik Detaylar + +#### Sözleşme Değişiklikleri + +Kod değişiklikleri aşağıdaki PR'larda belgelenmiştir: + +- [Sıkıştırılmış batch kabulü](https://github.com/scroll-tech/scroll/pull/1317) +- [`L1GasPriceOracle` güncellemesi](https://github.com/scroll-tech/scroll/pull/1343) +- [`MAX_COMMIT_SCALAR` ve `MAX_BLOB_SCALAR` değerlerini 1e18 yap](https://github.com/scroll-tech/scroll/pull/1354) +- [Doğrulayıcı güncellenirken batch index kontrolünü kaldır](https://github.com/scroll-tech/scroll/pull/1372) + +Ana değişiklikler: + +- Rollup sözleşmesi (`ScrollChain`) artık hem 1 hem de 2 versiyonlu batch’leri kabul edecek. [Versiyon 1](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv1) sıkıştırılmamış (Curie öncesi), [versiyon 2](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv2) ise sıkıştırılmış (Curie sonrası) blob'lar içindir. +- `L1GasPriceOracle` veri ücreti formülünü blob DA'yı hesaba katacak şekilde güncellenecek: + - Eski formül: `(l1GasUsed(txRlp) + overhead) * l1BaseFee * scalar` + - Yeni formül: `l1BaseFee * commitScalar + len(txRlp) * l1BlobBaseFee * blobScalar` + +#### Node Değişiklikleri + +Yeni node versiyonu: `v5.5.0`. Değişiklikler için [yayın notlarına](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.5.0) bakınız. + +#### zkEVM devre değişiklikleri + +Yeni sürüm: `v0.11.4`. [Yayın günlüğü burada](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.11.4). + +#### Denetimler + +- TrailofBits: yakında! +- [Zellic](https://github.com/Zellic/publications/blob/master/Scroll%20zkEVM%20-%20Zellic%20Audit%20Report.pdf) + +### Uyumluluk + +#### Sıralayıcı ve Follower Node’lar (l2geth) + +Bu yükseltme bir hard fork’tur. Operatörler, fork bloğundan önce yükseltme yapmalıdır. [Node yayın notuna](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.4.2) bakın. + +#### dApp’ler ve İndeksleyiciler + +dApp’ler için bu yükseltme geriye dönük uyumludur. Geliştiriciler EIP-1559 modeline göre gaz ayarlarını güncellemelidir. Artık uygulama mantığında sabit 3 saniyelik blok süresine güvenilemez. + +İndeksleyiciler için, [veri formatı](https://docs.scroll.io/en/technology/chain/rollup/#codec) aynı kalır ama içerik değişecektir: + +- `BatchHeader` içindeki `version` alanı Curie sonrası 2 olacaktır. +- Blob içinde saklanan veriler sıkıştırılacak ve [zstd v1.5.6](https://github.com/facebook/zstd/releases/tag/v1.5.6) ile açılabilecektir. diff --git a/src/content/docs/tr/technology/overview/scroll-upgrades/darwin-upgrade.mdx b/src/content/docs/tr/technology/overview/scroll-upgrades/darwin-upgrade.mdx new file mode 100644 index 000000000..c81ed3299 --- /dev/null +++ b/src/content/docs/tr/technology/overview/scroll-upgrades/darwin-upgrade.mdx @@ -0,0 +1,89 @@ +--- +section: technology +date: Last Modified +title: "Darwin Upgrade" +lang: "tr" +permalink: "technology/overview/scroll-upgrades/darwin-upgrade" +--- + +### Genel Bakış + +Bu yükseltme, birden fazla batch için tek bir toplu zk-proof kullanarak gaz ücretlerini %34 oranında azaltacaktır; her batch’i ayrı ayrı finalize etmeye gerek kalmayacaktır. + +- Darwin, yeni bir [Batch Codec V3](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv3) kullanır. +- Daha önceki `chunk` ve `batch` kavramlarına ek olarak, yeni bir `bundle` kavramı tanıtıldı: + - `Chunk`: L2 blokları listesi içeren zkEVM kanıt birimi. + - `Batch`: Chunk'ların EIP-4844 blob'larında kodlandığı veri kullanılabilirliği birimi. + - `Bundle`: Birden fazla batch içeren ve finalize edilen birim. + + Curie ile fark: Scroll artık tek bir toplu zk-proof ile birden fazla batch’i finalize ediyor. + +- Zincirdeki yeni bundle verifier, yeni bir public input formatı kullanıyor. + +### Zaman Çizelgesi + +- **Scroll Sepolia** + - Ağ yükseltmesi: 14 Ağustos 2024 +- **Scroll Ana Ağı** + - Yükseltme başlangıcı: 5 Ağustos 2024 + - Timelock süresi bitişi ve yükseltme: 21 Ağustos 2024 + +### Teknik Ayrıntılar + +#### Akıllı Sözleşme Değişiklikleri + +*Not: Curie sonrası, Scroll akıllı sözleşmeleri [scroll-contracts](https://github.com/scroll-tech/scroll-contracts) deposuna taşındı.* + +Bu yükseltmeye ait kod değişiklikleri [bu PR'de](https://github.com/scroll-tech/scroll-contracts/pull/4) bulunabilir. Ana değişiklikler: + +- `BatchHeaderV3Codec` tanıtıldı. +- `L1MessageQueue` içinde mesaj işleme finalize adımından commit adımına taşındı. +- Yeni bundle public input formatı için `IZkEvmVerifierV2` ve `MultipleVersionRollupVerifier` eklendi. +- `ScrollChain` içinde `commitBatchWithBlobProof` ve `finalizeBundleWithProof` adlı yeni fonksiyonlar tanıtıldı. + +Tüm detaylar için [sürüm notları](https://github.com/scroll-tech/scroll-contracts/releases/tag/v1.0.0)'na göz atabilirsiniz. + +#### Node Değişiklikleri + +Yeni node sürümü: `v5.6.0`. Ayrıntılar için [sürüm notlarına](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.6.0) bakınız. + +- Timestamp tabanlı hard fork desteği eklendi. +- V3 batch codec işleme desteği getirildi. + +#### zkEVM Devre Değişiklikleri + +Yeni devre sürümü: `v0.12.0` ([link](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.12.0)). + +- `RecursionCircuit` tanıtıldı; birden fazla ardışık batch’in SNARK’larını recursive olarak toplar. +- Yeni katmanlar eklendi: 6. katman (`RecursionCircuit`), 7. katman (`CompressionCircuit`). + +Public input’lar artık bir önceki batch bilgisiyle bağlamsal, bu da recursive kanıt sistemine olanak sağlar (daha fazla bilgi için [Notion dokümantasyonu](https://scrollzkp.notion.site/Upgrade-4-Darwin-Documentation-05a3ecb59e9d4f288254701f8c888173)). + +#### Denetimler + +- TrailofBits: yakında açıklanacak! + +### Uyumluluk + +#### Sequencer ve Follower Nodelar + +Geçiş durumu değişmediği için geriye dönük uyumludur. Ancak [v5.6.0](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.6.0) sürümüne yükseltme önerilir. + +#### Dapp ve İndeksleyiciler + +Batch işlemede önemli değişiklikler var: + +- Yeni [V3 codec](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv3) kullanılıyor. Yeni alanlar: + - `lastBlockTimestamp` + - `blobDataProof` +- `commitBatchWithBlobProof` fonksiyonu ile batch'ler gönderilecek. +- `finalizeBundleWithProof` ile birden fazla batch finalize edilecek. +- `FinalizeBatch` eventi artık çoklu batch finalize anlamına gelecek. + +İndeksleyiciler için öneriler: + +- V3 codec'e geçiş. +- Yeni commit/finalize fonksiyonlarını destekleme. +- Yeni `FinalizeBatch` semantiğine göre stateRoot takip etme. + +Detaylı teknik bilgi için [Darwin dokümantasyonu](https://scrollzkp.notion.site/Upgrade-4-Darwin-Documentation-05a3ecb59e9d4f288254701f8c888173). diff --git a/src/content/docs/tr/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx b/src/content/docs/tr/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx new file mode 100644 index 000000000..3f1f797f6 --- /dev/null +++ b/src/content/docs/tr/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx @@ -0,0 +1,37 @@ +--- +section: technology +date: Last Modified +title: "Darwin v2 Upgrade" +lang: "tr" +permalink: "technology/overview/scroll-upgrades/darwin-v2-upgrade" +--- + +### Genel Bakış + +Dahili testler sırasında, belirli koşullar altında blokların her zaman sıkıştırılamayabileceğini tespit ettik; bu da doğrulanamayan parçalar ve gruplar (batch) ile sonuçlanabilir. +Bu sorunu çözmek için, bu özel durum algılandığında sıkıştırılmamış blob'ların etkinleştirileceği küçük bir yükseltme gerçekleştirildi. + +### Zaman Çizelgesi + +Bu bir güvenlik düzeltmesi olduğundan, 7 günlük zaman kilidi mekanizması atlandı. + +- **Scroll Sepolia**: 28 Ağustos 2024 +- **Scroll Mainnet**: 2 Eylül 2024 + +### Uyumluluk + +#### Sequencer ve Follower Düğümleri (l2geth) + +Yeni düğüm versiyonu `v5.7.0`'dır. Daha fazla bilgi için [sürüm notlarına](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.7.0) bakabilirsiniz. + +Bu yükseltme, Scroll’un durum geçiş fonksiyonunu değiştirmez; bu nedenle geriye dönük uyumludur. Ancak Ethereum'a gönderilen batch veri formatı değişmiştir. +Bu nedenle `--rollup.verify` parametresiyle rollup doğrulaması yapan düğümlerin zinciri takip edebilmesi için yükseltilmesi gerekir. + +#### Dapp’ler ve İndeksleyiciler + +Sequencer’ın işlem hacmini artırmak amacıyla Scroll Mainnet üzerinde bir değişiklik uygulandı; maksimum reorg derinliği 17 blok olacak şekilde ayarlandı. +Daha önce, sistem, işlem devre limitini aşmasın diye signer thread içinde kapsamlı kontroller yapıyordu. Bu güvenli olsa da CPU kaynaklarını artırıyordu. +Artık yeni bir devre kapasite kontrol sistemi devrede: Sequencer thread yaklaşık kontrol yaparken, 16 işçi thread geçmiş blokları hassas şekilde kontrol ediyor. +Sonuç olarak, nadiren de olsa maksimum 17 blokluk bir reorganizasyon yaşanabilir. + +İndeksleyiciler için, `BatchHeader` versiyonu 4'e yükseltildi. Bu yükseltme geriye dönük uyumludur (yalnızca blob verisini manuel çözen geliştiriciler için küçük bir değişiklik vardır). diff --git a/src/content/docs/tr/technology/overview/scroll-upgrades/euclid-upgrade.mdx b/src/content/docs/tr/technology/overview/scroll-upgrades/euclid-upgrade.mdx new file mode 100644 index 000000000..c0546d44a --- /dev/null +++ b/src/content/docs/tr/technology/overview/scroll-upgrades/euclid-upgrade.mdx @@ -0,0 +1,105 @@ +--- +section: technology +date: Last Modified +title: "Euclid Upgrade" +lang: "tr" +permalink: "technology/overview/scroll-upgrades/euclid-upgrade" +--- + +### Genel Bakış + +Bu yükseltme beş ana değişikliği içeriyor: + +- OpenVM Prover’a geçiş. +- MPT durum taahhüdüne geçiş. +- Optimize edilmiş rollup süreci. +- EIP-7702 ve RIP-7212 desteği. +- Aşama-1 uygunluğu. + +Bu değişiklikler sayesinde Scroll üzerindeki kullanıcılar ve geliştiriciler daha düşük ücretler, daha yüksek işlem hacmi, daha iyi güvenlik, daha fazla uyumluluk ve gelişmiş özelliklerden faydalanabilecek. + +### Zaman Çizelgesi + +- **Scroll Sepolia** + - Aşama 1: 11 Mart 2025 + - Aşama 2: 13 Mart 2025 +- **Scroll Mainnet** + - Aşama 1: 16 Nisan 2025 + - Aşama 2: 22 Nisan 2025 + +### Özellikler + +#### OpenVM Prover + +Scroll, halo2 zkEVM teknolojisi ile ZK teknolojisinin öncülerinden biri olmuştur. ZK teknolojisi hızla gelişmeye devam etti ve artık genel amaçlı RISC-V tabanlı zkVM’ler pratik hale gelmiştir. Euclid yükseltmesinde, halo2 devreleri bırakılarak [OpenVM](https://scroll.io/blog/the-first-release-of-the-openvm-framework-is-live) üzerine inşa edilen yeni bir prover’a geçilmektedir. + +Yeni OpenVM prover’ı birçok avantaj sunar. Prover kodu daha anlaşılır ve denetlenebilir. Farklı bileşenler arasında kod paylaşımı daha kolaydır. Ayrıca, ispatlama maliyetleri ve gecikme süresi azaltılır. Son olarak, yeni prover rastgele karmaşıklıkta işlemleri ispatlayabilir ve bu sayede sequencer throughput’unu sınırlayan kapasite denetleyici modül kaldırılabilir. + +#### MPT Durum Taahhüdü + +Scroll şu anda zk-dostu bir veri yapısı olan [zktrie](https://docs.scroll.io/en/technology/sequencer/zktrie/) kullanmaktadır. Yeni OpenVM prover ile birlikte Ethereum’un durum yapısı olan [Merkle-Patricia Trie (MPT)](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie) artık pratik hale gelmiştir. Bu nedenle Scroll, zktrie’yi bırakıp MPT’ye geçiş yapmaktadır. + +MPT, sequencer performansını artırır ve L2 durum kanıtlarına bağlı dapp’ler için daha iyi uyumluluk sağlar. + +#### Optimize Edilmiş Rollup Süreci + +Euclid ile rollup sürecine bir dizi optimizasyon getiriyoruz. Bu optimizasyonlar, Veri Erişilebilirliği (DA) yükünü önemli ölçüde azaltarak kullanıcılar için daha düşük ücretlerle sonuçlanır. + +Ana optimizasyonlar: + +- Blob doğrulamasını kontrat kodundan zk devrelere taşımak. +- Mesaj kuyruğu taahhüt maliyetini amorti etmek. +- L2 blok başlığı verilerini calldata yerine bloblara taşımak. +- Birden fazla blob’u tek bir işlemde taahhüt etmek. + +Bu değişikliklerin birleşimiyle birlikte batch taahhüt maliyetlerinde %90’a varan bir azalma beklenmektedir. + +Ek olarak, Scroll L2 düğümleri mevcut Proof-of-Authority (Clique) yapısını bırakacak ve yetkili L2 blok imzalayıcısını artık L1’deki yeni sistem yapılandırma sözleşmesinden okuyacaktır. + +#### Güçlü Akıllı Hesaplar + +Euclid’de Scroll, [EIP-7702](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7702.md) ve [RIP-7212](https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md) protokollerini benimsemektedir. Ethereum’un [Pectra yükseltmesi](https://blog.ethereum.org/2025/02/14/pectra-testnet-announcement) ile paralel olarak 7702'nin benimsenmesi, Scroll’un Ethereum ile yüksek uyumluluğunu sürdürmesini sağlar. Bu özellikler, Scroll kullanıcılarının ve geliştiricilerinin akıllı hesap teknolojilerinden faydalanmasına olanak tanır: Mevcut hesaplara akıllı sözleşme işlevselliği eklemek, yetkilendirmeleri imzalamak için passkey kullanmak ve kullanıcı deneyimini geliştiren yeni standartları kullanmak mümkündür. + +#### Aşama-1 + +Euclid ile Scroll, [L2BEAT tarafından tanımlanan standarda](https://medium.com/l2beat/introducing-stages-a-framework-to-evaluate-rollups-maturity-d290bb22befe) göre Aşama-1'e ulaşmayı sağlayacak önemli güvenlik garantileri sunmaktadır. + +Zorunlu işlem dahil etme, sansür direncine yönelik bir mekanizmadır. Kullanıcılar, Ethereum üzerinden doğrudan bir işlem gönderebilir ve sequencer’ı bunu dahil etmeye zorlayabilir. + +#### Düğüm Operatörleri + +##### 1. Aşama Değişiklikleri + +- Düğüm operatörleri l2geth'in MPT sürümüne geçmelidir. Bu, tam yeniden senkronizasyon gerektirir. Yakında bir sürüm ve anlık görüntüler paylaşılacak. [Geçiş Rehberini](https://www.notion.so/Node-Runner-State-Migration-Guideline-17b7792d22af80e4ab4bdc294f4f7541?pvs=21) inceleyin. +- zktrie düğümleri çalışmaya devam edecek ancak blok başlıklarındaki state root’ları doğrulamayacaktır. Euclid'den önce MPT düğümlerine geçmeniz önerilir. + +##### 2. Aşama Değişiklikleri + +- İzin gerektirmeyen partiler etkinleşirse, manuel kurtarma gerekecektir. Detaylı belge yakında yayınlanacaktır. + +#### Dapps ve İndeksleyiciler + +##### 1. Aşama + +- State commitment yapısı zktrie'den MPT'ye geçer. +- zktrie kanıtları kullanan dapp’ler MPT'ye geçmelidir. +- v5 ve v6 parti sürümleri kullanılacaktır. + +##### 2. Aşama + +- Parti başlıkları & blob içeriği yeni formatta olacak (v7). +- Blok başlıkları artık calldata'da olmayacak. L1'den alınmalı ve decode edilmelidir. +- Tek işlemde birden çok parti desteklenir. 1 parti = 1 blob. +- `commitAndFinalizeBatch` ile tek adımda batch gönderimi mümkün. +- Yeni fonksiyon imzaları: + - Öncesi: `commitBatchWithBlobProof`, `finalizeBundleWithProof`, `revertBatch` + - Sonrası: `commitBatches`, `finalizeBundlePostEuclidV2`, `commitAndFinalizeBatch`, `revertBatch` +- `committedBatches` array’i seyrek hale gelir. +- Yeni mesaj kuyruğu `L1MessageQueueV2` kullanılacak. +- Güvensiz L2 bloklarında `ExtraData` artık imza içermez. + +#### Kaynaklar + +- [Kontrat değişiklikleri](https://github.com/scroll-tech/scroll-contracts/pull/79) +- [DA codec deposu](https://github.com/scroll-tech/da-codec) +- [Discord üzerinden ticket açın](https://discord.com/channels/853955156100907018/1280768286124146732) diff --git a/src/content/docs/zh/technology/overview/scroll-upgrades.mdx b/src/content/docs/zh/technology/overview/scroll-upgrades.mdx new file mode 100644 index 000000000..b10a46446 --- /dev/null +++ b/src/content/docs/zh/technology/overview/scroll-upgrades.mdx @@ -0,0 +1,20 @@ +--- +section: technology +date: Last Modified +title: "Scroll Upgrades" +lang: "zh" +permalink: "technology/overview/scroll-upgrades" +--- + +随着团队在 Scroll 路线图上不断取得进展,我们将对 Scroll 网络进行升级,以引入新功能和改进。 + +以下合约用于在两周的延迟期后发起和执行升级操作: + +| Contract | Network | Address | +| ------------------------ | ------- | - | +| L1 Scroll Multisig | Ethereum| [`0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe`](https://etherscan.io/address/0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe)| +| L1 Timelock | Ethereum| [`0x1A658B88fD0a3c82fa1a0609fCDbD32e7dd4aB9C`](https://etherscan.io/address/0x1A658B88fD0a3c82fa1a0609fCDbD32e7dd4aB9C)| +| L2 Scroll Multisig | Scroll| [`0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe`](https://scrollscan.com/address/0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe)| +| L2 Timelock | Scroll | [`0xf6069DB81239E5194bb53f83aF564d282357bc99`](https://scrollscan.com/address/0xf6069DB81239E5194bb53f83aF564d282357bc99)| + +你可以加入我们的 [Telegram 技术更新频道](https://t.me/scroll_tech_updates),了解未来的升级公告和链上操作事件。 \ No newline at end of file diff --git a/src/content/docs/zh/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx b/src/content/docs/zh/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx new file mode 100644 index 000000000..8d53eb555 --- /dev/null +++ b/src/content/docs/zh/technology/overview/scroll-upgrades/bernoulli-upgrade.mdx @@ -0,0 +1,102 @@ +--- +section: technology +date: Last Modified +title: "Bernoulli Upgrade" +lang: "en" +permalink: "technology/overview/scroll-upgrades/bernoulli-upgrade" +--- + +### 概览 + +本次升级通过引入对 EIP-4844 数据 blob 和 SHA2-256 预编译的支持,大幅降低了交易成本。 + +### 时间表 + +- **Scroll Sepolia** + - 网络升级:2024年4月15日 +- **Scroll 主网** + - 升级开始:2024年4月15日 + - Timelock 完成并升级:2024年4月29日 + +### 技术细节 + +#### 合约变更 + +详见 [PR](https://github.com/scroll-tech/scroll/pull/1179) 和 [审计修复](https://github.com/scroll-tech/scroll/pulls?q=is%3Apr+created%3A2024-04-10..2024-04-11+fix+in%3Atitle+label%3Abug) + +主要变更: + +- `ScrollChain` 支持以 calldata 或 blob 编码批次。 +- 新增 `finalizeBatchWithProof4844` 方法。 +- `MultipleVersionRollupVerifier` 支持不同编码版本。 + +#### 节点更新 + +新版本为 `v5.3.0` +[发布日志](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.3.0) + +#### zkEVM 电路更新 + +版本为 `v0.10.3` +[发布日志](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.10.3) + +#### 审计 + +- [OpenZeppelin](https://blog.openzeppelin.com/scroll-eip-4844-support-audit) +- [Trail of Bits](https://github.com/trailofbits/publications/blob/master/reviews/2024-04-scroll-4844-blob-securityreview.pdf) + +### 兼容性 + +#### l2geth 节点 + +这是一次硬分叉,必须在分叉前升级。 +详见 [节点版本](https://github.com/scroll-tech/go-ethereum/releases) + +#### 索引器与桥接服务 + +Scroll 发布到以太坊的数据格式发生了变化。查看 [新格式](/en/technology/chain/rollup/#codec) + +- `BlockContext` 不变 +- `Chunks` 不再包含 L2 交易数据,转为存储在 blob +- `BatchHeader` 增加字段 `BlobVersionedHash` + +#### Prover + +由于 `zkevm-circuits` 变更,Prover 节点需升级。 + +--- + +## 桥接升级 + +### 概览 + +为降低桥接费用,优化了桥接和 Rollup 合约: + +- 使用常量代替变量节省存储读取 +- 简化 `L1MessageQueue` 的 gas 计算 +- 合并 `L1MessageQueue` 与 `L2GasPriceOracle` + +### 时间表 + +- **Scroll Sepolia:** 2024年1月19日 +- **Scroll 主网:** 2024年2月7日开始,2月21日完成 + +### 技术细节 + +- [优化 PR](https://github.com/scroll-tech/scroll/pull/1011) +- [审计修复](https://github.com/scroll-tech/scroll/pulls?q=OZ+is%3Apr+created%3A2024-01-27..2024-02-10) + +#### 审计 + +- [OpenZeppelin](https://blog.openzeppelin.com/scroll-bridge-gas-optimizations-audit) + +### 兼容性 + +##### l2geth 节点 + +无需升级。 + +##### Dapp 和索引器 + +大部分更改为内部兼容变更。 +`L2GasPriceOracle` 将停用。请改为监控 [`L1MessageQueueWithGasPriceOracle`](https://etherscan.io/address/0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B) \ No newline at end of file diff --git a/src/content/docs/zh/technology/overview/scroll-upgrades/curie-upgrade.mdx b/src/content/docs/zh/technology/overview/scroll-upgrades/curie-upgrade.mdx new file mode 100644 index 000000000..59c2c1012 --- /dev/null +++ b/src/content/docs/zh/technology/overview/scroll-upgrades/curie-upgrade.mdx @@ -0,0 +1,70 @@ +--- +section: technology +date: Last Modified +title: "Curie Upgrade" +lang: "zh" +permalink: "technology/overview/scroll-upgrades/curie-upgrade" +--- + +### 概览 + +此次重大升级将使 Scroll 链上的 gas 费用减少 1.5 倍。亮点包括: + +- 使用 [zstd](https://github.com/scroll-tech/da-codec/tree/main/libzstd) 算法压缩 blob 中存储的数据。压缩后数据体积更小,每个 blob 可容纳更多交易,从而降低每笔交易的数据可用性成本。 +- 采用兼容 EIP-1559 交易接口的修改版 EIP-1559 定价模型,带来更精准的交易费用估算和更可预测、稳定的费用结构。 +- 支持新的 EVM 操作码 `TLOAD`、`TSTORE` 和 `MCOPY`。用户可以安全使用最新的 Solidity 编译器版本 `0.8.26` 来构建合约。 +- 引入动态区块时间。在网络拥堵时,当交易数量达到电路限制后,区块将被打包,而不是等待 3 秒的固定时间。 + +### 时间表 + +- **Scroll Sepolia** + - 网络升级:2024 年 6 月 17 日 +- **Scroll 主网** + - 升级启动:2024 年 6 月 20 日 + - Timelock 解锁并完成升级:2024 年 7 月 3 日 + +### 技术细节 + +#### 合约变更 + +此次升级的代码变更记录如下 PR: + +- [接受压缩 batch](https://github.com/scroll-tech/scroll/pull/1317) +- [更新 `L1GasPriceOracle`](https://github.com/scroll-tech/scroll/pull/1343) +- [将 `MAX_COMMIT_SCALAR` 和 `MAX_BLOB_SCALAR` 更改为 1e18](https://github.com/scroll-tech/scroll/pull/1354) +- [更新验证者时移除 batch 索引检查](https://github.com/scroll-tech/scroll/pull/1372) + +主要变更: + +- Rollup 合约 (`ScrollChain`) 现在支持版本 1 和 2 的 batch。[版本 1](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv1) 为未压缩 blob(Curie 前),[版本 2](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv2) 为压缩 blob(Curie 后)。 +- `L1GasPriceOracle` 合约将更新数据费用公式以考虑 blob DA: + - 原公式:`(l1GasUsed(txRlp) + overhead) * l1BaseFee * scalar` + - 新公式:`l1BaseFee * commitScalar + len(txRlp) * l1BlobBaseFee * blobScalar` + +#### 节点变更 + +新节点版本为 `v5.5.0`,请查看[发布说明](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.5.0)。 + +#### zkEVM 电路变更 + +新版本为 `v0.11.4`,[查看发布日志](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.11.4)。 + +#### 审计 + +- TrailofBits:即将上线! +- [Zellic](https://github.com/Zellic/publications/blob/master/Scroll%20zkEVM%20-%20Zellic%20Audit%20Report.pdf) + +### 兼容性 + +#### Sequencer 和 Follower 节点(l2geth) + +此次升级为硬分叉,需在分叉区块之前完成升级。[节点发布说明](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.4.2)。 + +#### dApps 和索引器 + +dApps 可向后兼容,建议开发者根据 EIP-1559 模型调整 gas 设置。注意:不能再依赖固定 3 秒出块时间。 + +索引器方面,[数据格式](https://docs.scroll.io/en/technology/chain/rollup/#codec) 保持一致,但数据内容将发生变化: + +- 自 Curie 起,`BatchHeader` 中的 `version` 字段将改为 2。 +- blob 中的数据将使用 [zstd v1.5.6](https://github.com/facebook/zstd/releases/tag/v1.5.6) 压缩。 diff --git a/src/content/docs/zh/technology/overview/scroll-upgrades/darwin-upgrade.mdx b/src/content/docs/zh/technology/overview/scroll-upgrades/darwin-upgrade.mdx new file mode 100644 index 000000000..51b0dc330 --- /dev/null +++ b/src/content/docs/zh/technology/overview/scroll-upgrades/darwin-upgrade.mdx @@ -0,0 +1,90 @@ +--- +section: technology +date: Last Modified +title: "Darwin Upgrade" +lang: "zh" +permalink: "technology/overview/scroll-upgrades/darwin-upgrade" +--- + +### 概览 + +此次升级将通过对多个批次使用一个聚合的 zk 证明来将 gas 费用降低 34%,无需再为每个批次分别完成终结。 + +- Darwin 使用新的 [批次编解码器 V3](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv3)。 +- 除了之前的 `chunk` 和 `batch` 概念外,还新增了 `bundle` 概念: + - `Chunk`:包含多个 L2 区块的 zkEVM 单元。 + - `Batch`:多个 chunk 的集合,是数据可用性单位。 + - `Bundle`:多个 batch 的集合,是终结单位。 + + 与 Curie 的主要区别在于:Scroll 现在通过一个 bundle zk-proof 终结多个 batch。 + +- 链上的 bundle 验证器使用新的 public input 结构。 + +### 时间表 + +- **Scroll Sepolia 测试网** + - 升级时间:2024 年 8 月 14 日 +- **Scroll 主网** + - timelock 开始:2024 年 8 月 5 日 + - 升级生效:2024 年 8 月 21 日 + +### 技术细节 + +#### 智能合约变更 + +*备注:自 Curie 升级后,Scroll 的合约已迁移到新仓库 [scroll-contracts](https://github.com/scroll-tech/scroll-contracts)。* + +本次升级的代码改动可参考 [此 PR](https://github.com/scroll-tech/scroll-contracts/pull/4),主要变化: + +- 新增 `BatchHeaderV3Codec` +- `L1MessageQueue` 中的消息处理逻辑由 finalize 步骤提前到 commit。 +- 新的 bundle public input 格式由 `IZkEvmVerifierV2` 实现,并集成到 `MultipleVersionRollupVerifier`。 +- 在 `ScrollChain` 中,引入了 `commitBatchWithBlobProof` 和 `finalizeBundleWithProof` 函数用于 batch 提交与 bundle 终结。 + +查看 [合约版本发布页](https://github.com/scroll-tech/scroll-contracts/releases/tag/v1.0.0) 了解更多细节。 + +#### 节点变化 + +- 节点版本:`v5.6.0` +- 支持基于时间戳的分叉升级。 +- 支持 batch codec v3 的处理。 + +详细变更请见 [发布说明](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.6.0)。 + +#### zkEVM 电路变化 + +新版本:`v0.12.0`([发布链接](https://github.com/scroll-tech/zkevm-circuits/releases/tag/v0.12.0)) + +- 新增 `RecursionCircuit`,用于递归聚合多个 batch 的 SNARK。 +- 电路结构由 5 层扩展至 7 层。 +- 新的 public input 支持跨 batch 的上下文。 + +技术细节请参考 [Darwin Notion 文档](https://scrollzkp.notion.site/Upgrade-4-Darwin-Documentation-05a3ecb59e9d4f288254701f8c888173)。 + +#### 安全审计 + +- TrailofBits 审计:即将发布! + +### 兼容性 + +#### Sequencer 与 Follower 节点 + +此次升级不更改状态转换逻辑,因此兼容旧节点。但建议升级至 [v5.6.0](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.6.0)。 + +#### Dapp 与索引器 + +升级后涉及关键变更: + +- 使用新的 [V3 编解码器](https://github.com/scroll-tech/da-codec/tree/main/encoding/codecv3),新增字段: + - `lastBlockTimestamp` + - `blobDataProof` +- 批次通过 `commitBatchWithBlobProof` 提交。 +- 批次终结使用 `finalizeBundleWithProof`。 +- `FinalizeBatch` 事件语义改变:现在表示从上一个已终结 batch 到当前 batch 之间的所有 batch 都已终结。 + +建议: + +- 索引器需适配新的 batch 编解码逻辑与提交接口。 +- 跟踪状态根时需考虑 batch bundle 的新结构。 + +详见完整文档:[Darwin 技术文档](https://scrollzkp.notion.site/Upgrade-4-Darwin-Documentation-05a3ecb59e9d4f288254701f8c888173)。 diff --git a/src/content/docs/zh/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx b/src/content/docs/zh/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx new file mode 100644 index 000000000..05ef3790b --- /dev/null +++ b/src/content/docs/zh/technology/overview/scroll-upgrades/darwin-v2-upgrade.mdx @@ -0,0 +1,37 @@ +--- +section: technology +date: Last Modified +title: "Darwin v2 Upgrade" +lang: "zh" +permalink: "technology/overview/scroll-upgrades/darwin-v2-upgrade" +--- + +### 概览 + +在内部测试过程中,我们发现,在某些条件下区块可能无法被压缩,这将导致区块碎片(chunk)和批次(batch)无法被证明。 +为了解决这个问题,我们进行了一个小幅升级:当检测到这种特殊情况时,将启用未压缩的 blob 数据。 + +### 时间线 + +由于这是一个与安全相关的补丁,我们跳过了 7 天的 timelock 机制。 + +- **Scroll Sepolia**:2024 年 8 月 28 日 +- **Scroll 主网**:2024 年 9 月 2 日 + +### 兼容性 + +#### Sequencer 和 Follower 节点(l2geth) + +新的节点版本为 `v5.7.0`。详情请查看[发布说明](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.7.0)。 + +此次升级不会改变 Scroll 的状态转换函数,因此是向后兼容的。 +但提交到以太坊的批次数据格式发生了变化。因此,启用了 rollup 验证(`--rollup.verify`)的节点必须升级才能继续同步链数据。 + +#### Dapp 和索引服务(Indexers) + +为了提升主网 sequencer 的吞吐量,我们对 Scroll 主网做出了一项更改,将最大重组深度调整为 17 个区块。 +此前,系统会在 signer 线程中执行全面的容量检查,以确保交易不超过电路限制。虽然这种做法能确保所有交易合规,但也会占用较多 CPU 资源。 +现在我们引入了新的电路容量检查机制:sequencer 线程将执行近似检查,另有 16 个工作线程并行精确验证之前区块的容量。 +因此,最多可能发生 17 个区块的链重组,尽管这种情况较为罕见。 + +对于索引器来说,`BatchHeader` 版本已升级为 4。这个升级是向后兼容的(唯一例外是对于解析 blob 数据的开发者而言,格式略有变动)。 diff --git a/src/content/docs/zh/technology/overview/scroll-upgrades/euclid-upgrade.mdx b/src/content/docs/zh/technology/overview/scroll-upgrades/euclid-upgrade.mdx new file mode 100644 index 000000000..08898c533 --- /dev/null +++ b/src/content/docs/zh/technology/overview/scroll-upgrades/euclid-upgrade.mdx @@ -0,0 +1,110 @@ +--- +section: technology +date: Last Modified +title: "Euclid Upgrade" +lang: "zh" +permalink: "technology/overview/scroll-upgrades/euclid-upgrade" +--- + +### 概览 + +此次升级包含五个主要变化: + +- 迁移至 OpenVM Prover。 +- 迁移至 MPT 状态承诺。 +- 优化 Rollup 处理流程。 +- 支持 EIP-7702 与 RIP-7212。 +- 达成 Stage-1 阶段准备。 + +这些变化将带来更低的费用、更高的吞吐量、更强的安全性、更好的兼容性,以及 Scroll 用户与开发者能享受到的更多先进功能。 + +### 时间线 + +- **Scroll Sepolia** + - 阶段一:2025 年 3 月 11 日 + - 阶段二:2025 年 3 月 13 日 +- **Scroll 主网** + - 阶段一:2025 年 4 月 16 日 + - 阶段二:2025 年 4 月 22 日 + +### 功能详情 + +#### OpenVM Prover + +Scroll 是 EVM 字节码兼容的 halo2 zkEVM 的早期先驱之一。随着 ZK 技术的快速发展,通用的 RISC-V zkVM 现在也变得可行。在 Euclid 升级中,我们将弃用 halo2 电路,转向构建于 [OpenVM](https://scroll.io/blog/the-first-release-of-the-openvm-framework-is-live) 之上的新 Prover。 + +新的 OpenVM Prover 带来诸多好处. 代码更易于理解与审计;可在多个模块中复用代码;可大幅降低证明成本与延迟;还支持验证任意复杂交易,从而取消限制 sequencer 吞吐量的电路容量检查器模块。 + +#### MPT 状态承诺 + +目前 Scroll 使用的是 zk 友好的状态承诺结构 [zktrie](https://docs.scroll.io/en/technology/sequencer/zktrie/)。通过 OpenVM prover,现在可以实际地证明 Ethereum 的状态结构:[Merkle-Patricia Trie (MPT)](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie)。因此我们将弃用 zktrie,改为采用 MPT。 + +MPT 能提升 sequencer 性能,并为依赖 L2 状态证明的 dApp 提供更好兼容性。 + +#### 优化的 Rollup 处理流程 + +Euclid 将推出一系列优化,显著降低数据可用性(DA)开销,从而为用户带来更低的费用。 + +关键优化包括: + +- 将 blob 验证从合约代码转移到 zk 电路中; +- 摊销消息队列提交成本; +- 将 L2 区块头数据从 calldata 转移到 blobs; +- 在单笔交易中提交多个 blobs。 + +预计整体可将批次提交成本减少高达 90%。 + +此外,Scroll L2 节点将弃用当前的 Clique(基于权威证明的共识机制),转为从 L1 的系统配置合约中读取 L2 区块签名者权限。 + +#### 强大的智能账户 + +Euclid 将支持 [EIP-7702](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7702.md) 与 [RIP-7212](https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md)。这与 Ethereum 的 [Pectra 升级](https://blog.ethereum.org/2025/02/14/pectra-testnet-announcement) 保持一致,确保了高度兼容性。这些功能也为用户与开发者带来全新体验:如为现有账户添加智能合约功能、使用 passkey 授权签名、享受新标准所带来的 UX 改进。 + +#### Stage-1 阶段 + +Euclid 引入了关键的安全机制,使 Scroll 可达到由 [L2BEAT 定义](https://medium.com/l2beat/introducing-stages-a-framework-to-evaluate-rollups-maturity-d290bb22befe) 的 Stage-1 阶段。 + +- 强制交易纳入机制可提升抗审查能力。用户可直接通过 L1 发送交易,强制 sequencer 将其包含。 +- 无许可批次提交机制防止活性故障。在极少数情况下,若 sequencer 停止提交或完成批次,任何人都可接管操作。 + +这些机制强制 sequencer 履行职责,提供重要的安全保障。 + +此外,Scroll 已将控制权交由 [安全委员会](https://scroll.io/blog/introducing-scroll-security-council),由 12 名声誉良好的成员组成,采用 9/12 多签机制。Euclid 将是安全委员会执行的第一个升级。 + +#### 节点运营商 + +##### 第一阶段更新 + +- 节点运营商需迁移至新的 MPT 版本 l2geth。这需要完全重新同步(从网络或快照开始)。稍后我们将发布节点版本和快照。请查看 [节点状态迁移指南](https://www.notion.so/Node-Runner-State-Migration-Guideline-17b7792d22af80e4ab4bdc294f4f7541?pvs=21)。 +- zktrie 节点将继续运行,但将不再验证区块头中的状态根。建议在 Euclid 升级前迁移至 MPT 节点。 + +##### 第二阶段更新 + +- 节点运营商需知悉第一阶段引入的“无需许可的批次”。尽管不太可能在实际中触发,一旦触发将需要手动恢复操作。我们将在下个节点版本中提供详细文档。 + +#### Dapps 与索引器 + +##### 第一阶段更新 + +- 状态承诺结构从 zktrie 切换为 MPT。 +- 所有依赖 zktrie 证明的 Dapp 需迁移至 MPT。 +- 批次版本为 v5 和 v6(与 v4 格式相同)。 + +##### 第二阶段更新 + +- 批次头和 blob 数据将采用新的编码格式(批次版本 v7)。 +- 批次承诺 calldata 将不再包含区块头。需要此信息的项目应从 L1 获取并解码 blob。 +- 一笔交易可能包含多个批次。索引器需支持处理同一 L1 交易中的多个批次。 +- 在无需许可模式中,使用 `commitAndFinalizeBatch` 一步原子提交并终结批次。 +- 函数签名更新如下: + - 升级前:`commitBatchWithBlobProof`、`finalizeBundleWithProof`、`revertBatch` + - 升级后:`commitBatches`、`finalizeBundlePostEuclidV2`、`commitAndFinalizeBatch`、`revertBatch` +- `committedBatches` 数组将变得稀疏。 +- 消息队列合约迁移为 `L1MessageQueueV2`,其消息哈希方式不同。 +- 不安全的 L2 区块不再包含签名或自定义标记(`ExtraData` 字段)。 + +#### 资源 + +- [GitHub 合约变更 PR](https://github.com/scroll-tech/scroll-contracts/pull/79) +- [DA 编解码器仓库](https://github.com/scroll-tech/da-codec) +- [Discord 提交工单](https://discord.com/channels/853955156100907018/1280768286124146732) \ No newline at end of file