You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: pages/stack/interop/superchain-weth.mdx
+24-26Lines changed: 24 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,10 +14,10 @@ import { InteropCallout } from '@/components/WipCallout'
14
14
15
15
InteroperableETH is implemented using three contracts:
16
16
17
-
-[`SuperchainWETH`](https://github.com/ethereum-optimism/optimism/blob/develop/contracts-bedrock/src/L2/SuperchainWETH.sol) is the bridge that lets you move ETH from one Superchain blockchain to another.
18
-
-[`ETHLiquidity`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/ETHLiquidity.sol), which serves as a liquidity provider for ETH transfers.
19
-
It is used by `SuperchainWETH` as a liquidity repository to be able to provide ETH on the destination chain when transferring.
20
-
-[`L2ToL2CrossDomainMessenger`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/L2ToL2CrossDomainMessenger.sol) is used to [pass messages between different chains](./message-passing).
17
+
*[`SuperchainWETH`](https://github.com/ethereum-optimism/optimism/blob/develop/contracts-bedrock/src/L2/SuperchainWETH.sol) is the bridge that lets you move ETH from one Superchain blockchain to another.
18
+
*[`ETHLiquidity`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/ETHLiquidity.sol), which serves as a liquidity provider for ETH transfers.
19
+
It is used by `SuperchainWETH` as a liquidity repository to be able to provide ETH on the destination chain when transferring.
20
+
*[`L2ToL2CrossDomainMessenger`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/L2ToL2CrossDomainMessenger.sol) is used to [pass messages between different chains](./message-passing).
21
21
22
22
InteroperableETH works by depositing ETH on the source chain's `ETHLiquidity` and withdrawing an equivalent amount on the destination chain.
23
23
This approach addresses issues such as liquidity fragmentation and poor user experiences caused by asset wrapping or reliance on liquidity pools.
@@ -97,7 +97,6 @@ sequenceDiagram
97
97
7.`SuperchainWETH` uses [`SafeSend`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/universal/SafeSend.sol) to send the ETH.
98
98
This means that even if the destination is a smart contract, its custom logic does not get called, [in contrast to normal ETH transfers](https://docs.base.org/base-learn/docs/address-and-payable/#receiving-ether-with-payable-addresses).
99
99
100
-
101
100
## L1 Treasury
102
101
103
102
Every ETH in circulation on the Superchain (all the ETH except for those held by `ETHLiquidity`) needs to be backed by ETH held on L1.
@@ -107,33 +106,32 @@ New ETH can only be minted on L2 when it is locked on L1, and it is burned on L2
107
106
Here is an example of how this works.
108
107
109
108
| Step | User on L1 | Lockbox | User on chain A | ETHLiquidity on chain A | User on chain B | ETHLiquidity on chain B |
110
-
| -: | -: | -: | -:| -: | -: | -: |
111
-
| 1 | 7 | 200 | 0 | 100000 | 0 | 100000
112
-
| 2 | 4 | 203 | 3 | 100000 | 0 | 100000
113
-
| 3 | 4 | 203 | 2 | 100001 | 0 | 100000
114
-
| 4 | 4 | 203 | 2 | 100001 | 1 | 99999
115
-
| 5 | 4 | 203 | 2 | 100001 | 0 | 99999
116
-
| 6 | 5 | 202 | 2 | 100001 | 0 | 99999
117
-
118
-
1. The initial state. The user has 7 ETH on L1, and nothing on chains A and B.
The user sends 3 ETH on L1 to the bridge, which is locked in the lockbox.
122
-
The bridge on chain A then mints 3 ETH for the user.
117
+
1. The initial state. The user has 7 ETH on L1, and nothing on chains A and B.
123
118
124
-
3. The user sent the initiating message to `SuperchainWETH` on chain A, along with 1 ETH to bridge to chain B.
125
-
This 1 ETH is sent to `ETHLiquidity` on chain A.
119
+
2. The user bridges 3 ETH to chain A.
120
+
The user sends 3 ETH on L1 to the bridge, which is locked in the lockbox.
121
+
The bridge on chain A then mints 3 ETH for the user.
126
122
127
-
4. Somebody (the user, a relayer action on behalf of the user, etc.) sent the corresponding executing message to chain B.
128
-
`SuperchainWETH` transfers 1 ETH from `ETHLiquidity` on chain B to the user.
123
+
3. The user sent the initiating message to `SuperchainWETH` on chain A, along with 1 ETH to bridge to chain B.
124
+
This 1 ETH is sent to `ETHLiquidity` on chain A.
129
125
130
-
5. The user decides to withdraw 1 ETH from chain B back into L1.
131
-
Normally, a user would do this through a third-party bridge, which is faster and usually cheaper, but for illustration purposes this user uses the standard OP bridge.
132
-
The user starts with an initiating message on chain B, which burns 1 ETH and sends a message to L1.
126
+
4. Somebody (the user, a relayer action on behalf of the user, etc.) sent the corresponding executing message to chain B.
127
+
`SuperchainWETH` transfers 1 ETH from `ETHLiquidity` on chain B to the user.
133
128
134
-
6. After the week long [challenge period](/connect/resources/glossary#challenge-period), the user finalizes the withdrawal on L1.
135
-
The lock box releases 1 ETH, which is then sent to the user.
129
+
5. The user decides to withdraw 1 ETH from chain B back into L1.
130
+
Normally, a user would do this through a third-party bridge, which is faster and usually cheaper, but for illustration purposes this user uses the standard OP bridge.
131
+
The user starts with an initiating message on chain B, which burns 1 ETH and sends a message to L1.
136
132
133
+
6. After the week long [challenge period](/connect/resources/glossary#challenge-period), the user finalizes the withdrawal on L1.
134
+
The lock box releases 1 ETH, which is then sent to the user.
0 commit comments