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