Interop message passing overview
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.
This guide provides an overview of cross-chain message passing with the OP Stack. A cross-chain message applies to any message sent across a chain.
Anatomy of a cross-chain message
To send a cross-chain message on the Superchain using Superchain interoperability, these two aspects must be in place:
- Each interoperable chain runs a verifying node for each chain in the interoperable set.
- Each cross-chain message has an initiating transaction on the source chain and a finalizing transaction on the destination chain.
- First/initiating transaction: is submitted to the source chain and emits an event that can be consumed on a destination chain.
- Second/finalizing transaction: is submitted to a destination chain, where the block builder should only include it if certain that the first transaction was included in the source chain. The block builder can use OP-Supervisor to determine the integrity of the initiating message. Anyone can submit the second transaction.
There is no strict requirement that the executing message is ever submitted. See the specs for details on tracing the executing message event (opens in a new tab).

In the example above, Ox123
sends 1 OP from OP Mainnet to Base, but this applies to any asset using the SuperchainERC20 token standard.
How it works
The Superchain uses a pull-based event system for cross-chain communication. Messages are sent through the L2ToL2CrossDomainMessenger
contract, which provides a secure and standardized way to pass information between chains.
The following diagram illustrates how messages flow between chains through the L2ToL2CrossDomainMessenger
contract, which acts as a bridge for cross-chain communication. When a contract on the source chain initiates a message, it's processed through several stages before reaching its destination, ensuring secure and reliable message delivery.
Cross-chain messaging involves four main phases:
-
Message Creation: The source chain contract emits an event containing the message data and destination information. This event serves as the initiating message that will be relayed across chains.
-
Message Serialization: The messenger contract converts the event data into a standardized format that can be consistently processed across different chains in the Superchain.
-
Identifier Creation: A unique identifier is generated for the message, containing information about its
origin
,timestamp
, and othermetadata
. This identifier helps track and verify the message. -
Message Execution: The destination chain receives and processes the message, executing any associated actions or state changes specified in the original message.
For detailed implementation steps and code examples, see our message passing implementation guide (opens in a new tab).
Common Use Cases
- Simple messages between identical contracts
- Complex multi-contract interactions
- Cross-chain state synchronization
- Token transfers and bridging
For a practical example, see our cross-chain ping pong tutorial (opens in a new tab).
Next steps
- Read about the anatomy of a cross-chain message
- Try Supersim for testing cross-chain messages locally
- Learn about manually relaying messages (opens in a new tab)