Skip to content

Add Support for Nethermind on OP Docs #1551

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 44 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
acc4f97
feat: update releases
stdevMac Mar 31, 2025
1d98577
feat: add config
stdevMac Mar 31, 2025
fa0489f
feat: add nethermind to json-rpc config
stdevMac Mar 31, 2025
b9c4f66
feat: add nethermind to no-from-docker tutorials
stdevMac Mar 31, 2025
6e583cb
Merge remote-tracking branch 'origin/main'
stdevMac Mar 31, 2025
cd5f5b4
fix: update link to json-rpc doc
stdevMac Apr 1, 2025
d990c61
Update pages/operators/node-operators/configuration/execution-config.mdx
AnkushinDaniil Apr 28, 2025
d4d562e
Update pages/operators/node-operators/configuration/execution-config.mdx
AnkushinDaniil Apr 28, 2025
e8a4a91
Update pages/operators/node-operators/configuration/execution-config.mdx
AnkushinDaniil Apr 28, 2025
7f9c440
Update pages/operators/node-operators/releases.mdx
AnkushinDaniil Apr 28, 2025
7ec7b6f
fix linter
AnkushinDaniil Apr 28, 2025
5c5c00f
fix linter
AnkushinDaniil Apr 28, 2025
cb7a3ae
fix: update words.txt
AnkushinDaniil Apr 28, 2025
b0e8acc
feat(docs): add Nethermind support for OP Stack nodes
AnkushinDaniil Apr 29, 2025
f08583b
fix: update img
AnkushinDaniil Apr 29, 2025
28dae1e
fix(docs): update Nethermind references and monitoring links
AnkushinDaniil Apr 29, 2025
271d070
fix: remove (op-geth)
AnkushinDaniil Apr 29, 2025
0a43915
fix: update img
AnkushinDaniil Apr 29, 2025
8f6b938
feat: update base config
AnkushinDaniil Apr 29, 2025
ff05338
feat: update base config
AnkushinDaniil Apr 29, 2025
96ba541
fix: fix linting issues
AnkushinDaniil Apr 29, 2025
9b44343
Merge branch 'main' into main
AnkushinDaniil Apr 30, 2025
c4ffefb
fix(build): resolve type issues and update configs
AnkushinDaniil Apr 30, 2025
102fd4c
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
AnkushinDaniil Apr 30, 2025
eac66f2
feat(docs): add Nethermind as execution client option
AnkushinDaniil Apr 30, 2025
3d2f68c
feat(docs): add Nethermind config for snap sync
AnkushinDaniil Apr 30, 2025
03f2e85
feat(docs): add Nethermind troubleshooting guidance
AnkushinDaniil Apr 30, 2025
98df61c
docs(rollup): make execution client references generic
AnkushinDaniil Apr 30, 2025
83fccf7
fix linter
AnkushinDaniil Apr 30, 2025
336798e
update nethermind configuration docs
AnkushinDaniil Apr 30, 2025
1b2024c
docs(config): add nethermind to execution client refs
AnkushinDaniil Apr 30, 2025
b17c783
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
AnkushinDaniil Apr 30, 2025
404ff24
fix linter
AnkushinDaniil Apr 30, 2025
75d4b8f
feat(docs): add Nethermind execution client support
AnkushinDaniil May 1, 2025
14c042b
docs(snap-sync): add Nethermind to supported clients
AnkushinDaniil May 1, 2025
f073bac
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
AnkushinDaniil May 1, 2025
fdf9a60
feat(docs): add Nethermind sync verification
AnkushinDaniil May 1, 2025
b874f67
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
AnkushinDaniil May 1, 2025
f791cd2
style(docs): wrap client names in backticks
AnkushinDaniil May 2, 2025
685ef66
Update pages/operators/node-operators/management/snap-sync.mdx
AnkushinDaniil May 6, 2025
e1967cc
Update pages/operators/node-operators/management/troubleshooting.mdx
AnkushinDaniil May 6, 2025
7c5b86a
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
AnkushinDaniil May 2, 2025
10e5181
docs(node-operators): improve documentation clarity & grammar
AnkushinDaniil May 6, 2025
a038a88
update .gitignore
AnkushinDaniil May 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions pages/operators/node-operators/architecture.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ is_imported_content: 'false'

