op-reth (execution client, JSON-RPC and WebSocket) and op-node (consensus client, derives the chain from L1 and peers over libp2p). This section is for teams that want their own RPC endpoint, an indexer or explorer backend, or a private node instead of the public RPC.
Available on Testnet today; Mainnet at launch.
How it works
The Whitechain sequencer is closed and is not reachable from the public internet. Your node never needs access to it. Instead, the node:- Reads L1 batches from your own Ethereum L1 RPC and Beacon endpoints.
- Pulls unsafe blocks from the network over libp2p.
- Forwards
eth_sendRawTransactioncalls to the public Whitechain RPC, which routes them to the sequencer.
This stack holds no project-side private keys. The sequencer, batcher, proposer, and challenger keys stay on the Whitechain side. You operate a follow-only node.
Concepts: storage vs. sync method
A node is defined by two independent choices. Each node profile is a fixed combination of them. Storage: how much stateop-reth keeps:
- Pruned (
--full): keeps only recent state, prunes history. Smallest disk footprint. Serves a complete public RPC for current data. - Archive (no
--full): keeps the full historical state. Largest disk footprint. Required for historical tracing andeth_callat old blocks.
op-reth obtains that state:
- consensus-layer (the
op-nodedefault):op-nodederives the chain from L1 and feeds blocks toop-rethone by one;op-rethre-executes every transaction from genesis. No EL P2P peer needed, but the initial sync is long unless you restore a snapshot. - execution-layer (
--syncmode=execution-layer, “snap”):op-nodeonly drives the head;op-rethsnap-syncs the state directly from a trusted reth peer over EL P2P. Fast, no snapshot restore needed, but it requires a reachable seed peer (WHITECHAIN_RETH_TRUSTED_PEERS). Snap sync cannot build archive state, only pruned.
Node profiles
The stack ships three profiles. Pick one withPROFILE=<profile> or a per-profile make target.
full-snap-node is the recommended default: pruned execution state and the basic RPC namespaces (eth, net, web3, rpc). It bootstraps by snap-syncing from a trusted reth peer (WHITECHAIN_RETH_TRUSTED_PEERS) instead of re-executing the chain, so it needs no snapshot. Use it when you have a reachable seed reth enode. full-node keeps the same pruned state and namespaces but syncs in consensus-layer mode, re-executing the chain from L1. Use it when you have no trusted peer to snap-sync from, and restore a snapshot to avoid a long initial sync. archive-node keeps the full historical state and adds the debug, trace, txpool, and reth namespaces, so it is required for historical eth_call, debug_traceTransaction, and log-heavy indexing. Archive cannot snap-sync, so it always re-executes from L1. Restore a snapshot to avoid a very long initial sync. It needs the most disk and RAM.
Available RPC namespaces
op-reth namespaces depend on the profile:
op-reth exposes no admin namespace on any profile.
op-node exposes an RPC on port 9545, bound to loopback (127.0.0.1) only on every profile, reachable for local monitoring on the host, never from the network:
The
admin namespace is not enabled on op-node either, so no profile exposes administrative or state-mutating methods.
Sending transactions
Applications submit transactions to your localop-reth HTTP port. The node forwards them to WHITECHAIN_PUBLIC_RPC, which routes them to the sequencer. You need no direct access to the sequencer.
If you restart your node, in-flight transactions remain in the public RPC mempool, not in your local node.
What this node does not provide
This is a follow-only RPC node. It does not include block builder or sequencer roles, the batcher, proposer, or challenger, or the Flashblocks pre-confirmation stream. If your application needs sub-second pre-confirmations, contact the Whitechain team for the Flashblocks WebSocket URL. Thepublic-rpc-node stack does not subscribe to the Flashblocks stream.

