From 1e1c145e4483c9e7f414d82cbda4174a9673114c Mon Sep 17 00:00:00 2001 From: George Knee Date: Mon, 10 Mar 2025 21:01:59 +0000 Subject: [PATCH 1/9] update forced-transactions --- .../stack/transactions/forced-transaction.mdx | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/pages/stack/transactions/forced-transaction.mdx b/pages/stack/transactions/forced-transaction.mdx index bc293fd09..e50bce667 100644 --- a/pages/stack/transactions/forced-transaction.mdx +++ b/pages/stack/transactions/forced-transaction.mdx @@ -4,7 +4,7 @@ lang: en-US description: Learn the forced transaction flow during sequencer downtime. --- -import { Callout } from 'nextra/components' +import { Callout } from "nextra/components"; ## Forced transaction flow @@ -15,9 +15,9 @@ However, there are important nuances to understand about the chain derivation pi ## Key concepts -* **Sequencing Window**: A 12-hour rolling window to include L2 transactions, including native L2 transactions and deposit transactions. -* **Max Time Drift**: 30 minutes, the maximum delay for including a deposit transaction, relative to the L2 chain. -* **Sequencer Downtime**: Period when the sequencer is offline or not producing blocks. +- **Sequencing Window**: A 12-hour rolling window to include L2 transactions, including native L2 transactions and deposit transactions. +- **Max Time Drift**: 30 minutes, the maximum delay for including a deposit transaction, relative to the L2 chain. +- **Sequencer Downtime**: Period when the sequencer is offline or not producing blocks. ## Normal operation @@ -30,31 +30,28 @@ Under normal circumstances: ### Short downtime (< 30 minutes) -* Deposits are still included within the 30-minute max time drift. -* Regular L2 transactions may be delayed. +- Deposits are still included within the 30-minute max time drift. +- Regular L2 transactions may be delayed. ### Extended downtime (30 minutes to 12 hours) -1. Deposits are force-included within 30 minutes. -2. The L2 chain state remains uncertain until: - * The sequencer comes back online, or - * The 12-hour sequencing window expires. +The L2 chain state remains uncertain until: +_ The sequencer comes back online, or +_ The 12-hour sequencing window expires. ### Prolonged downtime (> 12 hours) 1. After 12 hours, nodes start generating blocks deterministically. -2. These blocks only include deposit transactions. +2. These blocks include only deposit transactions. 3. When the sequencer returns: - * All deposit transactions are included first. - * No regular L2 transactions are included until the L2 chain is within 12 hours of the chain. - - + - All deposit transactions are included first. + - No regular L2 transactions are included until the L2 chain is within 12 hours of the L1 chain. ## Important considerations -* Forced transactions, through deposits (no need for deposited value), ensure timely execution of actions, mitigating risks like DEX price divergence during sequencer downtime. -* Actions remain speculative for up to 12 hours due to the sequencing window. -* The 12-hour window is a balance between operational reliability and minimizing potential L2 reorganizations. +- Forced transactions, through deposits (no need for deposited value), ensure timely execution of actions, mitigating risks like DEX price divergence during sequencer downtime. +- Actions remain speculative for up to 12 hours due to the sequencing window. +- The 12-hour window is a balance between operational reliability and minimizing potential L2 reorganizations. ## Example scenario @@ -65,7 +62,9 @@ If a deposit is initiated after the 30-minute mark but before the sequencing win 3. The eventual L2 chain will include the deposit in a block with an onchain timestamp close to the L1 block where the deposit originated. - The sequencing window is a rolling 12-hour delay from when an L1 block is first known. This design allows the sequencer a grace period to come back online without causing L2 chain reorganizations. + The sequencing window is a rolling 12-hour delay from when an L1 block is + first known. This design allows the sequencer a grace period to come back + online without causing L2 chain reorganizations. ## Conclusion From c96962c3b7852122b5dc839bae11885dbd2aba49 Mon Sep 17 00:00:00 2001 From: George Knee Date: Mon, 10 Mar 2025 21:03:39 +0000 Subject: [PATCH 2/9] format --- pages/stack/transactions/forced-transaction.mdx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pages/stack/transactions/forced-transaction.mdx b/pages/stack/transactions/forced-transaction.mdx index e50bce667..304a9d62b 100644 --- a/pages/stack/transactions/forced-transaction.mdx +++ b/pages/stack/transactions/forced-transaction.mdx @@ -36,16 +36,18 @@ Under normal circumstances: ### Extended downtime (30 minutes to 12 hours) The L2 chain state remains uncertain until: -_ The sequencer comes back online, or -_ The 12-hour sequencing window expires. + +- The sequencer comes back online, or +- The 12-hour sequencing window expires. ### Prolonged downtime (> 12 hours) 1. After 12 hours, nodes start generating blocks deterministically. 2. These blocks include only deposit transactions. 3. When the sequencer returns: - - All deposit transactions are included first. - - No regular L2 transactions are included until the L2 chain is within 12 hours of the L1 chain. + +- All deposit transactions are included first. +- No regular L2 transactions are included until the L2 chain is within 12 hours of the L1 chain. ## Important considerations From f285d3d4ab452a5de43c3d07ba7e764a6ea6408b Mon Sep 17 00:00:00 2001 From: Blessing Krofegha Date: Tue, 11 Mar 2025 00:47:01 +0100 Subject: [PATCH 3/9] update the forced transaction guide --- .../stack/transactions/forced-transaction.mdx | 60 +++++++++++-------- words.txt | 8 ++- 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/pages/stack/transactions/forced-transaction.mdx b/pages/stack/transactions/forced-transaction.mdx index 304a9d62b..4ae32803b 100644 --- a/pages/stack/transactions/forced-transaction.mdx +++ b/pages/stack/transactions/forced-transaction.mdx @@ -4,20 +4,22 @@ lang: en-US description: Learn the forced transaction flow during sequencer downtime. --- -import { Callout } from "nextra/components"; +import { Callout } from "nextra/components" ## Forced transaction flow This guide explains the nuances of forced transactions during sequencer downtime. -Users are able to force-include deposit transactions, which can initiate withdrawals, at any time. -However, there are important nuances to understand about the chain derivation pipeline and sequencer behavior. +In the OP Stack, forced transactions serve as a mechanism to ensure transaction inclusion, even during sequencer downtime. +This enhances the network's resilience and maintains user trust by allowing transactions to be processed without relying solely on the sequencer. ## Key concepts -- **Sequencing Window**: A 12-hour rolling window to include L2 transactions, including native L2 transactions and deposit transactions. -- **Max Time Drift**: 30 minutes, the maximum delay for including a deposit transaction, relative to the L2 chain. -- **Sequencer Downtime**: Period when the sequencer is offline or not producing blocks. +* **Sequencing Window**: A 12-hour rolling window to include L2 transactions, including native L2 transactions and deposit transactions. +* **Max Time Drift**: 30 minutes, the maximum delay for including a deposit transaction, relative to the L2 chain. +* **Sequencer Downtime**: Period when the sequencer is offline or not producing blocks. +* **Forced Transactions**: Transactions that users can submit directly to the L1 chain, ensuring their inclusion in the L2 chain without sequencer intervention. + This mechanism is crucial during sequencer downtime. ## Normal operation @@ -26,40 +28,47 @@ Under normal circumstances: 1. Deposit transactions are included within 30 minutes. 2. The sequencer processes transactions and produces blocks regularly. -## Sequencer downtime scenarios +## Forced transaction mechanism -### Short downtime (< 30 minutes) +1. **Submission to L1:** + Users can send transactions directly to the `OptimismPortal` contract on L1 Ethereum. This bypasses the sequencer, ensuring that the transaction is recorded on L1. -- Deposits are still included within the 30-minute max time drift. -- Regular L2 transactions may be delayed. +2. **Inclusion in L2:** + Once submitted to L1, these transactions are automatically included in the L2 chain. The timing of their inclusion depends on the duration of the sequencer's downtime: -### Extended downtime (30 minutes to 12 hours) + * **Short Downtime (< 30 minutes):** + Transactions are typically included within 30 minutes, aligning with the network's maximum time drift parameter. -The L2 chain state remains uncertain until: + * **Extended Downtime (30 minutes to 12 hours):** + During sequencer downtimes lasting between 30 minutes and 12 hours: -- The sequencer comes back online, or -- The 12-hour sequencing window expires. + * Deposit Transactions: Users can force-include deposit transactions by submitting them directly to the [`OptimismPortal`](https://github.com/ethereum-optimism/optimism/blob/111f3f3a3a2881899662e53e0f1b2f845b188a38/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L209) contract on L1. These transactions are included in the L2 chain, even if the sequencer is offline. + Refer to the [Bypassing the Sequencer](/stack/rollup/outages#bypassing-the-sequencer) section for more information about this functionality. -### Prolonged downtime (> 12 hours) + * L2 Chain State: The L2 chain's state remains uncertain until either: + The sequencer resumes operations and processes pending transactions. + The 12-hour sequencing window expires, after which nodes begin generating blocks deterministically, incorporating only the forced-included deposit transactions. -1. After 12 hours, nodes start generating blocks deterministically. -2. These blocks include only deposit transactions. -3. When the sequencer returns: + * **Prolonged Downtime (> 12 hours):** + After 12 hours, nodes begin generating blocks deterministically, incorporating only the forced-included transactions. Regular L2 transactions are deferred until the sequencer is back online and the chain is within 12-hours of the latest state. -- All deposit transactions are included first. -- No regular L2 transactions are included until the L2 chain is within 12 hours of the L1 chain. +## Benefits of forced transactions + +* **Censorship Resistance:** Users can ensure their transactions are processed even if the sequencer attempts to censor them. +* **Network Resilience:** The network remains operational, allowing critical transactions to proceed during sequencer downtimes. +* **User Autonomy:** Users are not entirely dependent on the sequencer for transaction inclusion, providing an additional layer of trust and reliability. ## Important considerations -- Forced transactions, through deposits (no need for deposited value), ensure timely execution of actions, mitigating risks like DEX price divergence during sequencer downtime. -- Actions remain speculative for up to 12 hours due to the sequencing window. -- The 12-hour window is a balance between operational reliability and minimizing potential L2 reorganizations. +* Forced transactions, through deposits (no need for deposited value), ensure timely execution of actions, mitigating risks like DEX price divergence during sequencer downtime. +* Actions remain speculative for up to 12 hours due to the sequencing window. +* The 12-hour window is a balance between operational reliability and minimizing potential L2 reorganizations. ## Example scenario If a deposit is initiated after the 30-minute mark but before the sequencing window expires: -1. The deposit will be effective when the sequencing window expires (up to ~11 hours later). +1. The deposit will be effective when the sequencing window expires (up to \~11 hours later). 2. Nodes reading data from L1 will produce a block with the deposit after the sequencing window expires. 3. The eventual L2 chain will include the deposit in a block with an onchain timestamp close to the L1 block where the deposit originated. @@ -71,4 +80,5 @@ If a deposit is initiated after the 30-minute mark but before the sequencing win ## Conclusion -The forced transaction mechanism on OP Stack chains provides a robust way to handle sequencer downtime, ensuring that critical transactions are included in a timely manner. While the 12-hour sequencer window introduces a degree of uncertainty during downtime, the system is designed to guarantee eventual consistency and transaction inclusion. +The forced transaction mechanism on OP Stack chains provides a robust way to handle [sequencer downtime](/stack/rollup/outages#sequencer-downtime-outages), ensuring that critical transactions are included in a timely manner. +While the 12-hour sequencer window introduces a degree of uncertainty during downtime, the system is designed to guarantee eventual consistency and transaction inclusion. diff --git a/words.txt b/words.txt index 2ee547ddf..9e6e058ae 100644 --- a/words.txt +++ b/words.txt @@ -238,9 +238,9 @@ NETRESTRICT netrestrict NETWORKID networkid -nextra NEWPAYLOAD newpayload +nextra NOCOMPACTION nocompaction NODEKEY @@ -315,11 +315,12 @@ PRICELIMIT pricelimit productionize productionized -Proxied Protip +Proxied Proxyd proxyd Pyth +Pyth's QRNG Quicknode quicknode @@ -339,7 +340,6 @@ replayor reposts REQUIREDBLOCKS requiredblocks -rpcs rollouts Rollups rollups @@ -347,12 +347,14 @@ Routescan rpckind RPCPREFIX rpcprefix +rpcs RPGF Runbooks runbooks RWAs safedb Schnorr +SEPOLIA Sepolia sepolia seqnr From 47c593cbac4ea0241b6021737a97dd179ecdd3c0 Mon Sep 17 00:00:00 2001 From: Blessing Krofegha Date: Tue, 11 Mar 2025 00:55:38 +0100 Subject: [PATCH 4/9] updated some paragraph --- pages/stack/transactions/forced-transaction.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pages/stack/transactions/forced-transaction.mdx b/pages/stack/transactions/forced-transaction.mdx index 4ae32803b..162e4f9d2 100644 --- a/pages/stack/transactions/forced-transaction.mdx +++ b/pages/stack/transactions/forced-transaction.mdx @@ -37,13 +37,13 @@ Under normal circumstances: Once submitted to L1, these transactions are automatically included in the L2 chain. The timing of their inclusion depends on the duration of the sequencer's downtime: * **Short Downtime (< 30 minutes):** - Transactions are typically included within 30 minutes, aligning with the network's maximum time drift parameter. + During short downtime `~ 30 minutes`, transactions may still be included within the usual 30-minute maximum time drift if the sequencer resumes operation within that window. * **Extended Downtime (30 minutes to 12 hours):** During sequencer downtimes lasting between 30 minutes and 12 hours: - * Deposit Transactions: Users can force-include deposit transactions by submitting them directly to the [`OptimismPortal`](https://github.com/ethereum-optimism/optimism/blob/111f3f3a3a2881899662e53e0f1b2f845b188a38/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L209) contract on L1. These transactions are included in the L2 chain, even if the sequencer is offline. - Refer to the [Bypassing the Sequencer](/stack/rollup/outages#bypassing-the-sequencer) section for more information about this functionality. + * Deposit Transactions: Deposit Transactions: Users can submit forced transactions directly to the [`OptimismPortal`](https://github.com/ethereum-optimism/optimism/blob/111f3f3a3a2881899662e53e0f1b2f845b188a38/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L209) contract on L1. However, these transactions will only be included in the L2 chain once the sequencer resumes or the 12-hour sequencing window expires. + Refer to the [Bypassing the Sequencer](/stack/rollup/outages#bypassing-the-sequencer) section for more information about this functionality. * L2 Chain State: The L2 chain's state remains uncertain until either: The sequencer resumes operations and processes pending transactions. From b594d282952d10e58638a5395e8079b3c7b912ee Mon Sep 17 00:00:00 2001 From: Blessing Krofegha Date: Tue, 11 Mar 2025 14:18:58 +0100 Subject: [PATCH 5/9] Update pages/stack/transactions/forced-transaction.mdx Co-authored-by: George Knee --- pages/stack/transactions/forced-transaction.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/stack/transactions/forced-transaction.mdx b/pages/stack/transactions/forced-transaction.mdx index 162e4f9d2..c19df1996 100644 --- a/pages/stack/transactions/forced-transaction.mdx +++ b/pages/stack/transactions/forced-transaction.mdx @@ -42,7 +42,7 @@ Under normal circumstances: * **Extended Downtime (30 minutes to 12 hours):** During sequencer downtimes lasting between 30 minutes and 12 hours: - * Deposit Transactions: Deposit Transactions: Users can submit forced transactions directly to the [`OptimismPortal`](https://github.com/ethereum-optimism/optimism/blob/111f3f3a3a2881899662e53e0f1b2f845b188a38/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L209) contract on L1. However, these transactions will only be included in the L2 chain once the sequencer resumes or the 12-hour sequencing window expires. + * Deposit Transactions: Users can submit forced transactions directly to the [`OptimismPortal`](https://github.com/ethereum-optimism/optimism/blob/111f3f3a3a2881899662e53e0f1b2f845b188a38/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L209) contract on L1. However, these transactions will only be included in the L2 chain once the sequencer resumes or the 12-hour sequencing window expires. Refer to the [Bypassing the Sequencer](/stack/rollup/outages#bypassing-the-sequencer) section for more information about this functionality. * L2 Chain State: The L2 chain's state remains uncertain until either: From bad998575bc2e10af08f4a9b3dfa9c8951e805af Mon Sep 17 00:00:00 2001 From: Blessing Krofegha Date: Tue, 11 Mar 2025 14:38:14 +0100 Subject: [PATCH 6/9] updated the statements --- pages/stack/transactions/forced-transaction.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/stack/transactions/forced-transaction.mdx b/pages/stack/transactions/forced-transaction.mdx index c19df1996..32ba9fb1d 100644 --- a/pages/stack/transactions/forced-transaction.mdx +++ b/pages/stack/transactions/forced-transaction.mdx @@ -50,7 +50,7 @@ Under normal circumstances: The 12-hour sequencing window expires, after which nodes begin generating blocks deterministically, incorporating only the forced-included deposit transactions. * **Prolonged Downtime (> 12 hours):** - After 12 hours, nodes begin generating blocks deterministically, incorporating only the forced-included transactions. Regular L2 transactions are deferred until the sequencer is back online and the chain is within 12-hours of the latest state. + After 12 hours, nodes begin generating blocks deterministically, incorporating only the forced-included transactions. Regular L2 transactions are deferred until the sequencer is back online and has processed enough blocks to be within the last 12 hours of the L1 state. ## Benefits of forced transactions From 6dc61ca4fa389a994bb340736f1526065d3fd6a8 Mon Sep 17 00:00:00 2001 From: Blessing Krofegha Date: Tue, 11 Mar 2025 15:40:49 +0100 Subject: [PATCH 7/9] updated the statements --- .../stack/transactions/forced-transaction.mdx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/pages/stack/transactions/forced-transaction.mdx b/pages/stack/transactions/forced-transaction.mdx index 32ba9fb1d..6d63e7520 100644 --- a/pages/stack/transactions/forced-transaction.mdx +++ b/pages/stack/transactions/forced-transaction.mdx @@ -42,12 +42,18 @@ Under normal circumstances: * **Extended Downtime (30 minutes to 12 hours):** During sequencer downtimes lasting between 30 minutes and 12 hours: - * Deposit Transactions: Users can submit forced transactions directly to the [`OptimismPortal`](https://github.com/ethereum-optimism/optimism/blob/111f3f3a3a2881899662e53e0f1b2f845b188a38/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L209) contract on L1. However, these transactions will only be included in the L2 chain once the sequencer resumes or the 12-hour sequencing window expires. - Refer to the [Bypassing the Sequencer](/stack/rollup/outages#bypassing-the-sequencer) section for more information about this functionality. - - * L2 Chain State: The L2 chain's state remains uncertain until either: - The sequencer resumes operations and processes pending transactions. - The 12-hour sequencing window expires, after which nodes begin generating blocks deterministically, incorporating only the forced-included deposit transactions. + * Deposit Transactions: Users can submit forced transactions directly to the [`OptimismPortal`](https://github.com/ethereum-optimism/optimism/blob/111f3f3a3a2881899662e53e0f1b2f845b188a38/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L209) contract on L1. However, these transactions will only be included in the L2 chain once the sequencer resumes or the 12-hour sequencing window expires. + Refer to the [Bypassing the Sequencer](/stack/rollup/outages#bypassing-the-sequencer) section for more information about this functionality. + * L2 Chain State: The L2 chain's state remains uncertain until either: + The sequencer resumes operations and processes pending transactions. + The 12-hour sequencing window expires, after which nodes begin generating blocks deterministically, incorporating only the forced-included deposit transactions. + + * **Sequencer Catch-up Phase:** + If the sequencer is offline for more than 30 minutes but less than 12 hours, it enters a **quick catch-up** phase upon restarting. + During this phase: + * The sequencer produces **deposit-only blocks** while moving the L1 origin forward with every block. + * This continues until the L1 origin is back inside the sequencer drift window. + * Normally, L2 blocks are produced at a **6:1 ratio** relative to their L1 origin (12s per L2 block vs. 2s per L1 block). However, during the catch-up phase, this ratio **switches to 1:1**, meaning each L2 block corresponds to a new L1 origin. * **Prolonged Downtime (> 12 hours):** After 12 hours, nodes begin generating blocks deterministically, incorporating only the forced-included transactions. Regular L2 transactions are deferred until the sequencer is back online and has processed enough blocks to be within the last 12 hours of the L1 state. From f1fb1db0ddd20bdc17e089a08fb77b1ac5711466 Mon Sep 17 00:00:00 2001 From: Blessing Krofegha Date: Tue, 11 Mar 2025 15:49:18 +0100 Subject: [PATCH 8/9] updated the intro statement --- pages/stack/transactions/forced-transaction.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pages/stack/transactions/forced-transaction.mdx b/pages/stack/transactions/forced-transaction.mdx index 6d63e7520..f304c3f1b 100644 --- a/pages/stack/transactions/forced-transaction.mdx +++ b/pages/stack/transactions/forced-transaction.mdx @@ -11,7 +11,9 @@ import { Callout } from "nextra/components" This guide explains the nuances of forced transactions during sequencer downtime. In the OP Stack, forced transactions serve as a mechanism to ensure transaction inclusion, even during sequencer downtime. -This enhances the network's resilience and maintains user trust by allowing transactions to be processed without relying solely on the sequencer. +Users are able to force-include transactions, which can initiate withdrawals, at any time. +However, there are important nuances to understand about the chain derivation pipeline and sequencer behavior. + ## Key concepts From 58d18a4085c9d4f001643d113ac3c3dc34e6f6cf Mon Sep 17 00:00:00 2001 From: Blessing Krofegha Date: Wed, 12 Mar 2025 18:51:52 +0100 Subject: [PATCH 9/9] Update pages/stack/transactions/forced-transaction.mdx Co-authored-by: George Knee --- pages/stack/transactions/forced-transaction.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/stack/transactions/forced-transaction.mdx b/pages/stack/transactions/forced-transaction.mdx index f304c3f1b..daa58edf7 100644 --- a/pages/stack/transactions/forced-transaction.mdx +++ b/pages/stack/transactions/forced-transaction.mdx @@ -47,8 +47,8 @@ Under normal circumstances: * Deposit Transactions: Users can submit forced transactions directly to the [`OptimismPortal`](https://github.com/ethereum-optimism/optimism/blob/111f3f3a3a2881899662e53e0f1b2f845b188a38/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L209) contract on L1. However, these transactions will only be included in the L2 chain once the sequencer resumes or the 12-hour sequencing window expires. Refer to the [Bypassing the Sequencer](/stack/rollup/outages#bypassing-the-sequencer) section for more information about this functionality. * L2 Chain State: The L2 chain's state remains uncertain until either: - The sequencer resumes operations and processes pending transactions. - The 12-hour sequencing window expires, after which nodes begin generating blocks deterministically, incorporating only the forced-included deposit transactions. + The sequencer resumes operations and processes pending transactions, or + the 12-hour sequencing window expires (after which nodes begin generating blocks deterministically, incorporating only the forced-included deposit transactions). * **Sequencer Catch-up Phase:** If the sequencer is offline for more than 30 minutes but less than 12 hours, it enters a **quick catch-up** phase upon restarting.