# Node architecture

This page reviews node architecture for all nodes running on the Superchain network. All OP Mainnet nodes are composed of two core software services, the Rollup Node and the Execution Client.
This page reviews node architecture for all nodes running on the Superchain network. All OP Mainnet nodes are composed of two core software services, the Rollup Node and the Execution Client.
OP Mainnet also optionally supports a third component, Legacy Geth, that can serve stateful queries for blocks and transactions created before the [Bedrock Upgrade](https://web.archive.org/web/20230608050602/https://blog.oplabs.co/introducing-optimism-bedrock/).

## 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 the Superchain network.
This diagram uses the `op-node` and `op-geth` implementations of the Rollup Node and Execution Client respectively, but the same architecture generally applies to other implementations as well.
This diagram uses the `op-node` implementation of the Rollup Node and shows the general architecture that applies to all execution client implementations.

![OP Mainnet node architecture diagram.](/img/guides/node-operators/node-arch.svg)

Expand All @@ -39,6 +39,16 @@ The Execution Client is responsible for executing the block payloads it receives
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](https://ethereum.org/en/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) in Ethereum.

The OP Stack supports multiple execution client implementations:

### op-geth

`op-geth` is the original execution client for the OP Stack, based on the Go Ethereum (Geth) implementation. It has been modified to support the specific requirements of OP Stack chains.

### Nethermind

Nethermind is a high-performance execution client implementation written in C#. The Nethermind client has been adapted to support OP Stack chains, providing an alternative execution client option for node operators.

## Legacy Geth

OP Mainnet underwent a large database migration as part of the [Bedrock Upgrade](https://web.archive.org/web/20230608050602/https://blog.oplabs.co/introducing-optimism-bedrock/) in 2023.
Expand All @@ -51,6 +61,6 @@ Legacy Geth is **not** required and is typically only necessary if you want to m

## Next steps

* To get your node up and running, start with the [run a node from docker](/operators/node-operators/tutorials/node-from-docker) or [build a node from source](/operators/node-operators/tutorials/node-from-source) tutorial.
* To get your node up and running, start with the [run a node from docker](/operators/node-operators/tutorials/node-from-docker) or [build a node from source](/operators/node-operators/tutorials/node-from-source) tutorial. These guides include instructions for both op-geth and Nethermind execution clients.
* If you've already got your node up and running, check out the [Node Metrics and Monitoring Guide](./management/metrics) 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](./management/troubleshooting) for help.
22 changes: 21 additions & 1 deletion pages/operators/node-operators/configuration/base-config.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@ To configure your node, you will need to do the following:
3. Configure `op-geth` to properly communicate with the Rollup Node.
4. Optionally, configure Legacy Geth.

## Configuring `op-geth`
## Configuring Your Execution Client

You can choose between two execution clients for your OP Stack rollup node: `op-geth` or `nethermind`. Each has its own configuration requirements and recommended settings.

### Configuring `op-geth`

<Callout type="info">
Although the Docker image for the Execution Engine is called `op-geth`, the actual binary is still called `geth` in order to minimize differences between `op-geth` and `go-ethereum`. You can see the difference [here](https://op-geth.optimism.io/).
Expand Down Expand Up @@ -146,6 +150,22 @@ geth \

Consult [Geth's documentation](https://geth.ethereum.org/docs/) for more information on customizing `op-geth`'s behavior.

### Configuring `nethermind`

Nethermind is an alternative execution client for OP Stack rollup nodes. It provides high performance and reliability while maintaining compatibility with the OP Stack protocol.

#### Working base configuration for Nethermind

To run Nethermind on the OP Mainnet, use the following command:

```bash
nethermind \
-c op-mainnet \
--data-dir path/to/data/dir \
--jsonrpc-jwtsecretfile path/to/jwt.hex
```
Consult [Nethermind's documentation](https://docs.nethermind.io/fundamentals/configuration) for more detailed configuration options.

## Configuring `op-node`

`op-node` is a standalone, statically linked binary. It stores no state, and requires no initialization. It consumes configuration parameters either via the command line or environment variables. For some networks, the Rollup Node also requires a configuration file (called `rollup.json` or the "rollup config") that configures network-specific genesis parameters. For official networks like OP Sepolia and OP Mainnet, the genesis config is hardcoded in the `op-node` software and can be specified via a `--network` flag.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Execution layer configuration options (op-geth)
title: Execution layer configuration options
lang: en-US
description: Learn additional configuration and command line options for op-geth and the Execution-Layer.
content_type: reference
Expand All @@ -20,15 +20,36 @@ is_imported_content: 'false'
import { Callout } from 'nextra/components'
import { Tabs } from 'nextra/components'

# Execution layer configuration options (op-geth)
# Execution layer configuration options

<Callout type="info">
You can configure your node using the command line options below (also called flags).
You can configure your node using the command line options (also called flags).
There are also sub-commands, which can be used to invoke functionality such as the console or blockchain import/export.
</Callout>

This page list all configuration options for `op-geth`. `op-geth` implements the Execution-Layer, with minimal changes for a secure Ethereum-equivalent application environment.
The following are options from [v1.101308.0](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101308.0)
<Tabs items={['op-geth', 'Nethermind']}>
<Tabs.Tab>
## op-geth Configuration

This section lists all configuration options for `op-geth`. `op-geth` implements the Execution-Layer, with minimal changes for a secure Ethereum-equivalent application environment.
The following are options from [v1.101308.0](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101308.0)
</Tabs.Tab>
<Tabs.Tab>
## Nethermind Configuration

Nethermind provides a simpler configuration approach for OP Stack networks. To run Nethermind on an OP Stack network, you can use the `--config` or `-c` flag followed by the network name:

```bash
# For OP Mainnet
nethermind -c op-mainnet

# For OP Sepolia
nethermind -c op-sepolia
```

For detailed Nethermind configuration options, please refer to the [Nethermind documentation](https://docs.nethermind.io/fundamentals/configuration).
</Tabs.Tab>
</Tabs>

Please note that the executable is still named `geth` to maintain a [minimal diff](https://op-geth.optimism.io/).

Expand Down
20 changes: 17 additions & 3 deletions pages/operators/node-operators/json-rpc.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -1004,10 +1004,24 @@ Sample success output:
todo: add Sample success output
```

## op-geth
## Execution Clients

The OP Stack supports multiple execution client implementations. Each client implements the Execution-Layer with minimal changes for a secure Ethereum-equivalent application environment.

`op-geth` implements the Execution-Layer, with minimal changes for a secure Ethereum-equivalent application environment.
<Tabs items={['op-geth', 'Nethermind']}>
<Tabs.Tab>
### op-geth

`op-geth` is the original execution client for the OP Stack, based on the Go Ethereum (Geth) implementation.

The execution engine's RPC interface is identical to [the upstream Geth RPC interface](https://geth.ethereum.org/docs/interacting-with-geth/rpc). The responses are nearly identical too, except we also include the L1 gas usage and price information.
</Tabs.Tab>
<Tabs.Tab>
### Nethermind

The execution engine's RPC interface is identical to [the upstream Geth RPC interface](https://geth.ethereum.org/docs/interacting-with-geth/rpc). The responses are nearly identical too, except we also include the L1 gas usage and price information.
Nethermind is a high-performance execution client implementation written in C#. The Nethermind client has been adapted to support OP Stack chains, providing an alternative execution client option for node operators.

The execution engine's RPC interface is identical to [the upstream Nethermind RPC interface](https://docs.nethermind.io/interacting/json-rpc-server/). The responses are nearly identical too, except we also include the L1 gas usage and price information.
</Tabs.Tab>
</Tabs>

31 changes: 23 additions & 8 deletions pages/operators/node-operators/management/blobs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,31 @@ See the [Software Releases](/operators/node-operators/releases) page for the min
### Configure the Ecotone activation date

* If you are operating a node for an OP Chain that has an entry in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json),
the Ecotone activation date is part of the `op-node` and `op-geth` nodes. So,
no action is needed for the sequencer after upgrading to the latest release.
* For node operators of custom chains not included in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json),
the activation dates can be set in the `rollup.json` (set `ecotone_time`) or
set the activation time via overrides (CLI) in both `op-node` and `op-geth`.
These will need to be set on `op-node` and `op-geth` for the sequencer and all other nodes.
the Ecotone activation date is handled automatically by both execution clients:

<Tabs items={['op-geth', 'Nethermind']}>
<Tabs.Tab>
The activation date is part of the node configuration. No action needed after upgrading to the latest release.
</Tabs.Tab>
<Tabs.Tab>
The activation date is included in the built-in chain configuration. No action needed after upgrading to the latest release.
</Tabs.Tab>
</Tabs>

* For node operators of custom chains not included in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json):

<Tabs items={['op-geth', 'Nethermind']}>
<Tabs.Tab>
Set the activation time in `rollup.json` (`ecotone_time`) and via CLI overrides
</Tabs.Tab>
<Tabs.Tab>
Use the chain configuration examples in `src/Nethermind/Chains` as templates for your custom chain configuration
</Tabs.Tab>
</Tabs>

<Callout type="warning">
Even if the ecotone activation is configured via the `rollup.json`, it still
needs to be configured separately on `op-geth` via command line flag.
When using `op-geth`, even if the ecotone activation is configured via the `rollup.json`, it still
needs to be configured separately via command line flag.
</Callout>

<Tabs items={['op-node', 'op-geth']}>
Expand Down
52 changes: 47 additions & 5 deletions pages/operators/node-operators/management/snapshots.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,58 @@ This page contains download links for data directories and node snapshots that c
Data directories and node snapshots are not required but can significantly simplify the node operation process.

<Callout type="warning">
Data directories and node snapshots are **not required** for nodes using [snap sync](snap-sync) but are still required for archive nodes and in instances when you need to trace the entire chain.
Data directories and node snapshots are **not required** in the following cases:
* When using [snap sync](snap-sync) with op-geth
* When using Nethermind (automatically handles snapshots)

They are still required for archive nodes and in instances when you need to trace the entire chain with op-geth.
</Callout>

## About the Bedrock migration
## About snapshots and execution clients

### op-geth
OP Mainnet underwent a large [database migration](https://web.archive.org/web/20240110231645/https://blog.oplabs.co/reproduce-bedrock-migration/) as part of the [Bedrock Upgrade](https://web.archive.org/web/20230608050602/https://blog.oplabs.co/introducing-optimism-bedrock/) in 2023.
Node operators must have a migrated OP Mainnet database to run a node.
Migrated OP Mainnet databases can be generated manually or pre-migrated databases can be downloaded from the links on this page.
Node operators using op-geth must have a migrated OP Mainnet database to run a node.
Migrated OP Mainnet databases can be generated manually or pre-migrated databases can be downloaded from the links below.

## Snapshots
### Nethermind
Nethermind automatically handles downloading and applying the necessary snapshots when you start the node. No manual snapshot download is required. The node will:
1. Start with an empty database
2. Automatically download the required ancient data
3. Apply the data and continue syncing

This process is fully automated and requires no additional configuration. The snapshot configuration is built into the `op-mainnet_archive.json` configuration file:

```json
"Snapshot": {
"Enabled": true,
"DownloadUrl": "http://optimism-snapshot.nethermind.io/op-mainnet-genesis-v1.zip",
"SnapshotFileName": "op-mainnet-genesis-v1.zip",
"Checksum": "0xd7e15b26175c4c924acf75c5790e75d5eaa044977ca8e1904dc62d5d0769eba3"
}
```

When you run Nethermind with the `-c op-mainnet` flag, it uses this configuration automatically.

## Available Snapshots

### Nethermind

Nethermind provides an official snapshot through their snapshot service:

| Network | Size | Download Link | Checksum |
| ----------- | ----- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| OP Mainnet | ~2GB | [Download](http://optimism-snapshot.nethermind.io/op-mainnet-genesis-v1.zip) | `0xd7e15b26175c4c924acf75c5790e75d5eaa044977ca8e1904dc62d5d0769eba3` |

<Callout type="info">
When using Nethermind, you don't need to manually download these snapshots. They are automatically downloaded when you start the node with `-c op-mainnet`.
</Callout>

### op-geth

<Callout type="warning">
The following snapshots are required for op-geth nodes. Unlike Nethermind, op-geth requires manual snapshot management.
</Callout>

<Callout type="warning">
Always verify snapshots by comparing the sha256sum of the downloaded file to the sha256sum listed on this page.
Expand Down
Loading