Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 14 additions & 12 deletions pages/stack/interop.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Interop
title: Superchain interop
description: Documentation covering Cross Chain Message, Explainer, Message Passing, Op Supervisor, Superchain Erc20, Superchain Weth, Supersim, Transfer Superchainerc20 in the Interop section of the OP Stack ecosystem.
lang: en-US
---
Expand All @@ -8,32 +8,34 @@ import { Card, Cards } from 'nextra/components'

# Interop

Documentation covering Cross Chain Message, Explainer, Message Passing, Op Supervisor, Superchain Erc20, Superchain Weth, Supersim, Transfer Superchainerc20 in the Interop section of the OP Stack ecosystem.
Documentation covering explainers and tutorials for using Superchain interop.

<Cards>
<Card title="Interoperability explainer" href="/stack/interop/explainer" icon={<img src="/img/icons/shapes.svg" />} />
<Card title="Superchain interop explainer" href="/stack/interop/explainer" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Architecture" href="/stack/interop/explainer#interoperability-architecture" icon={<img src="/img/icons/shapes.svg" />} />
<Card title="Superchain interop architecture" href="/stack/interop/explainer#superchain-interoperability-architecture" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Interop message passing overview" href="/stack/interop/message-passing" icon={<img src="/img/icons/shapes.svg" />} />
<Card title="Superchain interop message passing" href="/stack/interop/message-passing" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Superchain interop compatible tokens" href="/stack/interop/token-compatible" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="OP Supervisor" href="/stack/interop/op-supervisor" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Supersim multichain development environment" href="/stack/interop/tools/supersim" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Interop devnet" href="/stack/interop/tools/devnet" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Interoperability predeploys" href="/stack/interop/predeploy" icon={<img src="/img/icons/shapes.svg" />} />
<Card title="Superchain interop devnet" href="/stack/interop/tools/devnet" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Interop assets" href="/stack/interop/tools" icon={<img src="/img/icons/shapes.svg" />} />
<Card title="Superchain interop predeploys" href="/stack/interop/predeploy" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="SuperchainERC20" href="/stack/interop/superchain-erc20" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="SuperchainWETH (Interoperable ETH)" href="/stack/interop/superchain-weth" icon={<img src="/img/icons/shapes.svg" />} />
<Card title="Superchain ETH" href="/stack/interop/superchain-weth" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Tutorials" href="/stack/interop/tutorials" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Safe interoperability measures" href="/stack/interop/interop-security" icon={<img src="/img/icons/shapes.svg" />} />
<Card title="Tools" href="/stack/interop/tools" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Superchain interop transaction safety" href="/stack/interop/interop-security" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Interop reorg awareness" href="/stack/interop/reorg" />
<Card title="Superchain interop reorg awareness" href="/stack/interop/reorg" icon={<img src="/img/icons/shapes.svg" />}/>
</Cards>
5 changes: 3 additions & 2 deletions pages/stack/interop/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
"predeploy": "Superchain interop predeploys",
"message-passing": "Superchain interop message passing",
"op-supervisor": "OP Supervisor",
"superchain-weth": "Interoperable ETH",
"superchain-weth": "Superchain ETH",
"superchain-erc20": "SuperchainERC20",
"reorg": "Interop reorg awareness",
"token-compatible": "Superchain interop compatible tokens",
"reorg": "Superchain interop reorg awareness",
"interop-security": "Superchain interop transaction safety",
"tools": "Tools",
"tutorials": "Tutorials"
Expand Down
108 changes: 108 additions & 0 deletions pages/stack/interop/token-compatible.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
---
title: Superchain interop compatible tokens
lang: en-US
description: Learn how different tokens can use Superchain interop to benefit from secure, low-latency, cross-chain composability.
topic: Superchain Interoperability
personas: ["Developer", "Architect"]
categories: ["Interoperability", "Token"]
content_type: guide
---

