From a14b61778a2647f6d8b4793fb85fee3eab7ae5d9 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Tue, 29 Oct 2024 04:58:15 -0700
Subject: [PATCH 1/7] Create op-supervisor.mdx
---
pages/stack/interop/op-supervisor.mdx | 73 +++++++++++++++++++++++++++
1 file changed, 73 insertions(+)
create mode 100644 pages/stack/interop/op-supervisor.mdx
diff --git a/pages/stack/interop/op-supervisor.mdx b/pages/stack/interop/op-supervisor.mdx
new file mode 100644
index 00000000..32ff4a68
--- /dev/null
+++ b/pages/stack/interop/op-supervisor.mdx
@@ -0,0 +1,73 @@
+---
+title: OP-Supervisor
+lang: en-US
+description: Learn the basics of OP-Supervisor.
+---
+
+import { Callout, Tabs, Steps } from 'nextra/components'
+
+# OP-Supervisor
+
+
+ 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.
+
+
+`op-supervisor` is a critical service designed to verify cross-chain messages and manage the safety of interoperability between different chains in the OP Stack. It acts as a hub for indexing data that every `op-node` needs to cross-verify with other chains.
+
+## Features and benefits
+
+* Enables secure cross-chain message passing on the Superchain
+* Provides a centralized point for managing interoperability data
+* Reduces the complexity and cost of operating individual nodes
+* Supports multiple networks simultaneously
+* Offers potential for public endpoints to aid in node synchronization
+
+## Major components
+
+### Cross-chain message verification
+
+Verifies messages between different chains in the OP Stack, reducing the risk of invalid or malicious cross-chain interactions. It centralizes the verification process, which reduces the complexity and cost of operating individual nodes.
+
+* `op-geth`: queries `op-supervisor` during block-building to verify if a message is sufficiently safe to include. This process involves checking each executing message and potentially undoing transactions if conflicts or unknown states are encountered.
+* `op-node`: queries cross-chain safety information and coordinates safety updates between OP stack nodes and `op-supervisor`. It uses the API provided by `op-supervisor` to perform actions like:
+ * Updating and retrieving various safety levels
+ * Checking and returning the `cross-unsafe` head for a given chain
+ * Attempting to promote a block to `cross-safe` status
+ * Attempting to finalize an L2 block based on L1 finality
+
+### Safe data indexing and management
+
+Acts as a hub for indexing data that every `op-node` needs to cross-verify with other chains, centralizing the process of managing interoperability data. Maintains the integrity of cross-chain interactions by tracking safety changes across the Superchain, ensuring consistent application of invalid dependency resolutions.
+
+`op-supervisor` indexes two types of cross-chain dependencies:
+
+* Interop messages (events): `op-supervisor`maintains an events-index per L2 chain, which determines message-dependencies to check if blocks are safe
+* L1 DA (data availability) batches: `op-supervisor`maintains a DA safety-index per L2 chain, which helps determine how to rewind L2 chains to resolve invalid dependencies
+
+### API for cross-chain safety
+
+Provides an interface for `op-node` to query cross-chain safety information and coordinate safety updates between OP stack nodes and `op-supervisor`. OP-Supervisor uses a global read API to determine **message safety** and **block safety,** utilizing both the events index and the safety index (See op-supervisor's [safe data indexing](#safe-data-indexing-and-management)). The API is designed to handle potential L1 reorgs that can affect the validity of cross-chain messages.
+
+Key API methods include:
+
+| Method | Description |
+| -------------------- | ---------------------------------------------------------------------------------------- |
+| `ExchangeSyncStatus` | Updates and retrieves various safety levels (LocalUnsafe, CrossUnsafe, LocalSafe, etc.) |
+| `TryCrossUnsafe` | Checks and returns the cross-unsafe head for a given chain |
+| `TryCrossSafe` | Attempts to promote a block to cross-safe status |
+| `TryFinalize` | Attempts to finalize an L2 block based on L1 finality |
+
+### RPC access to all chains
+
+The `op-supervisor` requires RPC access to all chains in the dependency set. This allows `op-supervisor` to verify cross-chain messages and sync data across multiple networks simultaneously, such as OP Mainnet and Base nodes using the same instance.
+
+Benefits of this approach:
+
+* Cost-effective: Running `op-supervisor` is cheaper than running a full node for each chain in the dependency set.
+* Scalability: As the number of chains in the Superchain grows, `op-supervisor` can handle the increasing complexity of cross-chain interactions.
+* Improved reliability: It enables a more redundant setup, which is good for stability in the growing ecosystem.
+
+## Next steps
+
+* Want to learn more? Read our guide on the anatomy of a [cross-chain message](/stack/interop/cross-chain-message) or check out this [interop design video walk-thru](https://www.youtube.com/watch?v=FKc5RgjtGes).
+* For more info about how OP Stack interoperability works under the hood, [check out the specs](https://specs.optimism.io/interop/overview.html).
From eb0e74ed163931ac8cc963b94c0003c8acc27143 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Wed, 30 Oct 2024 11:00:07 -0700
Subject: [PATCH 2/7] feedback addresssed
---
pages/stack/interop/_meta.json | 3 +-
pages/stack/interop/op-supervisor.mdx | 44 +++++++++++++--------------
2 files changed, 24 insertions(+), 23 deletions(-)
diff --git a/pages/stack/interop/_meta.json b/pages/stack/interop/_meta.json
index 0fad3102..8cfbc259 100644
--- a/pages/stack/interop/_meta.json
+++ b/pages/stack/interop/_meta.json
@@ -2,5 +2,6 @@
"explainer": "Interop explainer",
"cross-chain-message": "Anatomy of cross-chain message",
"supersim": "Supersim Multichain Development Environment",
- "superchain-erc20": "SuperchainERC20 token standard"
+ "superchain-erc20": "SuperchainERC20",
+ "op-supervisor": "OP Supervisor"
}
\ No newline at end of file
diff --git a/pages/stack/interop/op-supervisor.mdx b/pages/stack/interop/op-supervisor.mdx
index 32ff4a68..100f2953 100644
--- a/pages/stack/interop/op-supervisor.mdx
+++ b/pages/stack/interop/op-supervisor.mdx
@@ -1,63 +1,63 @@
---
-title: OP-Supervisor
+title: OP Supervisor
lang: en-US
description: Learn the basics of OP-Supervisor.
---
import { Callout, Tabs, Steps } from 'nextra/components'
-# OP-Supervisor
+# OP Supervisor
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.
-`op-supervisor` is a critical service designed to verify cross-chain messages and manage the safety of interoperability between different chains in the OP Stack. It acts as a hub for indexing data that every `op-node` needs to cross-verify with other chains.
-
-## Features and benefits
+OP Supervisor is a critical service designed to verify cross-chain messages and manage the safety of interoperability between different chains in the OP Stack. It acts as a hub for indexing data that every `op-node` needs to cross-verify with other chains.
+Some features and benefits include:
* Enables secure cross-chain message passing on the Superchain
* Provides a centralized point for managing interoperability data
-* Reduces the complexity and cost of operating individual nodes
* Supports multiple networks simultaneously
* Offers potential for public endpoints to aid in node synchronization
-## Major components
-
-### Cross-chain message verification
+## Cross-chain message verification
-Verifies messages between different chains in the OP Stack, reducing the risk of invalid or malicious cross-chain interactions. It centralizes the verification process, which reduces the complexity and cost of operating individual nodes.
+Verifies messages between different chains in the OP Stack, reducing the risk of invalid or malicious cross-chain interactions. It centralizes the verification process, which reduces the complexity of operating individual nodes.
-* `op-geth`: queries `op-supervisor` during block-building to verify if a message is sufficiently safe to include. This process involves checking each executing message and potentially undoing transactions if conflicts or unknown states are encountered.
+* `op-geth`: queries `op-supervisor` during block-building to verify if a message is sufficiently safe to include. This process involves checking each executing message and potentially undoing transactions if conflicts or unknown states are encountered. `op-geth` also queries `op-supervisor` when taking new items into the mempool as an [early filter mechanism](https://github.com/ethereum-optimism/op-geth/pull/422).
* `op-node`: queries cross-chain safety information and coordinates safety updates between OP stack nodes and `op-supervisor`. It uses the API provided by `op-supervisor` to perform actions like:
* Updating and retrieving various safety levels
* Checking and returning the `cross-unsafe` head for a given chain
* Attempting to promote a block to `cross-safe` status
* Attempting to finalize an L2 block based on L1 finality
-### Safe data indexing and management
+## Log data indexing and management
Acts as a hub for indexing data that every `op-node` needs to cross-verify with other chains, centralizing the process of managing interoperability data. Maintains the integrity of cross-chain interactions by tracking safety changes across the Superchain, ensuring consistent application of invalid dependency resolutions.
`op-supervisor` indexes two types of cross-chain dependencies:
-* Interop messages (events): `op-supervisor`maintains an events-index per L2 chain, which determines message-dependencies to check if blocks are safe
-* L1 DA (data availability) batches: `op-supervisor`maintains a DA safety-index per L2 chain, which helps determine how to rewind L2 chains to resolve invalid dependencies
+* Interop messages (events): `op-supervisor` maintains an events-index per L2 chain, which determines message-dependencies to check if blocks are safe
+* L1 DA (data availability): `op-supervisor` tracks the L1 DA for L2 blocks and maintains a DA safety-index per L2 chain, which helps determine how to rewind L2 chains to resolve invalid dependencies
-### API for cross-chain safety
+## API for cross-chain safety
Provides an interface for `op-node` to query cross-chain safety information and coordinate safety updates between OP stack nodes and `op-supervisor`. OP-Supervisor uses a global read API to determine **message safety** and **block safety,** utilizing both the events index and the safety index (See op-supervisor's [safe data indexing](#safe-data-indexing-and-management)). The API is designed to handle potential L1 reorgs that can affect the validity of cross-chain messages.
Key API methods include:
-| Method | Description |
-| -------------------- | ---------------------------------------------------------------------------------------- |
-| `ExchangeSyncStatus` | Updates and retrieves various safety levels (LocalUnsafe, CrossUnsafe, LocalSafe, etc.) |
-| `TryCrossUnsafe` | Checks and returns the cross-unsafe head for a given chain |
-| `TryCrossSafe` | Attempts to promote a block to cross-safe status |
-| `TryFinalize` | Attempts to finalize an L2 block based on L1 finality |
+| Method | Description |
+| ----------------------------------------- | ------------------------------------------------------------------------------------- |
+| `UnsafeView` and `SafeView` | Returns the Local and Cross heads for their respective levels |
+| `DerivedFrom` | OP Nodes use to check the L1 source of the Supervisor (needed for Safe Head tracking) |
+| `UpdateLocalSafe` and `UpdateLocalUnsafe` | Tells the Supervisor when the Node's heads change |
+| `Finalized` | Returns the Finalized Head |
+| `UpdateFinalizedL1` | Signals to the Supervisor new finality signals |
+| `CheckMessage` | Checks logs in the DB directly in tests, can also use `CheckMessages` in geth |
+
+For a full listing of API names, see the [`op-supervisor` client](https://github.com/ethereum-optimism/optimism/blob/develop/op-service/sources/supervisor_client.go).
-### RPC access to all chains
+## RPC access to all chains
The `op-supervisor` requires RPC access to all chains in the dependency set. This allows `op-supervisor` to verify cross-chain messages and sync data across multiple networks simultaneously, such as OP Mainnet and Base nodes using the same instance.
From e3c0a063a975294de36ccf7f12abfd860d277095 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Wed, 30 Oct 2024 11:08:17 -0700
Subject: [PATCH 3/7] Update op-supervisor.mdx
---
pages/stack/interop/op-supervisor.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pages/stack/interop/op-supervisor.mdx b/pages/stack/interop/op-supervisor.mdx
index 100f2953..832cb27d 100644
--- a/pages/stack/interop/op-supervisor.mdx
+++ b/pages/stack/interop/op-supervisor.mdx
@@ -24,7 +24,7 @@ Some features and benefits include:
Verifies messages between different chains in the OP Stack, reducing the risk of invalid or malicious cross-chain interactions. It centralizes the verification process, which reduces the complexity of operating individual nodes.
-* `op-geth`: queries `op-supervisor` during block-building to verify if a message is sufficiently safe to include. This process involves checking each executing message and potentially undoing transactions if conflicts or unknown states are encountered. `op-geth` also queries `op-supervisor` when taking new items into the mempool as an [early filter mechanism](https://github.com/ethereum-optimism/op-geth/pull/422).
+* `op-geth`: queries `op-supervisor` during block-building to verify if a message is sufficiently safe to include. This process involves checking each executing message and potentially undoing transactions if conflicts or unknown states are encountered.
* `op-node`: queries cross-chain safety information and coordinates safety updates between OP stack nodes and `op-supervisor`. It uses the API provided by `op-supervisor` to perform actions like:
* Updating and retrieving various safety levels
* Checking and returning the `cross-unsafe` head for a given chain
From afb3125a336705ebc142ed47ecdd8158beb458fd Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Wed, 30 Oct 2024 11:21:56 -0700
Subject: [PATCH 4/7] updates
---
pages/stack/interop/op-supervisor.mdx | 11 +++++------
words.txt | 8 +++++---
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/pages/stack/interop/op-supervisor.mdx b/pages/stack/interop/op-supervisor.mdx
index 832cb27d..0b958af2 100644
--- a/pages/stack/interop/op-supervisor.mdx
+++ b/pages/stack/interop/op-supervisor.mdx
@@ -22,7 +22,7 @@ Some features and benefits include:
## Cross-chain message verification
-Verifies messages between different chains in the OP Stack, reducing the risk of invalid or malicious cross-chain interactions. It centralizes the verification process, which reduces the complexity of operating individual nodes.
+OP Supervisor verifies messages between different chains in the OP Stack, reducing the risk of invalid or malicious cross-chain interactions. It centralizes the verification process, which reduces the complexity of operating individual nodes.
* `op-geth`: queries `op-supervisor` during block-building to verify if a message is sufficiently safe to include. This process involves checking each executing message and potentially undoing transactions if conflicts or unknown states are encountered.
* `op-node`: queries cross-chain safety information and coordinates safety updates between OP stack nodes and `op-supervisor`. It uses the API provided by `op-supervisor` to perform actions like:
@@ -33,7 +33,7 @@ Verifies messages between different chains in the OP Stack, reducing the risk of
## Log data indexing and management
-Acts as a hub for indexing data that every `op-node` needs to cross-verify with other chains, centralizing the process of managing interoperability data. Maintains the integrity of cross-chain interactions by tracking safety changes across the Superchain, ensuring consistent application of invalid dependency resolutions.
+OP Supervisor acts as a hub for indexing data that every `op-node` needs to cross-verify with other chains, centralizing the process of managing interoperability data. Maintains the integrity of cross-chain interactions by tracking safety changes across the Superchain, ensuring consistent application of invalid dependency resolutions.
`op-supervisor` indexes two types of cross-chain dependencies:
@@ -42,7 +42,7 @@ Acts as a hub for indexing data that every `op-node` needs to cross-verify with
## API for cross-chain safety
-Provides an interface for `op-node` to query cross-chain safety information and coordinate safety updates between OP stack nodes and `op-supervisor`. OP-Supervisor uses a global read API to determine **message safety** and **block safety,** utilizing both the events index and the safety index (See op-supervisor's [safe data indexing](#safe-data-indexing-and-management)). The API is designed to handle potential L1 reorgs that can affect the validity of cross-chain messages.
+OP Supervisor provides an interface for `op-node` to query cross-chain safety information and coordinate safety updates between OP stack nodes and `op-supervisor`. OP-Supervisor uses a global read API to determine **message safety** and **block safety,** utilizing both the events index and the safety index (See op-supervisor's [safe data indexing](#safe-data-indexing-and-management)). The API is designed to handle potential L1 reorgs that can affect the validity of cross-chain messages.
Key API methods include:
@@ -53,17 +53,16 @@ Key API methods include:
| `UpdateLocalSafe` and `UpdateLocalUnsafe` | Tells the Supervisor when the Node's heads change |
| `Finalized` | Returns the Finalized Head |
| `UpdateFinalizedL1` | Signals to the Supervisor new finality signals |
-| `CheckMessage` | Checks logs in the DB directly in tests, can also use `CheckMessages` in geth |
+| `CheckMessage` | Checks logs in the DB directly in tests |
For a full listing of API names, see the [`op-supervisor` client](https://github.com/ethereum-optimism/optimism/blob/develop/op-service/sources/supervisor_client.go).
## RPC access to all chains
-The `op-supervisor` requires RPC access to all chains in the dependency set. This allows `op-supervisor` to verify cross-chain messages and sync data across multiple networks simultaneously, such as OP Mainnet and Base nodes using the same instance.
+OP Supervisor requires RPC access to all chains in the dependency set. This allows `op-supervisor` to verify cross-chain messages and sync data across multiple networks simultaneously, such as OP Mainnet and Base nodes using the same instance.
Benefits of this approach:
-* Cost-effective: Running `op-supervisor` is cheaper than running a full node for each chain in the dependency set.
* Scalability: As the number of chains in the Superchain grows, `op-supervisor` can handle the increasing complexity of cross-chain interactions.
* Improved reliability: It enables a more redundant setup, which is good for stability in the growing ecosystem.
diff --git a/words.txt b/words.txt
index 5ce846b7..5be79af1 100644
--- a/words.txt
+++ b/words.txt
@@ -1,5 +1,5 @@
-accountqueue
ACCOUNTQUEUE
+accountqueue
ACCOUNTSLOTS
accountslots
ADDI
@@ -29,8 +29,8 @@ BLOBPOOL
blobpool
blobspace
blockhash
-BLOCKLOGS
blocklists
+BLOCKLOGS
blocklogs
BLOCKPROFILERATE
blockprofilerate
@@ -326,7 +326,9 @@ safedb
Schnorr
secp
SELFDESTRUCT
+SEPOLIA
Sepolia
+sepolia
seqnr
SEQUENCERHTTP
sequencerhttp
@@ -404,4 +406,4 @@ xtensibility
ZKPs
ZKVM
Zora
-zora
\ No newline at end of file
+zora
From fdb6866a1b0b5a3df1f20e4faba445446e9a8339 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Wed, 30 Oct 2024 11:28:27 -0700
Subject: [PATCH 5/7] fix internal link
---
pages/stack/interop/op-supervisor.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pages/stack/interop/op-supervisor.mdx b/pages/stack/interop/op-supervisor.mdx
index 0b958af2..7dba942c 100644
--- a/pages/stack/interop/op-supervisor.mdx
+++ b/pages/stack/interop/op-supervisor.mdx
@@ -42,7 +42,7 @@ OP Supervisor acts as a hub for indexing data that every `op-node` needs to cros
## API for cross-chain safety
-OP Supervisor provides an interface for `op-node` to query cross-chain safety information and coordinate safety updates between OP stack nodes and `op-supervisor`. OP-Supervisor uses a global read API to determine **message safety** and **block safety,** utilizing both the events index and the safety index (See op-supervisor's [safe data indexing](#safe-data-indexing-and-management)). The API is designed to handle potential L1 reorgs that can affect the validity of cross-chain messages.
+OP Supervisor provides an interface for `op-node` to query cross-chain safety information and coordinate safety updates between OP stack nodes and `op-supervisor`. OP-Supervisor uses a global read API to determine **message safety** and **block safety,** utilizing both the events index and the safety index (See op-supervisor's [log data indexing](#log-data-indexing-and-management)). The API is designed to handle potential L1 reorgs that can affect the validity of cross-chain messages.
Key API methods include:
From 337f95e00addabbcd2bfc362cd96314ec570c5d6 Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Thu, 31 Oct 2024 09:47:58 -0700
Subject: [PATCH 6/7] Apply suggestions from code review
Co-authored-by: Blessing Krofegha
---
pages/stack/interop/op-supervisor.mdx | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/pages/stack/interop/op-supervisor.mdx b/pages/stack/interop/op-supervisor.mdx
index 7dba942c..3d13606d 100644
--- a/pages/stack/interop/op-supervisor.mdx
+++ b/pages/stack/interop/op-supervisor.mdx
@@ -12,15 +12,15 @@ import { Callout, Tabs, Steps } from 'nextra/components'
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.
-OP Supervisor is a critical service designed to verify cross-chain messages and manage the safety of interoperability between different chains in the OP Stack. It acts as a hub for indexing data that every `op-node` needs to cross-verify with other chains.
+OP Supervisor is a service that verifies cross-chain messages and manages interoperability between chains in the OP Stack. It serves as a hub where each `op-node` can index the data needed for cross-chain verification.
Some features and benefits include:
* Enables secure cross-chain message passing on the Superchain
-* Provides a centralized point for managing interoperability data
+* Provides a unified point for managing interoperability data
* Supports multiple networks simultaneously
* Offers potential for public endpoints to aid in node synchronization
-## Cross-chain message verification
+## How cross-chain message verification works
OP Supervisor verifies messages between different chains in the OP Stack, reducing the risk of invalid or malicious cross-chain interactions. It centralizes the verification process, which reduces the complexity of operating individual nodes.
@@ -61,7 +61,7 @@ For a full listing of API names, see the [`op-supervisor` client](https://github
OP Supervisor requires RPC access to all chains in the dependency set. This allows `op-supervisor` to verify cross-chain messages and sync data across multiple networks simultaneously, such as OP Mainnet and Base nodes using the same instance.
-Benefits of this approach:
+Benefits:
* Scalability: As the number of chains in the Superchain grows, `op-supervisor` can handle the increasing complexity of cross-chain interactions.
* Improved reliability: It enables a more redundant setup, which is good for stability in the growing ecosystem.
From a3767d52dda0d1404ca79f88e2a7aceed1d4416e Mon Sep 17 00:00:00 2001
From: cpengilly <29023967+cpengilly@users.noreply.github.com>
Date: Thu, 31 Oct 2024 09:59:57 -0700
Subject: [PATCH 7/7] add expected audience
---
pages/stack/interop/op-supervisor.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pages/stack/interop/op-supervisor.mdx b/pages/stack/interop/op-supervisor.mdx
index 3d13606d..7afafb83 100644
--- a/pages/stack/interop/op-supervisor.mdx
+++ b/pages/stack/interop/op-supervisor.mdx
@@ -1,7 +1,7 @@
---
title: OP Supervisor
lang: en-US
-description: Learn the basics of OP-Supervisor.
+description: Learn the basics of OP Supervisor.
---
import { Callout, Tabs, Steps } from 'nextra/components'
@@ -12,7 +12,7 @@ import { Callout, Tabs, Steps } from 'nextra/components'
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.
-OP Supervisor is a service that verifies cross-chain messages and manages interoperability between chains in the OP Stack. It serves as a hub where each `op-node` can index the data needed for cross-chain verification.
+OP Supervisor is a service that verifies cross-chain messages and manages interoperability between chains in the OP Stack. It serves as a hub where each `op-node` can index the data needed for cross-chain verification. Chain operators and teams running full nodes like RPC providers are expected to run this service.
Some features and benefits include:
* Enables secure cross-chain message passing on the Superchain