diff --git a/components/WipCallout.tsx b/components/WipCallout.tsx index 72dd73d5c..2d0b96ccd 100644 --- a/components/WipCallout.tsx +++ b/components/WipCallout.tsx @@ -51,9 +51,14 @@ export function WipCallout({ context }: Props): ReactElement { ); } -export function InfoCallout({ context }: Props): ReactElement { +export function InteropCallout({ context }: Props): ReactElement { + const [closeCallout, setCloseCallout] = useState(false); return ( -
+
{context ? ( context @@ -69,6 +74,12 @@ export function InfoCallout({ context }: Props): ReactElement {
)}
+
); } diff --git a/pages/stack/interop.mdx b/pages/stack/interop.mdx index 6df1e266c..466533c36 100644 --- a/pages/stack/interop.mdx +++ b/pages/stack/interop.mdx @@ -22,4 +22,6 @@ Documentation covering Cross Chain Message, Explainer, Message Passing, Op Super + + diff --git a/pages/stack/interop/_meta.json b/pages/stack/interop/_meta.json index d42e969ce..ac5d2f1f3 100644 --- a/pages/stack/interop/_meta.json +++ b/pages/stack/interop/_meta.json @@ -1,7 +1,8 @@ { "explainer": "Interop explainer", - "cross-chain-message": "Anatomy of cross-chain message", + "devnet": "Interop devnet", "supersim": "Supersim Multichain Development Environment", + "cross-chain-message": "Anatomy of cross-chain message", "message-passing": "Interop message passing", "op-supervisor": "OP Supervisor", "assets": "Assets" diff --git a/pages/stack/interop/devnet.mdx b/pages/stack/interop/devnet.mdx new file mode 100644 index 000000000..871a0c41e --- /dev/null +++ b/pages/stack/interop/devnet.mdx @@ -0,0 +1,60 @@ +--- +title: Interop devnet +lang: en-US +description: Details on the public interoperability devnets. +--- + +import { Callout, Tabs, Steps } from 'nextra/components' + +# Interop devnet + +The Interop devnet is a temporary public network of two OP Stack Sepolia instances that supports SuperERC20 tokens, native cross-chain messaging, and cross-chain ETH transfers. This network will be deprecated once the next devnet is released. As we iterate on Superchain interop, these networks will be deprecated once the next devnets are released. + +## Interop devnet 0 + +| Parameter | Value | +| --------------------------- | ---------------------------------------------------------------------------------------------------- | +| Network Name | `Interop Devnet 0` | +| Chain ID | `11473209` | +| Currency Symbol1 | ETH | +| Explorer | [https://optimism-interop-devnet-0.blockscout.com](https://optimism-interop-devnet-0.blockscout.com) | +| Public RPC URL | [https://interop-devnet-0.optimism.io](https://interop-devnet-0.optimism.io) | +| Sequencer URL | [https://interop-devnet-0.optimism.io](https://interop-devnet-0.optimism.io) | +| OptimismPortal2 | `0xb081417d0578d70eb6bee7bfa646ef8c283eb35a` | + +## Interop devnet 1 + +| Parameter | Value | +| --------------------------- | ---------------------------------------------------------------------------------------------------- | +| Network Name | `Interop Devnet 1` | +| Chain ID | `21473209` | +| Currency Symbol1 | ETH | +| Explorer | [https://optimism-interop-devnet-1.blockscout.com](https://optimism-interop-devnet-1.blockscout.com) | +| Public RPC URL | [https://interop-devnet-1.optimism.io](https://interop-devnet-1.optimism.io) | +| Sequencer URL | [https://interop-devnet-1.optimism.io](https://interop-devnet-1.optimism.io) | +| OptimismPortal2 | `0x85894f229575681130ac2f2365917cf156f8e75a` | + +1. The "currency symbol" is required by some wallets like MetaMask. +2. The `OptimismPortal` is a low-level contract responsible for passing messages between L1 and L2. Messages sent directly to the `OptimismPortal` have no form of replayability. You can send ether directly to the portal to receive it to the sender address on the L2. + +## Sending ETH to the interop devnets + + + ### Get Sepolia ETH + + You can utilize the [Superchain Faucet](https://console.optimism.io/faucet) to get ether on Sepolia. + + ### Send the Sepolia ETH to the devnet + + You can send ether directly to the `OptimismPortal` address and it will go to the same sender address on the devnet. + + ### Wait for bridging to complete + + It'll take approximately 2 minutes for the bridging process to complete and the ether to appear in your wallet. + + +## Next steps + +* Want to start with local development? Use [Supersim](/stack/interop/supersim), a local dev environment that simulates interop for testing applications against a local version of the Superchain. +* Read about [interop message passing](/stack/interop/cross-chain-message) to see how you can implement it yourself on this devnet. + diff --git a/pages/stack/interop/explainer.mdx b/pages/stack/interop/explainer.mdx index d054afc89..09611d7e5 100644 --- a/pages/stack/interop/explainer.mdx +++ b/pages/stack/interop/explainer.mdx @@ -7,9 +7,9 @@ description: Learn the basics of interoperability on the OP Stack. import { Callout } from 'nextra/components' import Image from 'next/image' -import { InfoCallout } from '@/components/WipCallout' +import { InteropCallout } from '@/components/WipCallout' - + # Interoperability explainer @@ -40,9 +40,48 @@ Chain operators can add or remove chains from the dependency set through the `Sy However, since the nature of defining a dependency is one way, it is impossible for a chain to know of all of the other chains that depend on it. +## New predeploys + +The following predeploys have been added to enable interoperability. Predeployed smart contracts exist at predetermined addresses in the genesis state. They are similar to precompiles but instead run directly in the EVM instead of running native code outside the EVM. + +### CrossL2Inbox + +The `CrossL2Inbox` is the system predeploy for cross chain messaging. Anyone can trigger the execution or validation of cross chain messages, on behalf of any user. + +* **Address:** `0x4200000000000000000000000000000000000022` +* **Specs:** [CrossL2Inbox](https://specs.optimism.io/interop/predeploys.html#crossl2inbox) + +### L2ToL2CrossDomainMessenger + +The `L2ToL2CrossDomainMessenger` is a higher level abstraction on top of the `CrossL2Inbox` that provides general message passing, utilized for secure transfers ERC20 tokens between L2 chains. Messages sent through the `L2ToL2CrossDomainMessenger` on the source chain receive both replay protection and domain binding, ie the executing transaction can only be valid on a single chain. + +* **Address:** `0x4200000000000000000000000000000000000023` +* **Specs:** [L2ToL2CrossDomainMessenger](https://specs.optimism.io/interop/predeploys.html#l2tol2crossdomainmessenger) + +### OptimismSuperchainERC20Factory + +The `OptimismSuperchainERC20Factory` creates ERC20 contracts that implement the SuperchainERC20 standard, grants mint-burn rights to the `L2StandardBridge` (`OptimismSuperchainERC20`), and includes a remoteToken variable. These ERC20s are called `OptimismSuperchainERC20` and can be converted back and forth with `OptimismMintableERC20` tokens. The goal of the `OptimismSuperchainERC20` is to extend functionalities of the `OptimismMintableERC20` so that they are interop compatible. + +* **Address:** `0x4200000000000000000000000000000000000026` +* **Specs:** [OptimismSuperchainERC20Factory](https://specs.optimism.io/interop/predeploys.html#optimismsuperchainerc20factory) + + +### BeaconContract + +The `BeaconContract` predeploy gets called by the `OptimismSuperchainERC20` BeaconProxies deployed by the SuperchainERC20Factory. The Beacon Contract implements the interface defined in [EIP-1967](https://eips.ethereum.org/EIPS/eip-1967). + +* **Address:** `0x4200000000000000000000000000000000000027` +* **Specs:** [BeaconContract](https://specs.optimism.io/interop/predeploys.html#beaconcontract) + +### SuperchainERC20Bridge + +The `SuperchainERC20Bridge` is an abstraction on top of the `L2toL2CrossDomainMessenger` that facilitates token bridging using interop. It has mint and burn rights over `SuperchainERC20` tokens, as described in the [token bridging spec](https://specs.optimism.io/interop/token-bridging.html). + +* **Address:** `0x4200000000000000000000000000000000000028` +* **Specs:** [SuperchainERC20Bridge](https://specs.optimism.io/interop/predeploys.html#superchainerc20bridge) ## Considerations Chain operators will need to run additional infrastructure to be part of the interoperable set. -* The Superchain-backend service, `op-supervisor`, will be a requirement for running an OP Stack chain that has interop enabled. +* The Superchain-backend service, [`op-supervisor`](op-supervisor), will be a requirement for running an OP Stack chain that has interop enabled. `op-supervisor` is responsible for validating all cross-chain messages and will need to have an RPC configured for each chain in the dependency set. * In the future, to reduce infrastructure costs, `op-supervisor` will rely on the P2P network and cryptographic schemes for validating cross-chain messages. diff --git a/words.txt b/words.txt index 9b508946d..0357fed0a 100644 --- a/words.txt +++ b/words.txt @@ -84,6 +84,7 @@ datadir Dencun Devnet devnet +devnets Devnode direnv DISABLETXPOOLGOSSIP @@ -409,4 +410,12 @@ ZKPs ZKVM Zora zora -interchain \ No newline at end of file +Sepolia +SEPOLIA +Immunefi +Mitigations +Pyth's +Pyth +voxel +Ankr +interchain