import { Callout } from 'nextra/components'
import { InteropCallout } from '@/components/WipCallout'

<InteropCallout />

# Superchain interop compatible tokens

Superchain interop enables **trust-minimized, 1-block latency cross-chain composability** on the [Superchain interop cluster](/stack/interop/explainer#superchain-interop-cluster).
The recommended approach for giving tokens Superchain interop capabilities is using [SuperchainERC20](/stack/interop/superchain-erc20), but there are other options depending on your needs.

## How to enable cross-chain token interoperability

Compared to traditional ERC-20 tokens deployments on a single blockchain, cross-chain tokens can move between different blockchains through giving `crosschainMint` and `crosschainBurn` permissions to a verification mechanism (such as a bridge protocol) that validates when tokens should be burned on one chain and minted on another.

For example when transferring a `SuperchainERC20` between chains in the Superchain interop cluster, the Superchain interop protocol ensures the tokens are burned on the source chain before authorizing the corresponding mint on the destination chain.

When enabling cross-chain functionality for your token, it is essential to evaluate the security, cost, and latency of the respective verification mechanism.


## Why use Superchain interop to enable cross-chain token interoperability

Apps built with Superchain interop can essentially teleport tokens from one blockchain to another, providing users with a secure, low-latency, and capitally-efficient way to transact on the Superchain.

3rd party interop solutions for L2s often wait for Ethereum finalization (15min+) when transferring tokens from an L2 to mitigate the double spend problem. However, that solution results in high latency and poor user experience. Superchain interop is [reorg aware](./reorg) - this means users can transfer assets across chains in the Superchain with 1-block latency, and should a reorg happen, either both the source and destination transactions would remain, or both of them would revert. In every case, there is no window of opportunity to double spend. Low latency interop that mitigates the double spend problem is now possible with Superchain interop.

## SuperchainERC20

`SuperchainERC20` is a simple and trust-minimized way to enable token interoperability within the Superchain. You can learn more about `SuperchainERC20` [here](/stack/interop/superchain-erc20).

* **Security:** Fault Proofs secure Superchain interop end to end. No third-party dependencies to enable token interoperability.
* **Latency:** 1-block latency within the Superchain interop cluster.
* **Cost:** Gas on source chain and destination chain.
* **Cross-chain address:** Deterministic, no token registry required.
* **Supported ecosystem:** Superchain interop cluster.


## Considerations when using other token implementations

While the `SuperchainERC20` is a trust-minimized way to enable for giving your token Superchain interop capabilities, other token implementations can also benefit from Superchain interop. If you choose a token standard other than SuperchainERC20 here are a few things to consider:

#### ERC-7802
[`ERC-7802`](https://ethereum-magicians.org/t/erc-7802-crosschain-token-interface/21508) is a minimal cross-chain mint/burn interface designed to establish a common standard across the EVM ecosystem for tokens to communicate cross-chain. Adding this interface to your token ensures downstream integrators can easily support your token.

#### SuperchainTokenBridge and L2ToL2CrossDomainMessenger
Tokens can benefit from Superchain interop by either giving cross-chain mint/burn permissions to the `SuperchainTokenBridge` or the `L2ToL2CrossDomainMessenger`.

The [`SuperchainTokenBridge`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/SuperchainTokenBridge.sol) is an abstraction built on top of the [`L2ToL2CrossDomainMessenger`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/L2ToL2CrossDomainMessenger.sol) that facilitates token bridging using Superchain interop, but requires the token address be deterministic across chains.

Alternatively, you can build a custom bridge using the `L2ToL2CrossDomainMessenger` to facilitate cross-chain mint/burns that **does not** require a deterministic address across chains but does require the token issuer to manage a token registry per chain.

#### Weakest link scenario

If you allowlist both Superchain interop and a third-party verification mechanism, your token's security is only as strong as the weakest verification mechanism.

## Alternative token implementations

### xERC20 (ERC-7281)

xERC20 tokens are crosschain ERC-20 which can be transferred across chains by allowing the token owner to approve which bridges can mint/burn their token and the ability to set rate limits per bridge. You can learn more about xERC20 and Superchain interop [here](https://github.com/ethereum-optimism/design-docs/pull/203).

* **Security:** Variable due to weakest-link scenario based on allowlisted verification mechanisms.
* **Latency:** 1-block latency in the Superchain. Outside the Superchain, latency is variable based on allowlisted verification mechanism.
* **Cost:** Variable based on allowlisted verification mechanisms.
* **Cross-chain address:** Deterministic or requires cross-chain registry per deployment.
* **Supported ecosystem:** EVM

### OFT

OFT is a token standard used to send, receive, and compose tokens across chains LayerZero supports. More information will be added about how OFTs can benefit from Superchain interop at a later date.

* **Security:** Variable due to weakest-link scenario based on allowlisted verification mechanisms.
* **Latency:** 1-block latency within the Superchain. Outside the Superchain, latency is variable based on allowlisted verification (DVN) mechanism.
* **Cost:** Variable based on allowlisted verification mechanisms.
* **Cross-chain address:** Requires cross-chain registry per deployment.
* **Supported ecosystem:** EVM, Solana, MoveVM

### NTT

NTT is a token standard used to send, receive, and compose tokens across chains Wormhole supports. More information will be added about how NTTs can benefit from Superchain interop at a later date.

* **Security:** Variable due to weakest-link scenario based on allowlisted verification mechanisms.
* **Latency:** 1-block latency within the Superchain. Outside the Superchain, latency is variable based on allowlisted verification (transceiver) mechanism.
* **Cost:** Variable based on allowlisted verification mechanisms.
* **Cross-chain address:** Requires cross-chain registry per deployment.
* **Supported ecosystem:** EVM, Solana, MoveVM


## Key takeaways

* `SuperchainERC20` is a simple and trust-minimized way for token issuers to make their token available across the Superchain interop cluster.
* Token issuers can use other token standards (xERC20, OFT, NTT) and give `crosschainMint` and `crosschainBurn` permissions to the `SuperchainTokenBridge` or `L2ToL2CrossDomainMessenger` to benefit from Superchain interop.
* Token issuers should include a `ERC-7802` interface on their token to simplify downstream integrations.

## Next steps

* Build a [revolutionary app](/app-developers/get-started) that uses multiple blockchains within the Superchain
* Deploy a [SuperchainERC20](/stack/interop/tutorials/deploy-superchain-erc20) to the Superchain
* [Learn more about SuperchainERC20](/stack/interop/superchain-erc20)
8 changes: 2 additions & 6 deletions words.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ ADDIU
ADDU
airgap
Allnodes
Allocs
allocs
Alphanet
alphanet
Expand All @@ -20,6 +19,7 @@ Ankr
Apeworx
Arweave
authrpc
Autorelay
autorelay
autorelayer
basefee
Expand Down Expand Up @@ -168,14 +168,12 @@ IERC
IGNOREPRICE
ignoreprice
Immunefi
implicitly
Inator
inator
INFLUXDBV
influxdbv
initcode
interopble
invokable
IPCDISABLE
ipcdisable
ipcfile
Expand Down Expand Up @@ -360,7 +358,6 @@ seqnr
SEQUENCERHTTP
sequencerhttp
serv
settions
signup
SLLV
SLTI
Expand All @@ -370,6 +367,7 @@ smartcard
snapshotlog
Snapsync
snapsync
Solana
Soneium
soyboy
Spearbit
Expand Down Expand Up @@ -401,7 +399,6 @@ synctarget
syscalls
thirdweb
threadcreate
tility
timeseries
triggerable
trustlessly
Expand Down Expand Up @@ -436,7 +433,6 @@ VMODULE
vmodule
xlarge
XORI
xtensibility
ZKPs
ZKVM
Zora
Expand Down