From ac6c0e51690e170e4d3fdf15defb73ab5249a874 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Tue, 29 Oct 2024 00:55:40 -0700
Subject: [PATCH 01/13] superchain-weth
---
pages/stack/interop/_meta.json | 3 +-
pages/stack/interop/cross-chain-message.mdx | 2 +-
pages/stack/interop/explainer.mdx | 4 +-
pages/stack/interop/superchain-weth.mdx | 81 +++++++++++++++++++++
words.txt | 9 ---
5 files changed, 86 insertions(+), 13 deletions(-)
create mode 100644 pages/stack/interop/superchain-weth.mdx
diff --git a/pages/stack/interop/_meta.json b/pages/stack/interop/_meta.json
index 0fad31024..49179f9c4 100644
--- a/pages/stack/interop/_meta.json
+++ b/pages/stack/interop/_meta.json
@@ -2,5 +2,6 @@
"explainer": "Interop explainer",
"cross-chain-message": "Anatomy of cross-chain message",
"supersim": "Supersim Multichain Development Environment",
- "superchain-erc20": "SuperchainERC20 token standard"
+ "superchain-erc20": "SuperchainERC20 token standard",
+ "superchain-weth": "SuperchainWETH (Interoperable ETH)"
}
\ No newline at end of file
diff --git a/pages/stack/interop/cross-chain-message.mdx b/pages/stack/interop/cross-chain-message.mdx
index ae15b27c1..3d7d8d406 100644
--- a/pages/stack/interop/cross-chain-message.mdx
+++ b/pages/stack/interop/cross-chain-message.mdx
@@ -9,7 +9,7 @@ import Image from 'next/image'
# Anatomy of a cross-chain message
-A cross-chain message applies to any message sent across a chain. This applies to asset transfers using the [SuperchainERC20](https://specs.optimism.io/interop/token-bridging.html) token standard.
+A cross-chain message applies to any message sent across a chain. This applies to asset transfers using the [SuperchainERC20](superchain-erc20) token standard.
## How it works
diff --git a/pages/stack/interop/explainer.mdx b/pages/stack/interop/explainer.mdx
index 4da94e360..d054afc89 100644
--- a/pages/stack/interop/explainer.mdx
+++ b/pages/stack/interop/explainer.mdx
@@ -24,8 +24,8 @@ Native OP Stack interoperability provides the ability to read messages and trans
## Secure message passing
Superchain interop includes both the protocol layer message passing and the Superchain ERC20 token specification.
-* **Message passing protocol:** the initial + finalizing/executing [message](https://specs.optimism.io/interop/messaging.html) that fire events to be consumed by the chains in the [dependency set](https://specs.optimism.io/interop/dependency-set.html)
-* **SuperchainERC20 token specification**: the [SuperchainERC20](https://specs.optimism.io/interop/token-bridging.html) turns message passing into asset transfer between chains in the interop set. Learn more about how the SuperchainERC20 token standard enables asset interoperability in the Superchain [here](/stack/interop/superchain-erc20)
+* **Message passing protocol:** the initial + finalizing/executing [message](cross-chain-message) that fire events to be consumed by the chains in the [dependency set](https://specs.optimism.io/interop/dependency-set.html)
+* **SuperchainERC20 token specification**: the [SuperchainERC20](superchain-erc20) turns message passing into asset transfer between chains in the interop set. Learn more about how the SuperchainERC20 token standard enables asset interoperability in the Superchain [here](/stack/interop/superchain-erc20)
This means ETH and ERC-20s can seamlessly and securely move across L2s, and intent-based protocols (i.e., bridges) can build better experiences on top of the message passing protocol.
diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx
new file mode 100644
index 000000000..ac71d63df
--- /dev/null
+++ b/pages/stack/interop/superchain-weth.mdx
@@ -0,0 +1,81 @@
+---
+title: SuperchainWETH (Interoperable ETH)
+lang: en-US
+description: Learn basic details about the SuperchainWETH or Interoperable ETH.
+---
+
+import { Callout } from 'nextra/components'
+
+# SuperchainWETH (Interoperable ETH)
+
+
+ Interop is currently in active development and not yet ready for production use. The information provided here may change. Check back regularly for the most up-to-date information.
+
+
+Superchain WETH or Interoperable ETH is a specialized version of the standard WETH (Wrapped Ether) contract designed to enable seamless movement of ETH across the Superchain. It addresses the liquidity constraints and usability issues that arise when transferring ETH between different chains.
+
+## Features and benefits
+
+* Enables seamless ETH transfers across different chains in the Superchain
+* Minimizes protocol complexity by treating ETH as an ERC-20 token
+* Maintains fungibility of ETH across the Superchain
+* Provides liquidity for cross-chain transactions
+* Supports interoperability between chains with different native assets (i.e., gas tokens)
+* Improves user experience by abstracting complex bridging processes
+
+
+ `SuperchainWETH` requires `SuperchainTokenBridge` integration for full interoperable, cross-chain functionality.
+
+
+## How it works
+
+Interoperable ETH (Superchain WETH) facilitates secure movement of ETH across the Superchain via `crosschainBurn` and `crosschainMint`.
+
+* **`crosschainBurn`**: Facilitates cross-chain transfers by **burning** WETH. The user sends ETH to the `SuperchainWETH` contract. `SuperchainWETH` interacts with `ETHLiquidity` to burn the ETH and sends a cross-chain message via the `L2ToL2CrossDomainMessenger` to the destination chain.
+* **`crosschainMint`**: Mints WETH on the destination chain after a cross-chain transfer. The user receives ETH or WETH on the destination chain. If the destination is a non-custom gas token chain, ETH is sourced from the `ETHLiquidity` contract.
+
+```mermaid
+sequenceDiagram
+ participant User
+ participant SuperchainWETH
+ participant ETHLiquidity
+ participant L2ToL2CrossDomainMessenger
+ participant DestinationChain
+
+ User->>SuperchainWETH: Send ETH
+ SuperchainWETH->>ETHLiquidity: Burn ETH
+ SuperchainWETH->>L2ToL2CrossDomainMessenger: Send cross-chain message
+ L2ToL2CrossDomainMessenger->>DestinationChain: Relay message
+ DestinationChain->>SuperchainWETH: Call relayETH/relayERC20
+ SuperchainWETH->>ETHLiquidity: Source ETH (if non-custom gas token chain)
+ SuperchainWETH->>User: Receive ETH/WETH on destination chain
+```
+
+This diagram illustrates the process where the user sends ETH to the `SuperchainWETH` contract which burns the ETH and sends a cross-chain message to the destination chain, enabling seamless cross-chain ETH transfers without the need for asset wrapping.
+
+## Major components
+
+### `SuperchainWETH` Contract
+
+This contract implements the core functionality for wrapping, unwrapping, and cross-chain transfer of ETH. It integrates with the `SuperchainTokenBridge` for interoperable actions.
+* Contract address: `0x4200000000000000000000000000000000000024`
+
+### `ETHLiquidity` Contract
+
+A predeploy contract with a large pool of ETH that provides liquidity for cross-chain transfers. It allows "burning" and "minting" of ETH for cross-chain transfers.
+* Contract address: `0x4200000000000000000000000000000000000025`
+
+### `L2ToL2CrossDomainMessenger` Contract
+
+This predeploy contract facilitates general message passing between different chains in the Superchain. It also securely transfers ERC20 tokens between L2 chains.
+* Contract address: `0x4200000000000000000000000000000000000023`
+
+
+ `SuperchainWETH` implements strict access controls to ensure security (e.g., only `SuperchainWETH` can call `ETHLiquidity` functions).
+
+
+## Next steps
+
+* Explore the [`SuperchainWETH`](https://specs.optimism.io/interop/superchain-weth.html) specs for in-depth implementation details.
+* Learn more about [cross-chain messages](cross-chain-message) and the [SuperchainERC20 token standard](superchain-erc20).
+* Review the [Superchain Interop Explainer](explainer) for answers to common questions about interoperability.
diff --git a/words.txt b/words.txt
index be73f2ed6..bfbf88387 100644
--- a/words.txt
+++ b/words.txt
@@ -11,7 +11,6 @@ Allocs
allocs
altda
ANDI
-Ankr
Apeworx
Arweave
authrpc
@@ -148,7 +147,6 @@ Holesky
holesky
IGNOREPRICE
ignoreprice
-Immunefi
implicity
Inator
inator
@@ -197,7 +195,6 @@ minsuggestedpriorityfee
Mintable
Mintplex
MIPSEVM
-Mitigations
Monitorism
Moralis
Mordor
@@ -291,8 +288,6 @@ Protip
Proxied
proxyd
pseudorandomly
-Pyth
-Pyth's
QRNG
Quicknode
quicknode
@@ -326,9 +321,6 @@ safedb
Schnorr
secp
SELFDESTRUCT
-SEPOLIA
-Sepolia
-sepolia
seqnr
SEQUENCERHTTP
sequencerhttp
@@ -396,7 +388,6 @@ VMDEBUG
vmdebug
VMODULE
vmodule
-voxel
wagmi
Warpcast
xlarge
From e643ab4583cd8749462f1f4aefaba0665ea5bfc6 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Tue, 29 Oct 2024 01:50:23 -0700
Subject: [PATCH 02/13] Update superchain-weth.mdx
---
pages/stack/interop/superchain-weth.mdx | 1 -
1 file changed, 1 deletion(-)
diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx
index ac71d63df..f2547d687 100644
--- a/pages/stack/interop/superchain-weth.mdx
+++ b/pages/stack/interop/superchain-weth.mdx
@@ -77,5 +77,4 @@ This predeploy contract facilitates general message passing between different ch
## Next steps
* Explore the [`SuperchainWETH`](https://specs.optimism.io/interop/superchain-weth.html) specs for in-depth implementation details.
-* Learn more about [cross-chain messages](cross-chain-message) and the [SuperchainERC20 token standard](superchain-erc20).
* Review the [Superchain Interop Explainer](explainer) for answers to common questions about interoperability.
From 6e6901000c329eaf91baffc6e6e257463fd64e39 Mon Sep 17 00:00:00 2001
From: Blessing Krofegha
Date: Tue, 29 Oct 2024 11:25:10 +0100
Subject: [PATCH 03/13] fix lint issues
---
words.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/words.txt b/words.txt
index bfbf88387..00a5dcdd9 100644
--- a/words.txt
+++ b/words.txt
@@ -6,6 +6,7 @@ ADDI
ADDIU
ADDU
airgap
+Sepolia
Allnodes
Allocs
allocs
From 4d87f5c0fa417f8dd1354edb453a7c08edda3f37 Mon Sep 17 00:00:00 2001
From: Blessing Krofegha
Date: Tue, 29 Oct 2024 11:30:56 +0100
Subject: [PATCH 04/13] fix lint spelling issues
---
words.txt | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/words.txt b/words.txt
index 00a5dcdd9..376553b4f 100644
--- a/words.txt
+++ b/words.txt
@@ -1,17 +1,17 @@
-ACCOUNTQUEUE
accountqueue
+ACCOUNTQUEUE
ACCOUNTSLOTS
accountslots
ADDI
ADDIU
ADDU
airgap
-Sepolia
Allnodes
Allocs
allocs
altda
ANDI
+Ankr
Apeworx
Arweave
authrpc
@@ -29,8 +29,8 @@ BLOBPOOL
blobpool
blobspace
blockhash
-blocklists
BLOCKLOGS
+blocklists
blocklogs
BLOCKPROFILERATE
blockprofilerate
@@ -148,6 +148,7 @@ Holesky
holesky
IGNOREPRICE
ignoreprice
+Immunefi
implicity
Inator
inator
@@ -196,6 +197,7 @@ minsuggestedpriorityfee
Mintable
Mintplex
MIPSEVM
+Mitigations
Monitorism
Moralis
Mordor
@@ -289,6 +291,8 @@ Protip
Proxied
proxyd
pseudorandomly
+Pyth
+Pyth's
QRNG
Quicknode
quicknode
@@ -322,6 +326,7 @@ safedb
Schnorr
secp
SELFDESTRUCT
+Sepolia
seqnr
SEQUENCERHTTP
sequencerhttp
@@ -389,6 +394,7 @@ VMDEBUG
vmdebug
VMODULE
vmodule
+voxel
wagmi
Warpcast
xlarge
@@ -397,4 +403,4 @@ xtensibility
ZKPs
ZKVM
Zora
-zora
+zora
\ No newline at end of file
From d653ee1765e05f7683c3b6eb74e404c252d65a5d Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Wed, 30 Oct 2024 16:58:55 -0700
Subject: [PATCH 05/13] address comments
---
pages/stack/interop/superchain-weth.mdx | 23 ++++++++++++-----------
words.txt | 9 ++++++---
2 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx
index f2547d687..544198cb2 100644
--- a/pages/stack/interop/superchain-weth.mdx
+++ b/pages/stack/interop/superchain-weth.mdx
@@ -1,7 +1,7 @@
---
title: SuperchainWETH (Interoperable ETH)
lang: en-US
-description: Learn basic details about the SuperchainWETH or Interoperable ETH.
+description: Learn basic details about SuperchainWETH or Interoperable ETH.
---
import { Callout } from 'nextra/components'
@@ -17,22 +17,23 @@ Superchain WETH or Interoperable ETH is a specialized version of the standard WE
## Features and benefits
* Enables seamless ETH transfers across different chains in the Superchain
-* Minimizes protocol complexity by treating ETH as an ERC-20 token
* Maintains fungibility of ETH across the Superchain
* Provides liquidity for cross-chain transactions
-* Supports interoperability between chains with different native assets (i.e., gas tokens)
* Improves user experience by abstracting complex bridging processes
-
- `SuperchainWETH` requires `SuperchainTokenBridge` integration for full interoperable, cross-chain functionality.
-
-
## How it works
-Interoperable ETH (Superchain WETH) facilitates secure movement of ETH across the Superchain via `crosschainBurn` and `crosschainMint`.
+Superchain WETH (Interoperable ETH) facilitates secure movement of ETH across the Superchain via `crosschainBurn` and `crosschainMint`.
-* **`crosschainBurn`**: Facilitates cross-chain transfers by **burning** WETH. The user sends ETH to the `SuperchainWETH` contract. `SuperchainWETH` interacts with `ETHLiquidity` to burn the ETH and sends a cross-chain message via the `L2ToL2CrossDomainMessenger` to the destination chain.
-* **`crosschainMint`**: Mints WETH on the destination chain after a cross-chain transfer. The user receives ETH or WETH on the destination chain. If the destination is a non-custom gas token chain, ETH is sourced from the `ETHLiquidity` contract.
+* **`crosschainBurn`**: Facilitates cross-chain transfers by **burning** WETH. The cross-chain message is created using the `SendERC20` function on `SuperchainTokenBridge`.
+ * In the deposit step, the user sends their ETH to the `SuperchainWETH` contract, which calls the deposit function on `SuperchainWETH`. This results in the user being given the amount of `SuperchainWETH` equivalent to the amount of ETH they sent (this step is also known as "wrapping" your ETH).
+ * After depositing, the user can call `SuperchainTokenBridge#SendERC20` to transfer any amount of `SuperchainWETH` (within their SuperchainWETH balance) to a recipient on the destination chain.
+ * In `SendERC20`, the `SuperchainTokenBridge` calls `crosschainBurn` and sends a cross-chain message via the `L2ToL2CrossDomainMessenger` to the destination chain.
+* **`crosschainMint`**: Mints WETH on the destination chain after a cross-chain transfer. User first receives WETH then will need to unwrap to standard ETH through a manual call or more automatically using a wrapper contract. After the cross-chain message is processed on the destination chain, `crosschainMint` is called which provides the recipient with `SuperchainWETH` on the destination chain. If the destination is a non-custom gas token chain, ETH is sourced from the `ETHLiquidity` contract.
+
+
+ `crosschainBurn` and `crosschainMint`can only be called by the `SuperchainTokenBridge`.
+
```mermaid
sequenceDiagram
@@ -62,7 +63,7 @@ This contract implements the core functionality for wrapping, unwrapping, and cr
### `ETHLiquidity` Contract
-A predeploy contract with a large pool of ETH that provides liquidity for cross-chain transfers. It allows "burning" and "minting" of ETH for cross-chain transfers.
+A predeploy contract with a large pool of ETH that provides liquidity for cross-chain transfers. It allows "burning" and "minting" of ETH for cross-chain transfers. ETH is associated with bridge ETH from the L1 lockbox, making ETH available to interop chains through a shared lockbox rather than fragemented amongst the existing portal contracts.
* Contract address: `0x4200000000000000000000000000000000000025`
### `L2ToL2CrossDomainMessenger` Contract
diff --git a/words.txt b/words.txt
index 5ce846b7a..b395973a2 100644
--- a/words.txt
+++ b/words.txt
@@ -1,5 +1,5 @@
-accountqueue
ACCOUNTQUEUE
+accountqueue
ACCOUNTSLOTS
accountslots
ADDI
@@ -29,8 +29,8 @@ BLOBPOOL
blobpool
blobspace
blockhash
-BLOCKLOGS
blocklists
+BLOCKLOGS
blocklogs
BLOCKPROFILERATE
blockprofilerate
@@ -118,6 +118,7 @@ forkable
forkchoice
FPVM
FPVMs
+fragemented
Fraxtal
Funct
gameplay
@@ -326,7 +327,9 @@ safedb
Schnorr
secp
SELFDESTRUCT
+SEPOLIA
Sepolia
+sepolia
seqnr
SEQUENCERHTTP
sequencerhttp
@@ -404,4 +407,4 @@ xtensibility
ZKPs
ZKVM
Zora
-zora
\ No newline at end of file
+zora
From 9cffc2e6ef87adef9cf2928fb59dd14daae47023 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Wed, 30 Oct 2024 18:05:43 -0700
Subject: [PATCH 06/13] Update superchain-weth.mdx
---
pages/stack/interop/superchain-weth.mdx | 32 ++++++-------------------
1 file changed, 7 insertions(+), 25 deletions(-)
diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx
index 544198cb2..ee437c326 100644
--- a/pages/stack/interop/superchain-weth.mdx
+++ b/pages/stack/interop/superchain-weth.mdx
@@ -23,37 +23,19 @@ Superchain WETH or Interoperable ETH is a specialized version of the standard WE
## How it works
-Superchain WETH (Interoperable ETH) facilitates secure movement of ETH across the Superchain via `crosschainBurn` and `crosschainMint`.
+Currently, L2-to-L2 ETH transfers between two interoperable chains require four separate transactions:
-* **`crosschainBurn`**: Facilitates cross-chain transfers by **burning** WETH. The cross-chain message is created using the `SendERC20` function on `SuperchainTokenBridge`.
- * In the deposit step, the user sends their ETH to the `SuperchainWETH` contract, which calls the deposit function on `SuperchainWETH`. This results in the user being given the amount of `SuperchainWETH` equivalent to the amount of ETH they sent (this step is also known as "wrapping" your ETH).
- * After depositing, the user can call `SuperchainTokenBridge#SendERC20` to transfer any amount of `SuperchainWETH` (within their SuperchainWETH balance) to a recipient on the destination chain.
- * In `SendERC20`, the `SuperchainTokenBridge` calls `crosschainBurn` and sends a cross-chain message via the `L2ToL2CrossDomainMessenger` to the destination chain.
-* **`crosschainMint`**: Mints WETH on the destination chain after a cross-chain transfer. User first receives WETH then will need to unwrap to standard ETH through a manual call or more automatically using a wrapper contract. After the cross-chain message is processed on the destination chain, `crosschainMint` is called which provides the recipient with `SuperchainWETH` on the destination chain. If the destination is a non-custom gas token chain, ETH is sourced from the `ETHLiquidity` contract.
+1. Wrap `ETH` to `SuperchainWETH`.
+2. Call `SuperchainTokenBridge#SendERC20` to burn `SuperchainWETH` on source chain and relay a message to the destination chain that mints `SuperchainWETH` to the recipient (`crosschainBurn` is used).
+3. Execute the message on the destination chain, triggering `SuperchainTokenBridge#RelayERC20` to mint `SuperchainWETH` to the recipient (`crosschainMint` is used). If the destination is a non-custom gas token chain, ETH is sourced from the `ETHLiquidity` contract.
+4. Unwrap the received `SuperchainWETH` to `ETH`.
+
+Abstraction is a possible future consideration to reduce this process to two transactions, which can be followed in the [design docs](https://github.com/ethereum-optimism/design-docs/pull/146/files).
`crosschainBurn` and `crosschainMint`can only be called by the `SuperchainTokenBridge`.
-```mermaid
-sequenceDiagram
- participant User
- participant SuperchainWETH
- participant ETHLiquidity
- participant L2ToL2CrossDomainMessenger
- participant DestinationChain
-
- User->>SuperchainWETH: Send ETH
- SuperchainWETH->>ETHLiquidity: Burn ETH
- SuperchainWETH->>L2ToL2CrossDomainMessenger: Send cross-chain message
- L2ToL2CrossDomainMessenger->>DestinationChain: Relay message
- DestinationChain->>SuperchainWETH: Call relayETH/relayERC20
- SuperchainWETH->>ETHLiquidity: Source ETH (if non-custom gas token chain)
- SuperchainWETH->>User: Receive ETH/WETH on destination chain
-```
-
-This diagram illustrates the process where the user sends ETH to the `SuperchainWETH` contract which burns the ETH and sends a cross-chain message to the destination chain, enabling seamless cross-chain ETH transfers without the need for asset wrapping.
-
## Major components
### `SuperchainWETH` Contract
From 2370c7d8adc8be5269ace229b58a97269af87dba Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Wed, 30 Oct 2024 18:12:45 -0700
Subject: [PATCH 07/13] Update superchain-weth.mdx
---
pages/stack/interop/superchain-weth.mdx | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx
index ee437c326..8d1e7a680 100644
--- a/pages/stack/interop/superchain-weth.mdx
+++ b/pages/stack/interop/superchain-weth.mdx
@@ -25,10 +25,10 @@ Superchain WETH or Interoperable ETH is a specialized version of the standard WE
Currently, L2-to-L2 ETH transfers between two interoperable chains require four separate transactions:
-1. Wrap `ETH` to `SuperchainWETH`.
-2. Call `SuperchainTokenBridge#SendERC20` to burn `SuperchainWETH` on source chain and relay a message to the destination chain that mints `SuperchainWETH` to the recipient (`crosschainBurn` is used).
-3. Execute the message on the destination chain, triggering `SuperchainTokenBridge#RelayERC20` to mint `SuperchainWETH` to the recipient (`crosschainMint` is used). If the destination is a non-custom gas token chain, ETH is sourced from the `ETHLiquidity` contract.
-4. Unwrap the received `SuperchainWETH` to `ETH`.
+1. Wrap `ETH` to `SuperchainWETH`.
+2. Call `SuperchainTokenBridge#SendERC20` to burn `SuperchainWETH` on source chain and relay a message to the destination chain that mints `SuperchainWETH` to the recipient (`crosschainBurn` is used).
+3. Execute the message on the destination chain, triggering `SuperchainTokenBridge#RelayERC20` to mint `SuperchainWETH` to the recipient (`crosschainMint` is used). If the destination is a non-custom gas token chain, ETH is sourced from the `ETHLiquidity` contract.
+4. Unwrap the received `SuperchainWETH` to `ETH`.
Abstraction is a possible future consideration to reduce this process to two transactions, which can be followed in the [design docs](https://github.com/ethereum-optimism/design-docs/pull/146/files).
@@ -40,17 +40,20 @@ Abstraction is a possible future consideration to reduce this process to two tra
### `SuperchainWETH` Contract
-This contract implements the core functionality for wrapping, unwrapping, and cross-chain transfer of ETH. It integrates with the `SuperchainTokenBridge` for interoperable actions.
+This contract implements the core functionality for wrapping, unwrapping, and cross-chain transfer of ETH. It integrates with the `SuperchainTokenBridge` for interoperable actions.
+
* Contract address: `0x4200000000000000000000000000000000000024`
### `ETHLiquidity` Contract
A predeploy contract with a large pool of ETH that provides liquidity for cross-chain transfers. It allows "burning" and "minting" of ETH for cross-chain transfers. ETH is associated with bridge ETH from the L1 lockbox, making ETH available to interop chains through a shared lockbox rather than fragemented amongst the existing portal contracts.
+
* Contract address: `0x4200000000000000000000000000000000000025`
### `L2ToL2CrossDomainMessenger` Contract
-This predeploy contract facilitates general message passing between different chains in the Superchain. It also securely transfers ERC20 tokens between L2 chains.
+This predeploy contract facilitates general message passing between different chains in the Superchain. It also securely transfers ERC20 tokens between L2 chains.
+
* Contract address: `0x4200000000000000000000000000000000000023`
From fb499632985c4f5163d2908323ed03d7eff934b5 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Wed, 30 Oct 2024 18:31:50 -0700
Subject: [PATCH 08/13] Update superchain-weth.mdx
---
pages/stack/interop/superchain-weth.mdx | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx
index 8d1e7a680..abeb86e0e 100644
--- a/pages/stack/interop/superchain-weth.mdx
+++ b/pages/stack/interop/superchain-weth.mdx
@@ -30,7 +30,23 @@ Currently, L2-to-L2 ETH transfers between two interoperable chains require four
3. Execute the message on the destination chain, triggering `SuperchainTokenBridge#RelayERC20` to mint `SuperchainWETH` to the recipient (`crosschainMint` is used). If the destination is a non-custom gas token chain, ETH is sourced from the `ETHLiquidity` contract.
4. Unwrap the received `SuperchainWETH` to `ETH`.
+
Abstraction is a possible future consideration to reduce this process to two transactions, which can be followed in the [design docs](https://github.com/ethereum-optimism/design-docs/pull/146/files).
+
+
+```mermaid
+sequenceDiagram
+ participant User
+ participant Source Chain
+ participant Cross-Chain Messenger
+ participant Destination Chain
+
+ User->>Source Chain: 1. Wrap ETH to SuperchainWETH
+ Source Chain->>Cross-Chain Messenger: 2. Burn SuperchainWETH and relay message
+ Cross-Chain Messenger->>Destination Chain: 3. Mint SuperchainWETH to recipient
+ User->>Destination Chain: 4. Unwrap SuperchainWETH to ETH
+```
+_Figure 1: Superchain WETH Transfer Process between two interoperable L2 chains._
`crosschainBurn` and `crosschainMint`can only be called by the `SuperchainTokenBridge`.
From e43dd9597c5693bc89374d0b866138dda2fc5b6b Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Thu, 31 Oct 2024 08:37:17 -0700
Subject: [PATCH 09/13] Update superchain-weth.mdx
---
pages/stack/interop/superchain-weth.mdx | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx
index abeb86e0e..6b6744425 100644
--- a/pages/stack/interop/superchain-weth.mdx
+++ b/pages/stack/interop/superchain-weth.mdx
@@ -49,7 +49,11 @@ sequenceDiagram
_Figure 1: Superchain WETH Transfer Process between two interoperable L2 chains._
- `crosschainBurn` and `crosschainMint`can only be called by the `SuperchainTokenBridge`.
+ `crosschainBurn` and `crosschainMint`can only be called by the `SuperchainTokenBridge`.
+
+
+
+`SuperchainTokenBridge` only has the ability to rebalance the asset across chains. It cannot mint or increase/decrease the total circulating supply.
## Major components
From b8dd458abb1f53846c89ca881c8c7808566b900b Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Thu, 31 Oct 2024 08:39:38 -0700
Subject: [PATCH 10/13] Update words.txt
---
words.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/words.txt b/words.txt
index b395973a2..b9373b1dd 100644
--- a/words.txt
+++ b/words.txt
@@ -299,6 +299,7 @@ Quicknode
quicknode
quickstarts
RANDAO
+rebalance
Regenesis
regenesis
REJOURNAL
From 022489446ef535f505983587c87719b2edfd140a Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Thu, 31 Oct 2024 09:01:47 -0700
Subject: [PATCH 11/13] language updates
---
pages/stack/interop/superchain-weth.mdx | 2 +-
words.txt | 4 ----
2 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx
index 6b6744425..e66d1bf1d 100644
--- a/pages/stack/interop/superchain-weth.mdx
+++ b/pages/stack/interop/superchain-weth.mdx
@@ -66,7 +66,7 @@ This contract implements the core functionality for wrapping, unwrapping, and cr
### `ETHLiquidity` Contract
-A predeploy contract with a large pool of ETH that provides liquidity for cross-chain transfers. It allows "burning" and "minting" of ETH for cross-chain transfers. ETH is associated with bridge ETH from the L1 lockbox, making ETH available to interop chains through a shared lockbox rather than fragemented amongst the existing portal contracts.
+A predeploy contract with a large pool of ETH that provides liquidity for cross-chain transfers. It allows "burning" and "minting" of ETH for cross-chain transfers. ETH is associated with bridge ETH from the L1 lockbox, making ETH available to interop chains through a shared lockbox rather than fragmented amongst the existing portal contracts.
* Contract address: `0x4200000000000000000000000000000000000025`
diff --git a/words.txt b/words.txt
index b9373b1dd..9820fdfc1 100644
--- a/words.txt
+++ b/words.txt
@@ -1,4 +1,3 @@
-ACCOUNTQUEUE
accountqueue
ACCOUNTSLOTS
accountslots
@@ -118,7 +117,6 @@ forkable
forkchoice
FPVM
FPVMs
-fragemented
Fraxtal
Funct
gameplay
@@ -328,7 +326,6 @@ safedb
Schnorr
secp
SELFDESTRUCT
-SEPOLIA
Sepolia
sepolia
seqnr
@@ -408,4 +405,3 @@ xtensibility
ZKPs
ZKVM
Zora
-zora
From 20a61c88f9d4380b9a7cb80acb7190e10e67f3e4 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Thu, 31 Oct 2024 09:09:35 -0700
Subject: [PATCH 12/13] relocate superchaintokenbridge callout
---
pages/stack/interop/superchain-weth.mdx | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx
index e66d1bf1d..bf6740782 100644
--- a/pages/stack/interop/superchain-weth.mdx
+++ b/pages/stack/interop/superchain-weth.mdx
@@ -21,6 +21,10 @@ Superchain WETH or Interoperable ETH is a specialized version of the standard WE
* Provides liquidity for cross-chain transactions
* Improves user experience by abstracting complex bridging processes
+
+`SuperchainTokenBridge` only has the ability to rebalance the asset across chains. It cannot mint or increase/decrease the total circulating supply.
+
+
## How it works
Currently, L2-to-L2 ETH transfers between two interoperable chains require four separate transactions:
@@ -52,10 +56,6 @@ _Figure 1: Superchain WETH Transfer Process between two interoperable L2 chains.
`crosschainBurn` and `crosschainMint`can only be called by the `SuperchainTokenBridge`.
-
-`SuperchainTokenBridge` only has the ability to rebalance the asset across chains. It cannot mint or increase/decrease the total circulating supply.
-
-
## Major components
### `SuperchainWETH` Contract
From 499d55d9227686866aae3f09aa2679a1742e14a4 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Thu, 31 Oct 2024 10:23:40 -0700
Subject: [PATCH 13/13] Apply suggestions from code review
Co-authored-by: Blessing Krofegha
---
pages/stack/interop/superchain-weth.mdx | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx
index bf6740782..3799681ba 100644
--- a/pages/stack/interop/superchain-weth.mdx
+++ b/pages/stack/interop/superchain-weth.mdx
@@ -22,7 +22,7 @@ Superchain WETH or Interoperable ETH is a specialized version of the standard WE
* Improves user experience by abstracting complex bridging processes
-`SuperchainTokenBridge` only has the ability to rebalance the asset across chains. It cannot mint or increase/decrease the total circulating supply.
+ The `SuperchainTokenBridge` can only rebalance assets across chains. It cannot mint or increase/decrease the total circulating supply.
## How it works
@@ -50,7 +50,7 @@ sequenceDiagram
Cross-Chain Messenger->>Destination Chain: 3. Mint SuperchainWETH to recipient
User->>Destination Chain: 4. Unwrap SuperchainWETH to ETH
```
-_Figure 1: Superchain WETH Transfer Process between two interoperable L2 chains._
+_Figure 1: Superchain WETH transfer process between two interoperable L2 chains._
`crosschainBurn` and `crosschainMint`can only be called by the `SuperchainTokenBridge`.
@@ -58,19 +58,19 @@ _Figure 1: Superchain WETH Transfer Process between two interoperable L2 chains.
## Major components
-### `SuperchainWETH` Contract
+### `SuperchainWETH` contract
This contract implements the core functionality for wrapping, unwrapping, and cross-chain transfer of ETH. It integrates with the `SuperchainTokenBridge` for interoperable actions.
* Contract address: `0x4200000000000000000000000000000000000024`
-### `ETHLiquidity` Contract
+### `ETHLiquidity` contract
A predeploy contract with a large pool of ETH that provides liquidity for cross-chain transfers. It allows "burning" and "minting" of ETH for cross-chain transfers. ETH is associated with bridge ETH from the L1 lockbox, making ETH available to interop chains through a shared lockbox rather than fragmented amongst the existing portal contracts.
* Contract address: `0x4200000000000000000000000000000000000025`
-### `L2ToL2CrossDomainMessenger` Contract
+### `L2ToL2CrossDomainMessenger` contract
This predeploy contract facilitates general message passing between different chains in the Superchain. It also securely transfers ERC20 tokens between L2 chains.