Building the source code
You’ll need to buildop-node
and execution client (op-geth
or Nethermind
) from their respective source repositories before you can run a node.
Make sure to follow the instructions on Building a Node from Source before continuing.
Hardware requirements
Hardware requirements for OP Mainnet nodes can vary depending on the type of node you plan to run. Archive nodes generally require significantly more resources than full nodes. Below are suggested minimum hardware requirements for each type of node.- 16GB RAM
- Reasonably modern CPU
SSD capacity requirements
Given the growing size of the blockchain state, choosing the right SSD size is important. Below are the storage needs as of June 2025:- Full Node: The snapshot size for a full node is approximately 700GB, with the data directory’s capacity increasing by about 100GB every six months.
- Archive Node: The snapshot size for an archive node is approximately 14TB, with the data directory’s capacity increasing by about 3.5TB every six months. A local SSD with a NVME interface is recommended for archive nodes
Superchain nodes
All nodes in the Superchain ecosystem can be run fromop-node
and an execution client (op-geth
or Nethermind
) if they’re included in the Superchain Registry. You can specify the type of node you want to run by configuring the --network
flag on op-node
and the corresponding network flag on your execution client (--op-network
for op-geth
or -c
for Nethermind
).
Assess blob archiver
Assess if you need to configure a blob archiver service by reading the Configure a Blob Archiver documentation.Create a JWT secret
The execution client andop-node
communicate over the engine API authrpc.
This communication is secured using a shared secret.
You will need to generate a shared secret and provide it to both your execution client and op-node
when you start them.
In this case, the secret takes the form of a 32 byte hex string.
Run the following command to generate a random 32 byte hex string:
Start the execution client
It’s generally easier to start the execution client before startingop-node
.
You can still start the execution client without yet running op-node
, but it will simply not receive any blocks until op-node
is started.
Start op-node
Once you’ve started your execution client, you can start op-node
.
op-node
will connect to the execution client and begin synchronizing the OP Mainnet state.
op-node
will begin sending block payloads to the execution client when it derives enough blocks from Ethereum.
1
Navigate to your `op-node` directory
Find the directory where you built the
op-node
binary.2
Copy in the JWT secret
Both the execution client and
op-node
need to use the same JWT secret.
Copy the JWT secret you generated in a previous step into the op-node
directory.3
Set environment variables
Set the following environment variables:
4
Start `op-node`
Use the following command to start
op-node
in a default configuration.
Refer to the op-node
configuration documentation for more detailed information about available options.The
op-node
RPC should not be exposed publicly. If left exposed, it could
accidentally expose admin controls to the public internet.Sync mode is set to
--syncmode=execution-layer
to enable snap sync
for both op-geth
and Nethermind
, removing the need to initialize the node with a data directory.Some L1 nodes, like Erigon, do not support the
eth_getProof
RPC method that the op-node
uses to load L1 data for certain processing steps.
If you are using an L1 node that does not support eth_getProof
, you will need to include the --l1.trustrpc
flag when starting op-node
.
Note that this flag will cause op-node
to trust the L1 node to provide correct data as it will no longer be able to independently verify the data it receives.Synchronization verification
Once you’ve started your execution client andop-node
you should see them begin to communicate with each other and synchronize the OP Mainnet chain.
Snap sync (default)
Full sync
For OP Mainnet you will need access to the migrated database to run a full node with full sync.
You can migrate your own data directory or follow the options available for archive nodes.
op-node
as it requests them from Ethereum one-by-one and determines the corresponding OP Mainnet blocks that were published.
You should see logs like the following from op-node
:
OP Mainnet archive nodes
You only need an archive node if you need the historical state. Most node operators should default to full nodes.
Get the migrated data directory
OP Mainnet underwent a large database migration as part of the Bedrock Upgrade in 2023. You will need access to the migrated OP Mainnet database to run an archive node. You can migrate your own data directory or simply download database that has already been migrated. In this section, you’ll learn how to download and verify the pre-migrated database.1
Download the Migrated Data Directory
Click the link below to find the latest publicly available database snapshots for OP Mainnet.
Snapshots are available for multiple dates and snapshots get larger as they get closer to the current date.
Snapshots are large files and may take some time to download.
OP Mainnet Snapshots
2
Verify the Download
You should always verify the integrity of your downloads to ensure that they have not been corrupted.
A corrupted database can include invalid data or may cause your node to fail.
Verify the integrity of the download by checking the SHA256 checksum of the downloaded file.For instance, if you’ve downloaded the very first database snapshot, you can verify the download by running the following command:You should see the following output:Your exact output will depend on the snapshot you’ve downloaded.
Check the OP Mainnet Snapshots page for the correct checksum for the snapshot you’ve downloaded.
3
Extract the Data Directory
Once you’ve downloaded the database snapshot, you’ll need to extract it to a directory on your machine.
This will take some time to complete.For instance, if you’ve downloaded the very first database snapshot, you can extract it by running the following command:
4
Configure `op-geth` for archive mode
Set
--syncmode=full
and --gcmode=archive
on op-geth
.Get the legacy Geth directory (optional)
Blocks and transactions included in OP Mainnet before the Bedrock Upgrade cannot be executed by modern OP Mainnet nodes. OP Mainnet nodes will serve these blocks and transactions but cannot run certain queries against them (e.g.eth_call
).
If you need to run stateful queries like eth_call
against these older blocks and transactions, you will need to run a Legacy Geth node alongside your OP Mainnet node.
Running a Legacy Geth node is entirely optional and typically only useful for operators who want to run complete archive nodes of the OP Mainnet state.
If you want to run a full node then you can safely skip this section.
1
Download the Legacy Geth Data Directory
Click the link below to download the latest publicly available database snapshot for Legacy Geth.
This is a very large file (2.9TB), so expect the download to take some time to complete.Legacy Geth Data Directory (2.9TB)
2
Verify the Download
You should always verify the integrity of your downloads to ensure that they have not been corrupted.
A corrupted database can include invalid data or may cause your node to fail.
Verify the integrity of the download by checking the SHA256 checksum of the downloaded file.You should see the following output:If you see a different output, then the download is corrupted and you should try downloading the file again.
3
Extract the Data Directory
Once you’ve downloaded the database snapshot, you’ll need to extract it to a directory on your machine.
This will take some time to complete.
Start legacy Geth (optional)
If you’ve chosen to run a Legacy Geth node alongside your OP Mainnet node, you’ll need to start it before you start your OP Mainnet node.1
Navigate to your Legacy Geth directory
Find the directory where you built the
l2geth
binary.2
Start l2geth
Run the following command to start
l2geth
:Next steps
- 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.