diff --git a/pages/app-developers/get-started.mdx b/pages/app-developers/get-started.mdx
index 5bc4b9158..9ebf501c5 100644
--- a/pages/app-developers/get-started.mdx
+++ b/pages/app-developers/get-started.mdx
@@ -48,8 +48,6 @@ The SuperchainERC20 Starter Kit allows you to focus on what to deploy, not how t
} />
- } />
-
} />
} />
diff --git a/pages/app-developers/tutorials/interop.mdx b/pages/app-developers/tutorials/interop.mdx
index cf20871f2..f8a154017 100644
--- a/pages/app-developers/tutorials/interop.mdx
+++ b/pages/app-developers/tutorials/interop.mdx
@@ -16,4 +16,7 @@ This is a collection of app developer tutorials focused on interop.
} />
} />
} />
+ } />
+ } />
+ } />
diff --git a/pages/app-developers/tutorials/interop/_meta.json b/pages/app-developers/tutorials/interop/_meta.json
index ab9c31cc5..d1e285e62 100644
--- a/pages/app-developers/tutorials/interop/_meta.json
+++ b/pages/app-developers/tutorials/interop/_meta.json
@@ -3,5 +3,8 @@
"deploy-superchain-erc20": "Issuing new assets with SuperchainERC20",
"bridge-crosschain-eth": "Bridging native cross-chain ETH transfers",
"relay-messages-cast": "Relaying interop messages using `cast`",
- "relay-messages-viem": "Relaying interop messages using `viem`"
+ "relay-messages-viem": "Relaying interop messages using `viem`",
+ "contract-calls": "Making crosschain contract calls (ping pong)",
+ "event-reads": "Making crosschain event reads (tic-tac-toe)",
+ "event-contests": "Deploying crosschain event composability (contests)"
}
\ No newline at end of file
diff --git a/pages/app-developers/tutorials/interop/contract-calls.mdx b/pages/app-developers/tutorials/interop/contract-calls.mdx
new file mode 100644
index 000000000..48dfa9b08
--- /dev/null
+++ b/pages/app-developers/tutorials/interop/contract-calls.mdx
@@ -0,0 +1,9 @@
+---
+title: Making crosschain contract calls (ping pong)
+lang: en-US
+description: Learn how to make crosschain contract calls using ping pong.
+---
+
+import ContractCalls from '@/pages/stack/interop/tutorials/contract-calls.mdx'
+
+
diff --git a/pages/app-developers/tutorials/interop/event-contests.mdx b/pages/app-developers/tutorials/interop/event-contests.mdx
new file mode 100644
index 000000000..b1bcc6614
--- /dev/null
+++ b/pages/app-developers/tutorials/interop/event-contests.mdx
@@ -0,0 +1,9 @@
+---
+title: Deploying crosschain event composability (contests)
+lang: en-US
+description: Learn how to deploy crosschain event composability using contests.
+---
+
+import EventContests from '@/pages/stack/interop/tutorials/event-contests.mdx'
+
+
diff --git a/pages/app-developers/tutorials/interop/event-reads.mdx b/pages/app-developers/tutorials/interop/event-reads.mdx
new file mode 100644
index 000000000..641b9c128
--- /dev/null
+++ b/pages/app-developers/tutorials/interop/event-reads.mdx
@@ -0,0 +1,9 @@
+---
+title: Making crosschain event reads (tic-tac-toe)
+lang: en-US
+description: Learn how to make crosschain event reads using tic-tac-toe.
+---
+
+import EventReads from '@/pages/stack/interop/tutorials/event-reads.mdx'
+
+
diff --git a/pages/stack/interop.mdx b/pages/stack/interop.mdx
index 34b1d1544..1e131f94f 100644
--- a/pages/stack/interop.mdx
+++ b/pages/stack/interop.mdx
@@ -33,5 +33,5 @@ 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 a77c2f3eb..87b15dc0d 100644
--- a/pages/stack/interop/_meta.json
+++ b/pages/stack/interop/_meta.json
@@ -5,6 +5,7 @@
"op-supervisor": "OP Supervisor",
"superchain-weth": "Interoperable ETH",
"superchain-erc20": "SuperchainERC20",
+ "interop-security": "Safe interoperability",
"tools": "Tools",
"tutorials": "Tutorials"
}
diff --git a/pages/stack/interop/cross-chain.mdx b/pages/stack/interop/cross-chain.mdx
deleted file mode 100644
index f70b6046d..000000000
--- a/pages/stack/interop/cross-chain.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Crosschain guides
-description: Documentation covering crosschain reads, contract calls, events, and security.
-lang: en-US
----
-
-import { Card, Cards } from 'nextra/components'
-
-# Crosschain guides
-
-Documentation covering crosschain reads, contract calls, events, and security.
-
-
- } />
-
- } />
-
- } />
-
- } />
-
diff --git a/pages/stack/interop/cross-chain/_meta.json b/pages/stack/interop/cross-chain/_meta.json
deleted file mode 100644
index cc3c19709..000000000
--- a/pages/stack/interop/cross-chain/_meta.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "contract-calls": "Contract calls (ping pong)",
- "event-reads": "Event reads (tic-tac-toe)",
- "event-contests": "Event composability (contests)",
- "security": "Security measures"
-}
\ No newline at end of file
diff --git a/pages/stack/interop/cross-chain/security.mdx b/pages/stack/interop/interop-security.mdx
similarity index 97%
rename from pages/stack/interop/cross-chain/security.mdx
rename to pages/stack/interop/interop-security.mdx
index 5215f7313..93611dfbf 100644
--- a/pages/stack/interop/cross-chain/security.mdx
+++ b/pages/stack/interop/interop-security.mdx
@@ -1,7 +1,7 @@
---
-title: Crosschain security measures
+title: Crosschain security measures for safe interoperability
lang: en-US
-description: Security measures for safe interoperability
+description: Learn more about crosschain security measures for safe interoperability
---
import { Callout } from 'nextra/components'
@@ -11,7 +11,7 @@ import { InteropCallout } from '@/components/WipCallout'
-# Crosschain security measures
+# Crosschain security measures for safe interoperability
## The trust model
diff --git a/pages/stack/interop/tools/devnet.mdx b/pages/stack/interop/tools/devnet.mdx
index 8f7c5c5fd..612bb5485 100644
--- a/pages/stack/interop/tools/devnet.mdx
+++ b/pages/stack/interop/tools/devnet.mdx
@@ -16,27 +16,27 @@ The Interop devnet is a temporary public network of two OP Stack Sepolia instanc
## Interop devnet 0
-| Parameter | Value |
-| --------------------------- | ---------------------------------------------------------------------------------- |
-| Network Name | `interop-alpha-0` |
-| Chain ID | `420120000` |
-| Currency Symbol1 | ETH |
+| Parameter | Value |
+| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Network Name | `interop-alpha-0` |
+| Chain ID | `420120000` |
+| Currency Symbol1 | ETH |
| Block Explorer | [https://optimism-interop-alpha-0.blockscout.com/](https://optimism-interop-alpha-0.blockscout.com/), [https://420120000.testnet.routescan.io/](https://420120000.testnet.routescan.io/) |
-| Public RPC URL | [https://interop-alpha-0.optimism.io](https://interop-alpha-0.optimism.io) |
-| Sequencer URL | [https://interop-alpha-0.optimism.io](https://interop-alpha-0.optimism.io) |
-| OptimismPortal2 | `0x7385d89d38ab79984e7c84fab9ce5e6f4815468a` |
+| Public RPC URL | [https://interop-alpha-0.optimism.io](https://interop-alpha-0.optimism.io) |
+| Sequencer URL | [https://interop-alpha-0.optimism.io](https://interop-alpha-0.optimism.io) |
+| OptimismPortal2 | `0x7385d89d38ab79984e7c84fab9ce5e6f4815468a` |
## Interop devnet 1
-| Parameter | Value |
-| --------------------------- | ---------------------------------------------------------------------------------- |
-| Network Name | `interop-alpha-1` |
-| Chain ID | `420120001` |
-| Currency Symbol1 | ETH |
+| Parameter | Value |
+| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Network Name | `interop-alpha-1` |
+| Chain ID | `420120001` |
+| Currency Symbol1 | ETH |
| Block Explorer | [https://optimism-interop-alpha-1.blockscout.com/](https://optimism-interop-alpha-1.blockscout.com/), [https://420120001.testnet.routescan.io/](https://420120001.testnet.routescan.io/) |
-| Public RPC URL | [https://interop-alpha-1.optimism.io](https://interop-alpha-1.optimism.io) |
-| Sequencer URL | [https://interop-alpha-1.optimism.io](https://interop-alpha-1.optimism.io) |
-| OptimismPortal2 | `0x55f5c4653dbcde7d1254f9c690a5d761b315500c` |
+| Public RPC URL | [https://interop-alpha-1.optimism.io](https://interop-alpha-1.optimism.io) |
+| Sequencer URL | [https://interop-alpha-1.optimism.io](https://interop-alpha-1.optimism.io) |
+| OptimismPortal2 | `0x55f5c4653dbcde7d1254f9c690a5d761b315500c` |
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. You can send `ETH` directly to the portal to receive it to the sender address on the L2.
diff --git a/pages/stack/interop/tutorials.mdx b/pages/stack/interop/tutorials.mdx
index 3373e513c..7d9fdddef 100644
--- a/pages/stack/interop/tutorials.mdx
+++ b/pages/stack/interop/tutorials.mdx
@@ -21,4 +21,10 @@ Documentation covering Interop related tutorials.
} />
+ } />
+
+ } />
+
+ } />
+
diff --git a/pages/stack/interop/tutorials/_meta.json b/pages/stack/interop/tutorials/_meta.json
index 1cc4da1b6..b0ed35ba8 100644
--- a/pages/stack/interop/tutorials/_meta.json
+++ b/pages/stack/interop/tutorials/_meta.json
@@ -3,5 +3,8 @@
"deploy-superchain-erc20": "Issuing new assets with SuperchainERC20",
"bridge-crosschain-eth": "Bridging native cross-chain ETH transfers",
"relay-messages-cast": "Relaying interop messages using `cast`",
- "relay-messages-viem": "Relaying interop messages using `viem`"
+ "relay-messages-viem": "Relaying interop messages using `viem`",
+ "contract-calls": "Making crosschain contract calls (ping pong)",
+ "event-reads": "Making crosschain event reads (tic-tac-toe)",
+ "event-contests": "Deploying crosschain event composability (contests)"
}
diff --git a/pages/stack/interop/cross-chain/contract-calls.mdx b/pages/stack/interop/tutorials/contract-calls.mdx
similarity index 97%
rename from pages/stack/interop/cross-chain/contract-calls.mdx
rename to pages/stack/interop/tutorials/contract-calls.mdx
index f7fbb9517..627934823 100644
--- a/pages/stack/interop/cross-chain/contract-calls.mdx
+++ b/pages/stack/interop/tutorials/contract-calls.mdx
@@ -1,7 +1,7 @@
---
-title: Crosschain contract calls (ping pong)
+title: Making crosschain contract calls (ping pong)
lang: en-US
-description: Learn about crosschain contract calls using ping pong.
+description: Learn how to make crosschain contract calls using ping pong.
---
import { Callout, Steps } from 'nextra/components'
@@ -9,7 +9,7 @@ import { InteropCallout } from '@/components/WipCallout'
-# Crosschain contract calls (ping pong)
+# Making crosschain contract calls (ping pong)
This guide walks through the `CrossChainPingPong.sol` contract, focusing on high level design and steps on integrating the `L2ToL2CrossChainMessenger` contract. For more info, view the [source code](https://github.com/ethereum-optimism/supersim/blob/main/contracts/src/pingpong/CrossChainPingPong.sol).
diff --git a/pages/stack/interop/cross-chain/event-contests.mdx b/pages/stack/interop/tutorials/event-contests.mdx
similarity index 97%
rename from pages/stack/interop/cross-chain/event-contests.mdx
rename to pages/stack/interop/tutorials/event-contests.mdx
index 04a3a0ab6..fb0119bbf 100644
--- a/pages/stack/interop/cross-chain/event-contests.mdx
+++ b/pages/stack/interop/tutorials/event-contests.mdx
@@ -1,7 +1,7 @@
---
-title: Crosschain event composability (contests)
+title: Deploying crosschain event composability (contests)
lang: en-US
-description: Learn about crosschain event composability using contests.
+description: Learn how to deploy crosschain event composability using contests.
---
import { Callout, Steps } from 'nextra/components'
@@ -9,7 +9,7 @@ import { InteropCallout } from '@/components/WipCallout'
-# Crosschain event composability (contests)
+# Deploying crosschain event composability (contests)
We showcase cross chain composability through the implementation of contests. Leveraging the same underlying mechanism powering [TicTacToe](event-reads), these contests can permissionlessly integrate with the events emitted by any contract in the Superchain.
diff --git a/pages/stack/interop/cross-chain/event-reads.mdx b/pages/stack/interop/tutorials/event-reads.mdx
similarity index 94%
rename from pages/stack/interop/cross-chain/event-reads.mdx
rename to pages/stack/interop/tutorials/event-reads.mdx
index 66495e199..ea8413a22 100644
--- a/pages/stack/interop/cross-chain/event-reads.mdx
+++ b/pages/stack/interop/tutorials/event-reads.mdx
@@ -1,7 +1,7 @@
---
-title: Crosschain event reads (tic-tac-toe)
+title: Making crosschain event reads (tic-tac-toe)
lang: en-US
-description: Learn about crosschain event reads using tic-tac-toe.
+description: Learn how to make crosschain event reads using tic-tac-toe.
---
import { Callout, Steps } from 'nextra/components'
@@ -9,7 +9,7 @@ import { InteropCallout } from '@/components/WipCallout'
-# Crosschain event reads (tic-tac-toe)
+# Making crosschain event reads (tic-tac-toe)
This guide reviews a horizontally scalable implementation of TicTacToe. This [implementation](https://github.com/ethereum-optimism/supersim/blob/main/contracts/src/tictactoe/TicTacToe.sol) allows players to play each other from any chain without cross-chain calls, instead relying on cross-chain event reading. Since superchain interop can allow for event reading with a 1-block latency, the experience is the **same as a single-chain implementation**.
@@ -196,4 +196,4 @@ Leveraging superchain interop, we can build new types of horizontally scalable c
* As new chains are added to the superchain, this contract can be installed by anyone and immediately playable with no necessary code changes. The frontend simply needs to react the addition of a new chain.
* The concept of a "chain" can be completely abstracted away from the user. When connecting their wallet, the frontend can simply pick the chain which the user has funds on with the lowest gas fees.
-* Event reading enables a new level of composability for cross-chain interactions. Imagine [contests](/stack/interop/cross-chain/event-contests) contract that resolves based on the outcome of a TicTacToe game via the `GameWon` or `GameLost` event without the need for a trusted oracle, nor permission or native integration with the TicTacToe contract.
+* Event reading enables a new level of composability for cross-chain interactions. Imagine [contests](/stack/interop/tutorials/event-contests) contract that resolves based on the outcome of a TicTacToe game via the `GameWon` or `GameLost` event without the need for a trusted oracle, nor permission or native integration with the TicTacToe contract.
diff --git a/public/_redirects b/public/_redirects
index 937082ce2..acda3004f 100644
--- a/public/_redirects
+++ b/public/_redirects
@@ -97,6 +97,11 @@
/stack/interop/transfer-superchainERC20 /stack/interop/tutorials/transfer-superchainERC20
/stack/interop/architecture /stack/interop/explainer#interoperability-architecture
/stack/interop/cross-chain-message /stack/interop/explainer#how-messages-get-from-one-chain-to-the-other
+/stack/interop/cross-chain/contract-calls /stack/interop/tutorials/contract-calls
+/stack/interop/cross-chain/event-contests /stack/interop/tutorials/event-contests
+/stack/interop/cross-chain/event-reads /stack/interop/tutorials/event-reads
+/stack/interop/cross-chain/security /stack/interop/interop-security
+/stack/interop/cross-chain/ /stack/interop
# ----------------------------------------------------------------------------
# Chain and Identity Documentation