Skip to main content

Transactions Are Not Being Executed When Submitted to a Node

If your node is synced but transactions submitted to it are not executed, make sure the sequencer endpoint is correctly set. op-reth forwards transactions to the sequencer via the --rollup.sequencer flag, which the compose setup sets for you from OP_RETH__SEQUENCER_URL:
  • Mainnet: --rollup.sequencer=https://cel2-sequencer.celo.org
  • Celo Sepolia: --rollup.sequencer=https://sequencer.celo-sepolia.celo-testnet.org
If you are hosting a public RPC node, see Run a public RPC node for serving transaction lookups by hash.

Checking Sync Progress

If you are unsure whether your node is syncing, follow the op-reth logs and watch it execute blocks toward the chain tip:
docker compose logs -n 50 -f op-reth
You can also run ./progress.sh from the celo-l2-node-docker-compose repo, or query the head block number — it climbs as the node syncs and then tracks the network’s latest block:
cast block-number --rpc-url http://localhost:9993
See Monitoring & metrics for the Grafana dashboard and the metrics that show sync health.

Node Is Not Syncing or Has No Peers

If your node stalls or falls behind the sequencer, it usually has too few peers. Check op_node_default_peer_count (see Monitoring & metrics); if it is low or zero, your node cannot discover or reach other nodes. This is almost always a P2P configuration problem:
  • Set OP_NODE__P2P_ADVERTISE_IP to your node’s public IP.
  • Set OP_RETH__NAT to extip:<your-public-ip> rather than relying on auto-detection.
  • Make sure the P2P ports are reachable (op-reth 30303, op-node 9222 by default).
See the Configuration reference for these variables. Because op-node now syncs via the execution layer, healthy execution-client peer connectivity is required — see Deprecation of Req/Res CL P2P Sync.

Getting Help

Please reach out to our team on Discord in the #celo-L2-support channel if you have any questions.