Skip to content

Commit

Permalink
Merge pull request #1044 from ethereum-optimism/op-supervisor
Browse files Browse the repository at this point in the history
Create op-supervisor.mdx
  • Loading branch information
cpengilly authored Oct 31, 2024
2 parents b42466b + a3767d5 commit fb62da3
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 1 deletion.
3 changes: 2 additions & 1 deletion pages/stack/interop/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"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",
"transfer-superchainERC20": "How to transfer a SuperchainERC20"
}
72 changes: 72 additions & 0 deletions pages/stack/interop/op-supervisor.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
title: OP Supervisor
lang: en-US
description: Learn the basics of OP Supervisor.
---

import { Callout, Tabs, Steps } from 'nextra/components'

# OP Supervisor

<Callout>
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.
</Callout>

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
* Provides a unified point for managing interoperability data
* Supports multiple networks simultaneously
* Offers potential for public endpoints to aid in node synchronization

## 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⁠.⁠

* `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

## Log data indexing and management

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:

* 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

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:

| 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 |

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/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).

0 comments on commit fb62da3

Please sign in to comment.