Skip to content
Lattice

ISuperchainETHBridgeAdapter

Git Source

Title: ISuperchainETHBridgeAdapter

Authors: David Dada <daveproxy80@gmail.com> (https://github.com/dadadave80), Modified from Optimism (https://github.com/ethereum-optimism/optimism)

Surface of the OP Stack SuperchainETHBridge interop adapter facet: a thin, OUTBOUND-ONLY payable passthrough that forwards msg.value to the canonical SuperchainETHBridge predeploy (0x4200000000000000000000000000000000000024) to bridge native ETH to another Superchain chain.

Native-ETH interop ONLY (Superchain EVM chains, bare chainId) — this is NOT the removed SuperchainTokenBridge/SuperchainERC20 model (which OP dropped from contracts after v5.0.0), and NOT an IERC7786GatewaySource. The adapter holds no ETH and has no inbound surface: the destination relayETH is executed by the messenger on the predeploy itself, which force-sends ETH straight to the recipient. Stateless — the predeploy address is a compile-time constant, so there is no config, no trusted-remote registry, and no admin surface.

Functions

bridge

The fixed SuperchainETHBridge predeploy this adapter forwards to (0x4200000000000000000000000000000000000024).

function bridge() external pure returns (address);

Returns

NameTypeDescription
<none>address

sendETH

Bridges msg.value native ETH to to on Superchain chain chainId via the predeploy.

function sendETH(address to, uint256 chainId) external payable returns (bytes32 msgHash);

Parameters

NameTypeDescription
toaddressThe recipient on the destination chain (must be non-zero).
chainIduint256The destination chain id.

Returns

NameTypeDescription
msgHashbytes32The L2ToL2CrossDomainMessenger message hash of the relay message.

Events

ETHSent

Emitted when native ETH is sent toward a destination Superchain chain.

event ETHSent(address indexed from, address indexed to, uint256 amount, uint256 indexed chainId, bytes32 msgHash);

Parameters

NameTypeDescription
fromaddressThe caller that funded the bridge (msg.sender).
toaddressThe recipient on the destination chain.
amountuint256The ETH amount bridged (msg.value).
chainIduint256The destination chain id.
msgHashbytes32The L2ToL2CrossDomainMessenger message hash returned by the predeploy.

Errors

InvalidRecipient

A zero recipient address was supplied.

error InvalidRecipient();

ZeroValue

A zero msg.value was supplied (nothing to bridge).

error ZeroValue();

SameChain

The destination chain is this chain — bridging to the local chain would burn ETH with an unrelayable message (the messenger rejects same-chain sends); reject it early with a clear error.

error SameChain();