Skip to content

Commit 5795b7a

Browse files
authored
Merge pull request #1087 from ethereum-optimism/sb-interop-devnet
Public interop devnet details
2 parents ea8b8e9 + 5e79e06 commit 5795b7a

File tree

6 files changed

+129
-7
lines changed

6 files changed

+129
-7
lines changed

components/WipCallout.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,14 @@ export function WipCallout({ context }: Props): ReactElement {
5151
);
5252
}
5353

54-
export function InfoCallout({ context }: Props): ReactElement {
54+
export function InteropCallout({ context }: Props): ReactElement {
55+
const [closeCallout, setCloseCallout] = useState(false);
5556
return (
56-
<div className="custom-callouts nx-w-full nx-mt-6 nx-flex nx-justify-center nx-items-center nx-bg-white dark:nx-bg-black">
57+
<div
58+
className={`custom-callouts nx-w-full nx-mt-6 nx-flex nx-justify-center nx-items-center nx-bg-white dark:nx-bg-black ${
59+
closeCallout && 'nx-hidden'
60+
}`}
61+
>
5762
<div className="nx-w-full nx-px-4 nx-text-center nx-font-medium nx-text-sm nx-text-left">
5863
{context ? (
5964
context
@@ -69,6 +74,12 @@ export function InfoCallout({ context }: Props): ReactElement {
6974
</div>
7075
)}
7176
</div>
77+
<button
78+
className="callout-close-btn"
79+
onClick={() => setCloseCallout(true)}
80+
>
81+
x
82+
</button>
7283
</div>
7384
);
7485
}

pages/stack/interop.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,6 @@ Documentation covering Cross Chain Message, Explainer, Message Passing, Op Super
2222
<Card title="Supersim multichain development environment" href="/stack/interop/supersim" />
2323

2424
<Card title="Cross domain assets" href="/stack/interop/assets" />
25+
26+
<Card title="Interop devnet" href="/stack/interop/devnet" />
2527
</Cards>

pages/stack/interop/_meta.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"explainer": "Interop explainer",
3-
"cross-chain-message": "Anatomy of cross-chain message",
3+
"devnet": "Interop devnet",
44
"supersim": "Supersim Multichain Development Environment",
5+
"cross-chain-message": "Anatomy of cross-chain message",
56
"message-passing": "Interop message passing",
67
"op-supervisor": "OP Supervisor",
78
"assets": "Assets"

pages/stack/interop/devnet.mdx

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: Interop devnet
3+
lang: en-US
4+
description: Details on the public interoperability devnets.
5+
---
6+
7+
import { Callout, Tabs, Steps } from 'nextra/components'
8+
9+
# Interop devnet
10+
11+
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.
12+
13+
## Interop devnet 0
14+
15+
| Parameter | Value |
16+
| --------------------------- | ---------------------------------------------------------------------------------------------------- |
17+
| Network Name | `Interop Devnet 0` |
18+
| Chain ID | `11473209` |
19+
| Currency Symbol<sup>1</sup> | ETH |
20+
| Explorer | [https://optimism-interop-devnet-0.blockscout.com](https://optimism-interop-devnet-0.blockscout.com) |
21+
| Public RPC URL | [https://interop-devnet-0.optimism.io](https://interop-devnet-0.optimism.io) |
22+
| Sequencer URL | [https://interop-devnet-0.optimism.io](https://interop-devnet-0.optimism.io) |
23+
| OptimismPortal<sup>2</sup> | `0xb081417d0578d70eb6bee7bfa646ef8c283eb35a` |
24+
25+
## Interop devnet 1
26+
27+
| Parameter | Value |
28+
| --------------------------- | ---------------------------------------------------------------------------------------------------- |
29+
| Network Name | `Interop Devnet 1` |
30+
| Chain ID | `21473209` |
31+
| Currency Symbol<sup>1</sup> | ETH |
32+
| Explorer | [https://optimism-interop-devnet-1.blockscout.com](https://optimism-interop-devnet-1.blockscout.com) |
33+
| Public RPC URL | [https://interop-devnet-1.optimism.io](https://interop-devnet-1.optimism.io) |
34+
| Sequencer URL | [https://interop-devnet-1.optimism.io](https://interop-devnet-1.optimism.io) |
35+
| OptimismPortal<sup>2</sup> | `0x85894f229575681130ac2f2365917cf156f8e75a` |
36+
37+
1. The "currency symbol" is required by some wallets like MetaMask.
38+
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.
39+
40+
## Sending ETH to the interop devnets
41+
42+
<Steps>
43+
### Get Sepolia ETH
44+
45+
You can utilize the [Superchain Faucet](https://console.optimism.io/faucet) to get ether on Sepolia.
46+
47+
### Send the Sepolia ETH to the devnet
48+
49+
You can send ether directly to the `OptimismPortal` address and it will go to the same sender address on the devnet.
50+
51+
### Wait for bridging to complete
52+
53+
It'll take approximately 2 minutes for the bridging process to complete and the ether to appear in your wallet.
54+
</Steps>
55+
56+
## Next steps
57+
58+
* 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.
59+
* Read about [interop message passing](/stack/interop/cross-chain-message) to see how you can implement it yourself on this devnet.
60+

pages/stack/interop/explainer.mdx

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ description: Learn the basics of interoperability on the OP Stack.
77
import { Callout } from 'nextra/components'
88
import Image from 'next/image'
99

10-
import { InfoCallout } from '@/components/WipCallout'
10+
import { InteropCallout } from '@/components/WipCallout'
1111

12-
<InfoCallout />
12+
<InteropCallout />
1313

1414
# Interoperability explainer
1515

@@ -40,9 +40,48 @@ Chain operators can add or remove chains from the dependency set through the `Sy
4040

4141
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.
4242

43+
## New predeploys
44+
45+
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.
46+
47+
### CrossL2Inbox
48+
49+
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.
50+
51+
* **Address:** `0x4200000000000000000000000000000000000022`
52+
* **Specs:** [CrossL2Inbox](https://specs.optimism.io/interop/predeploys.html#crossl2inbox)
53+
54+
### L2ToL2CrossDomainMessenger
55+
56+
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.
57+
58+
* **Address:** `0x4200000000000000000000000000000000000023`
59+
* **Specs:** [L2ToL2CrossDomainMessenger](https://specs.optimism.io/interop/predeploys.html#l2tol2crossdomainmessenger)
60+
61+
### OptimismSuperchainERC20Factory
62+
63+
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.
64+
65+
* **Address:** `0x4200000000000000000000000000000000000026`
66+
* **Specs:** [OptimismSuperchainERC20Factory](https://specs.optimism.io/interop/predeploys.html#optimismsuperchainerc20factory)
67+
68+
69+
### BeaconContract
70+
71+
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).
72+
73+
* **Address:** `0x4200000000000000000000000000000000000027`
74+
* **Specs:** [BeaconContract](https://specs.optimism.io/interop/predeploys.html#beaconcontract)
75+
76+
### SuperchainERC20Bridge
77+
78+
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).
79+
80+
* **Address:** `0x4200000000000000000000000000000000000028`
81+
* **Specs:** [SuperchainERC20Bridge](https://specs.optimism.io/interop/predeploys.html#superchainerc20bridge)
4382
## Considerations
4483
Chain operators will need to run additional infrastructure to be part of the interoperable set.
45-
* The Superchain-backend service, `op-supervisor`, will be a requirement for running an OP Stack chain that has interop enabled.
84+
* The Superchain-backend service, [`op-supervisor`](op-supervisor), will be a requirement for running an OP Stack chain that has interop enabled.
4685
`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.
4786
* In the future, to reduce infrastructure costs, `op-supervisor` will rely on the P2P network and cryptographic schemes for validating cross-chain messages.
4887

words.txt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ datadir
8484
Dencun
8585
Devnet
8686
devnet
87+
devnets
8788
Devnode
8889
direnv
8990
DISABLETXPOOLGOSSIP
@@ -409,4 +410,12 @@ ZKPs
409410
ZKVM
410411
Zora
411412
zora
412-
interchain
413+
Sepolia
414+
SEPOLIA
415+
Immunefi
416+
Mitigations
417+
Pyth's
418+
Pyth
419+
voxel
420+
Ankr
421+
interchain

0 commit comments

Comments
 (0)