Running a Node

Running a Stealth Node

This guide will walk you through setting up your own Stealth Chain Node.


By the end of this guide you should be able to:

  • Deploy and sync a Stealth Chain node



Running a node is time consuming, resource expensive, and potentially costly. If you don't already know why you want to run your own node, you probably don't need to.

If you're just getting started and need an RPC URL, you can use our free endpoint at (or if you're setting up a node on testnet, Note: Our RPCs are rate-limited, they are not suitable for production apps.

If you're looking to harden your dapp and avoid rate-limiting for your users, please check out one of our partners.


This guide assumes you are familiar with Docker and have it running on your machine.


You'll need your own L1 RPC URL. This can be one that you run yourself, or via a third-party provider, such as our partners.

Running a Node

Clone the repo.

Open docker-compose.yml. Find OP_NODE_L1_ETH_RPC, under environment, and replace the link with your L1 RPC URL.

Run docker compose up. Confirm you get a response from:

curl -d '{"id":0,"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false]}' \
  -H "Content-Type: application/json" http://localhost:8545


Syncing your node may take days and will consume a vast amount of your requests quota. Be sure to monitor usage and up your plan if needed.


You can monitor the progress of your sync with:

echo Latest synced block behind by: $((($(date +%s)-$( \
  curl -d '{"id":0,"jsonrpc":"2.0","method":"optimism_syncStatus"}' \
  -H "Content-Type: application/json" http://localhost:7545 | \
  jq -r .result.unsafe_l2.timestamp))/60)) minutes

You'll also know that the sync hasn't completed if you get Error: nonce has already been used if you try to deploy using your node.

Last updated