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 --rollup.sequencerhttp flag is correctly set.
  • Mainnet: --rollup.sequencerhttp=https://cel2-sequencer.celo.org/
  • Celo Sepolia: --rollup.sequencerhttp=https://sequencer.celo-sepolia.celo-testnet.org
If you are hosting a public RPC node, please make sure the flag --history.transactions is set to 0 in op-geth (i.e. --history.transactions=0), so all transactions are indexed. Otherwise, transactions will not be retrievable by hash.

Checking Sync Progress

If you are unsure whether your node is syncing, follow the op-geth logs and watch the sync percentage climb:
docker compose logs -n 50 -f op-geth
You can also run ./progress.sh from the celo-l2-node-docker-compose repo, or query the head block number — it returns 0 until the node is fully synced, then increases over time:
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_GETH__NAT to extip:<your-public-ip> rather than relying on auto-detection.
  • Make sure the P2P ports are reachable (op-geth 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.