diff --git a/pages/stack/interop/op-supervisor.mdx b/pages/stack/interop/op-supervisor.mdx index 3defbd5e8..9f7dfd835 100644 --- a/pages/stack/interop/op-supervisor.mdx +++ b/pages/stack/interop/op-supervisor.mdx @@ -1,50 +1,69 @@ --- -title: OP Supervisor +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' +import { InteropCallout } from '@/components/WipCallout' -# 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 -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: +OP-Supervisor is a service that verifies cross-chain messages and manages interoperability between chains in the OP Stack. +The main information it contains about other blockchains is: +- Log entries, which could be [initiating messages](./explainer#how-messages-get-from-one-chain-to-the-other) for cross-domain messages. +- Blockchain heads, which are the latest blocks at various levels of confidence and safety: + - Unsafe (the latest block available through the gossip protocol) + - Local-safe (the latest block written to L1) + - Cross-safe (the latest block written to L1, and for which all the dependencies are written to L1) + - Finalized (the latest block written to L1, and that L1 block is safe from reorgs) -* Enables secure cross-chain message passing on the Superchain -* Provides a unified point for managing interoperability data -* Supports multiple networks simultaneously -* Offers potential for public endpoints to aid in node synchronization +```mermaid -## How cross-chain message verification works +graph LR -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⁠.⁠ + classDef chain fill:#FFE + classDef transparent fill:none, stroke:none + + subgraph chain1[OP Stack chain #1] + node1[OP Node] + super1[OP-Supervisor] + geth1[Execution Engine] + node1<-->super1--->geth1<-->node1 + end + subgraph X[ ] + chain2[OP Stack chain #2] + chain3[OP Stack chain #3] + l1node[L1 Consensus Layer] + end -* `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 + chain2-->|log events|super1 + chain3-->|log events|super1 + l1node-->|block status|super1 -## Log data indexing and management + class chain1,chain2,chain3 chain + class X transparent +``` -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. It maintains the integrity of cross-chain interactions by tracking safety changes⁠ across the Superchain, ensuring consistent application of invalid dependency resolutions. ⁠ +To do this, OP-Supervisor has to have RPC access to all the chains in the dependency set (all those that can contain an initiating message whose destination is this blockchain). -`op-supervisor` indexes two types of cross-chain dependencies: +## How other components use OP-Supervisor -* 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 +- The execution client (typically `op-geth`) queries `op-supervisor` during block-building to verify if a message is sufficiently safe to include. + To do this, the execution client looks at every executing message and queries `op-supervisor` to see if there is a corresponding initiating message. -## API for cross-chain safety +- `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: + - Retrieve the unsafe, local-safe, cross-safe, and finalized heads for other chains. + - Update the unsafe, local-safe, and finalized heads for its own chain. + - Attempt to promote blocks in its own chain to cross-safe status. + - Attempt to finalize L2 blocks based on L1 finality. -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⁠. +### API -Key API methods include: +Here are the most important API methods exposed by OP-Supervisor. +For a full listing of API names, see the [source code](https://github.com/ethereum-optimism/optimism/blob/develop/op-service/sources/supervisor_client.go). | Method(s) | Description | | ----------------------------------------- | ------------------------------------------------------------------------------------- | @@ -55,18 +74,7 @@ Key API methods include: | `UpdateFinalizedL1` | Signals to the Supervisor new finality signals | | `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 - -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: - -* 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/explainer#how-messages-get-from-one-chain-to-the-other) or check out this [interop design video walk-thru](https://www.youtube.com/watch?v=FKc5RgjtGes). +* Want to learn more? Read our guide on the anatomy of a [cross-chain message](./explainer#how-messages-get-from-one-chain-to-the-other) 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).