You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: pages/operators/node-operators/architecture.mdx
+13-3Lines changed: 13 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,12 +20,12 @@ is_imported_content: 'false'
20
20
21
21
# Node architecture
22
22
23
-
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.
23
+
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.
24
24
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/).
25
25
26
26
## Node flow diagram
27
27
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.
28
-
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.
28
+
This diagram uses the `op-node`implementation of the Rollup Node and shows the general architecture that applies to all execution client implementations.
@@ -39,6 +39,16 @@ The Execution Client is responsible for executing the block payloads it receives
39
39
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.
40
40
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.
41
41
42
+
The OP Stack supports multiple execution client implementations:
43
+
44
+
### op-geth
45
+
46
+
`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.
47
+
48
+
### Nethermind
49
+
50
+
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.
51
+
42
52
## Legacy Geth
43
53
44
54
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.
@@ -51,6 +61,6 @@ Legacy Geth is **not** required and is typically only necessary if you want to m
51
61
52
62
## Next steps
53
63
54
-
* 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.
64
+
* 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.
55
65
* 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.
56
66
* If you run into any problems, please visit the [Node Troubleshooting Guide](./management/troubleshooting) for help.
Copy file name to clipboardExpand all lines: pages/operators/node-operators/configuration/base-config.mdx
+46-9Lines changed: 46 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
---
2
2
title: Node base configuration
3
3
lang: en-US
4
-
description: Learn the node base configuration and recommended flags for op-node, op-geth, and legacy geth.
4
+
description: Learn the node base configuration and recommended flags for `op-node`, `op-geth`, and legacy geth.
5
5
content_type: guide
6
6
topic: node-base-configuration
7
7
personas:
@@ -16,22 +16,26 @@ categories:
16
16
is_imported_content: 'false'
17
17
---
18
18
19
-
import { Callout } from'nextra/components'
19
+
import { Callout, Tabs } from'nextra/components'
20
20
21
21
# Node base configuration
22
22
23
23
<Callouttype="warning">
24
-
Always run `op-node` and `op-geth` in a one-to-one configuration. Don't run multiple `op-geth` instances behind one `op-node`, or vice versa.
24
+
Always run `op-node` and your execution client (`op-geth`or `nethermind`) in a one-to-one configuration. Don't run multiple execution client instances behind one `op-node`, or vice versa.
25
25
</Callout>
26
26
27
27
To configure your node, you will need to do the following:
28
28
29
-
1. Configure `op-node` to point to the correct L1, `op-geth`, and L2 network.
30
-
2. Initialize `op-geth` with the correct network parameters.
31
-
3. Configure `op-geth` to properly communicate with the Rollup Node.
29
+
1. Configure `op-node` to point to the correct L1, execution client, and L2 network.
30
+
2. Initialize your execution client (`op-geth` or `nethermind`) with the correct network parameters.
31
+
3. Configure your execution client to properly communicate with the Rollup Node.
32
32
4. Optionally, configure Legacy Geth.
33
33
34
-
## Configuring `op-geth`
34
+
## Configuring Your execution client
35
+
36
+
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.
37
+
38
+
### Configuring `op-geth`
35
39
36
40
<Callouttype="info">
37
41
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/?utm_source=op-docs&utm_medium=docs).
@@ -146,6 +150,22 @@ geth \
146
150
147
151
Consult [Geth's documentation](https://geth.ethereum.org/docs/) for more information on customizing `op-geth`'s behavior.
148
152
153
+
### Configuring `nethermind`
154
+
155
+
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.
156
+
157
+
#### Working base configuration for Nethermind
158
+
159
+
To run `Nethermind` on the OP Mainnet, use the following command:
160
+
161
+
```bash
162
+
nethermind \
163
+
-c op-mainnet \
164
+
--data-dir path/to/data/dir \
165
+
--jsonrpc-jwtsecretfile path/to/jwt.hex
166
+
```
167
+
Consult [`Nethermind`'s documentation](https://docs.nethermind.io/fundamentals/configuration) for more detailed configuration options.
168
+
149
169
## Configuring `op-node`
150
170
151
171
`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.
@@ -163,6 +183,8 @@ from a Beacon node.
163
183
164
184
A minimal valid configuration that runs `op-node` looks like:
--l1.beacon=<http endpoint address of L1 Beacon-node> \
209
+
--syncmode=execution-layer \
210
+
--l2.enginekind=nethermind
211
+
```
212
+
</Tabs.Tab>
213
+
</Tabs>
177
214
178
215
You can manually specify a path to a rollup config with the `--rollup.config` flag. This is used for testnets or internal deployments that are not migrated from a legacy network.
179
216
@@ -229,6 +266,6 @@ The term *historical execution* refers to RPC methods that need to execute trans
229
266
If you do not need these RPC methods for historical data, then you do not need to run Legacy Geth at all.
230
267
231
268
## Next steps
232
-
* See the [op-node configuration](/operators/node-operators/configuration/consensus-config) guide for additional configuration options for `op-node` and the Consensus-Layer.
233
-
* Similarly, visit the [op-geth configuration](/operators/node-operators/configuration/execution-config) guide for additional configuration options for `op-geth` and Execution-Layer.
269
+
* See the [`op-node` configuration](/operators/node-operators/configuration/consensus-config) guide for additional configuration options for`op-node` and the Consensus-Layer.
270
+
*For execution client configuration, visit [execution client configuration](/operators/node-operators/configuration/execution-config) for additional options when using `op-geth`or `nethermind`
234
271
* If you run into any problems, please reach out to our [developer support forum](https://github.com/ethereum-optimism/developers/discussions) for help.
@@ -154,7 +154,7 @@ Optional self-imposed global rate-limit on L1 RPC requests, specified in request
154
154
155
155
### l1.rpckind
156
156
157
-
The kind of RPC provider, used to inform optimal transactions receipts fetching, and thus reduce costs. Valid options: alchemy, quicknode, infura, parity, nethermind, debug\_geth, erigon, basic, any, standard. The default value is `standard`.
157
+
The kind of RPC provider, used to inform optimal transactions receipts fetching, and thus reduce costs. Valid options: alchemy, quicknode, infura, parity, `nethermind`, debug\_geth, erigon, basic, any, standard. The default value is `standard`.
Copy file name to clipboardExpand all lines: pages/operators/node-operators/json-rpc.mdx
+17-3Lines changed: 17 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1004,10 +1004,24 @@ Sample success output:
1004
1004
todo: add Sample success output
1005
1005
```
1006
1006
1007
-
## op-geth
1007
+
## Execution clients
1008
1008
1009
+
The OP Stack supports multiple execution client implementations. Each client implements the execution layer with minimal changes for a secure Ethereum-equivalent application environment.
1009
1010
1010
-
`op-geth` implements the Execution-Layer, with minimal changes for a secure Ethereum-equivalent application environment.
1011
+
<Tabsitems={['op-geth', 'Nethermind']}>
1012
+
<Tabs.Tab>
1013
+
### op-geth
1014
+
1015
+
`op-geth` is the original execution client for the OP Stack, based on the Go Ethereum (Geth) implementation.
1016
+
1017
+
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.
1018
+
</Tabs.Tab>
1019
+
<Tabs.Tab>
1020
+
### Nethermind
1011
1021
1012
-
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.
1022
+
`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.
1023
+
1024
+
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.
Copy file name to clipboardExpand all lines: pages/operators/node-operators/management/blobs.mdx
+23-8Lines changed: 23 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,16 +41,31 @@ See the [Software Releases](/operators/node-operators/releases) page for the min
41
41
### Configure the Ecotone activation date
42
42
43
43
* 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),
44
-
the Ecotone activation date is part of the `op-node` and `op-geth` nodes. So,
45
-
no action is needed for the sequencer after upgrading to the latest release.
46
-
* For node operators of custom chains not included in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json),
47
-
the activation dates can be set in the `rollup.json` (set `ecotone_time`) or
48
-
set the activation time via overrides (CLI) in both `op-node` and `op-geth`.
49
-
These will need to be set on `op-node` and `op-geth` for the sequencer and all other nodes.
44
+
the Ecotone activation date is handled automatically by both execution clients:
45
+
46
+
<Tabsitems={['op-geth', 'Nethermind']}>
47
+
<Tabs.Tab>
48
+
The activation date is part of the node configuration. No action needed after upgrading to the latest release.
49
+
</Tabs.Tab>
50
+
<Tabs.Tab>
51
+
The activation date is included in the built-in chain configuration. No action needed after upgrading to the latest release.
52
+
</Tabs.Tab>
53
+
</Tabs>
54
+
55
+
* For node operators of custom chains not included in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json):
56
+
57
+
<Tabsitems={['op-geth', 'Nethermind']}>
58
+
<Tabs.Tab>
59
+
Set the activation time in `rollup.json` (`ecotone_time`) and via CLI overrides
60
+
</Tabs.Tab>
61
+
<Tabs.Tab>
62
+
Use the chain configuration examples in `src/Nethermind/Chains` as templates for your custom chain configuration
63
+
</Tabs.Tab>
64
+
</Tabs>
50
65
51
66
<Callouttype="warning">
52
-
Even if the ecotone activation is configured via the `rollup.json`, it still
53
-
needs to be configured separately on `op-geth`via command line flag.
67
+
When using `op-geth`, even if the ecotone activation is configured via the `rollup.json`, it still
68
+
needs to be configured separately via command line flag.
0 commit comments