Skip to main content
A public RPC node serves JSON-RPC requests to external clients. This page covers the settings specific to operating one; to get a node running first, see Run a node with Docker.

Index all transactions

Set --history.transactions=0 on op-geth so the full transaction history is indexed and every transaction is retrievable by hash. The celo-l2-node-docker-compose setup sets this by default. Without it, transactions cannot be looked up by hash.

Forward transactions to the sequencer

Set --rollup.sequencerhttp so transactions submitted to your endpoint are forwarded to the sequencer and executed:
  • Mainnet: https://cel2-sequencer.celo.org
  • Celo Sepolia: https://sequencer.celo-sepolia.celo-testnet.org
This is set for you by the compose setup. If it is missing or wrong, transactions submitted to your node are accepted but never executed.

Exposing the endpoint

op-geth serves JSON-RPC over HTTP on port 9993 and WebSocket on 9994 by default (configurable via PORT__OP_GETH_HTTP and PORT__OP_GETH_WS — see the Configuration reference). The compose setup enables the web3,debug,eth,txpool,net,engine namespaces on the HTTP endpoint. When exposing this publicly, put a reverse proxy or load balancer with rate limiting in front of it, and be deliberate about which RPC namespaces you expose to untrusted clients.

Earning rewards

If you want to earn protocol rewards for operating a public RPC endpoint, register it with the Community RPC program: