Superchain ETH Bridge
This is an explanation of how interop ETH works. You can find a step by step tutorial here.
InteroperableETH enables seamless ETH transfers across Superchain blockchains. It is implemented using three key contracts:
SuperchainETHBridge(opens in a new tab): A bridge contract that facilitates ETH transfers between Superchain blockchains.ETHLiquidity(opens in a new tab): A liquidity provider for ETH transfers.SuperchainETHBridgeuses this contract as a liquidity repository to ensure ETH availability on the destination chain.L2ToL2CrossDomainMessenger(opens in a new tab): A messaging contract that facilitates cross-chain communication.
Superchain ETH Bridge deposits ETH into the ETHLiquidity contract on the source chain and withdraws an equivalent amount on the destination chain.
This mechanism improves capital efficiency and eliminates liquidity fragmentation and poor user experiences caused by asset wrapping or reliance on liquidity pools.
Features and benefits
- Enables seamless ETH transfers across different chains in the Superchain interop cluster
- Maintains fungibility of ETH across the Superchain interop cluster
- Provides liquidity for cross-chain transactions
- Improves user experience by abstracting complex bridging processes
How it works
Initiating message
-
The user (or a contract operating on a user's behalf) calls
SuperchainETHBridge.sendETHwith a destination address and a chainId. ETH, in the amount to transfer must be attached to this call. -
SuperchainETHBridgetransfers the specified ETH amount toETHLiquidity, removing it from circulation on the source chain. -
SuperchainETHBridgeon the source chain sends arelayETH(opens in a new tab) message toSuperchainETHBridgeon the destination chain using theL2ToL2CrossDomainMessenger.
Executing message
-
An off-chain entity submits a transaction to execute the message. Any address can submit this transaction, but it must have ETH on the destination chain. Typically, this would be the chain's autorelayer.
-
L2ToL2CrossDomainMessengeron the destination chain callsSuperchainETHBridgewith the following details:- Source of the ETH
- Destination address
- Amount of ETH
SuperchainETHBridgeperforms several sanity checks:- The
relayETHcall must originate fromL2ToL2CrossDomainMessenger. - The interop message must have been sent by
SuperchainETHBridge
-
SuperchainETHBridgewithdraws the specified amount of ETH fromETHLiquidity. OnlySuperchainETHBridgecan withdraw fromETHLiquidity, ensuring that the ETH is correctly reintroduced into circulation on the destination chain. -
SuperchainETHBridgeusesSafeSend(opens in a new tab) to send ETH. This ensures that even if the destination is a smart contract, its custom logic is not executed. This behavior differs from standard ETH transfers (opens in a new tab), where smart contracts can trigger custom logic upon receiving ETH.
L1 Treasury
Every ETH in circulation on the Superchain—excluding ETH held by ETHLiquidity—must be backed by ETH on L1.
This is enforced by a lockbox contract on L1, which holds all ETH bridged to Superchain interop cluster chains that has not yet been withdrawn. New ETH can only be minted on L2 when it is locked on L1, and it is burned on L2 before it can be released from the lockbox.
Here is an example of how this works.
| Step | User on L1 | Lockbox | User on chain A | ETHLiquidity on chain A | User on chain B | ETHLiquidity on chain B |
|---|---|---|---|---|---|---|
| 1 | 7 | 200 | 0 | 100000 | 0 | 100000 |
| 2 | 4 | 203 | 3 | 100000 | 0 | 100000 |
| 3 | 4 | 203 | 2 | 100001 | 0 | 100000 |
| 4 | 4 | 203 | 2 | 100001 | 1 | 99999 |
| 5 | 4 | 203 | 2 | 100001 | 0 | 99999 |
| 6 | 5 | 202 | 2 | 100001 | 0 | 99999 |
-
The initial state. The user has 7 ETH on L1, and nothing on chains A and B.
-
The user bridges 3 ETH to chain A. The user sends 3 ETH on L1 to the bridge, which is locked in the lockbox. The bridge on chain A then mints 3 ETH for the user.
-
The user sent the initiating message to
SuperchainETHBridgeon chain A, along with 1 ETH to bridge to chain B. This 1 ETH is sent toETHLiquidityon chain A. -
Somebody (the user, a relayer action on behalf of the user, etc.) sent the corresponding executing message to chain B.
SuperchainETHBridgetransfers 1 ETH fromETHLiquidityon chain B to the user. -
The user decides to withdraw 1 ETH from chain B back into L1. 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. The user starts with an initiating message on chain B, which burns 1 ETH and sends a message to L1.
-
After the week long challenge period, the user finalizes the withdrawal on L1. The lock box releases 1 ETH, which is then sent to the user.
Next steps
- Build a revolutionary app that uses multiple blockchains within the Superchain.
- Learn about SuperchainERC20.
- Practice transferring ETH across chains using Superchain interop.