OP Stack
Interoperable ETH
Interop is currently in active development and not yet ready for production use. The information provided here may change frequently.

We recommend checking back regularly for the most up-to-date information.

Interoperable ETH

InteroperableETH enables seamless ETH transfers across Superchain blockchains. It is implemented using three key contracts:

InteroperableETH 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
  • Maintains fungibility of ETH across the Superchain
  • Provides liquidity for cross-chain transactions
  • Improves user experience by abstracting complex bridging processes

How it works

Initiating message

  1. The user (or a contract operating on a user's behalf) calls SuperchainWETH.sendETH with a destination address and a chainId. ETH, in the amount to transfer must be attached to this call.

  2. SuperchainWETH transfers the specified ETH amount to ETHLiquidity, removing it from circulation on the source chain.

  3. SuperchainWETH on the source chain sends a relayETH (opens in a new tab) message to SuperchainWETH on the destination chain using the L2ToL2CrossDomainMessenger.

Executing message

  1. 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, a relayer submits the transaction, since the user does not yet have ETH on the destination chain.

  2. L2ToL2CrossDomainMessenger on the destination chain calls SuperchainWETH with the following details:

  • Source of the ETH

  • Destination address

  • Amount of ETH

    SuperchainWETH performs several sanity checks:

    • The relayETH call must originate from L2ToL2CrossDomainMessenger.
    • The interop message must have been sent by SuperchainWETH
  1. SuperchainWETH withdraws the specified amount of ETH from ETHLiquidity. Only SuperchainWETH can withdraw from ETHLiquidity, ensuring that the ETH is correctly reintroduced into circulation on the destination chain.

  2. SuperchainWETH uses SafeSend (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.

StepUser on L1LockboxUser on chain AETHLiquidity on chain AUser on chain BETHLiquidity on chain B
1720001000000100000
2420331000000100000
3420321000010100000
442032100001199999
542032100001099999
652022100001099999
  1. The initial state. The user has 7 ETH on L1, and nothing on chains A and B.

  2. 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.

  3. The user sent the initiating message to SuperchainWETH on chain A, along with 1 ETH to bridge to chain B. This 1 ETH is sent to ETHLiquidity on chain A.

  4. Somebody (the user, a relayer action on behalf of the user, etc.) sent the corresponding executing message to chain B. SuperchainWETH transfers 1 ETH from ETHLiquidity on chain B to the user.

  5. 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.

  6. 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