Node flow diagram
The following diagram shows how the Rollup Node, Execution Client, and Legacy Geth components work together to form a complete node running on OP Stack networks. This diagram uses theop-node implementation of the Rollup Node and shows the general architecture that applies to all execution client implementations.
Rollup node
The Rollup Node is responsible for deriving L2 block payloads from L1 data and passing those payloads to the Execution Client. The Rollup Node can also optionally participate in a peer-to-peer network to receive blocks directly from the Sequencer before those blocks are submitted to L1. The Rollup Node is largely analogous to a consensus client in Ethereum.Rollup node implementations
- op-node is the reference implementation of the Rollup Node, written in Go and maintained by Optimism. It is the default choice for any node role and is not deprecated.
- kona-node is the Rust implementation of the Rollup Node, built as part of the Kona project. It is in active development and should be considered experimental, so give it a role where that is acceptable.
Execution client
The Execution Client is responsible for executing the block payloads it receives from the Rollup Node over JSON-RPC via the standard Ethereum Engine API. The Execution Client exposes the standard JSON-RPC API that Ethereum developers are familiar with, and can be used to query blockchain data and submit transactions to the network. The Execution Client is largely analogous to an execution client in Ethereum.Execution client implementations
- op-reth is the Optimism-maintained execution client, written in Rust and built on reth. It is the primary supported execution client for OP Stack nodes. See the execution client configuration guide for a working configuration.
- Nethermind is a third-party execution client written in C# that also supports OP Stack chains. The docs focus on Optimism-maintained software; for Nethermind specifics, see the Nethermind documentation.
Legacy Geth
OP Mainnet blocks and transactions from before the 2023 Bedrock Upgrade can be read from any current execution client, but re-executing them (RPC calls such aseth_call against pre-Bedrock blocks) requires an optional third component, Legacy Geth (l2geth), the client that ran OP Mainnet before the upgrade.
It is typically only needed for complete OP Mainnet archive nodes; see the Legacy Geth configuration guide for setup and request routing, and accessing pre-regenesis history for the even older history that predates the current chain data entirely.
Next steps
- To get your node up and running, start with the run a node from docker or build and run a node from source tutorial. The source tutorial covers
op-reth(primary) andNethermindexecution clients. - If you’ve already got your node up and running, check out the Node Metrics and Monitoring Guide to learn how to keep tabs on your node and make sure it keeps running smoothly.
- If you run into any problems, please visit the Node Troubleshooting Guide for help.