Node operators

Run a Robinhood Chain node

Robinhood Chain is an Arbitrum chain running Nitro, so a full node is the Nitro image pointed at Robinhood's chain config and an Ethereum endpoint. Hardware, the Docker command, both sequencer feeds, sync checks and snapshots, from Robinhood's full-node guide, read 2026-10-13.

Updated

First

Do you need a node?

Robinhood's own guide puts it plainly: if you do not already know why you need your own node, you probably do not. For reads and transactions, the public RPC endpoints (with live status) and the keyed providers cover it. A node earns its cost when you need wide eth_getLogs ranges without a rate limit, trace and debug calls on your own terms, or no third party between your app and the chain.

Requirements

Robinhood Chain node hardware and prerequisites

CPU
Modern multi-core CPU, 8+ cores, strong single-core performance
RAM
64 GB (128 GB recommended)
Storage
Locally attached NVMe SSD: 2 x the current chain size plus 20%, several TBArchive nodes need substantially more disk
Ethereum execution RPC
RequiredYour own L1 node or a provider. Your own must be fully synced first
Ethereum beacon endpoint
RequiredRobinhood Chain posts its data to Ethereum as blobs; the beacon endpoint is how the node reads them
Docker
Installed and running
Config

Chain config files and mounts

Download the files from Robinhood's full-node guide into one directory, for example $HOME/rh/config.

Mainnet
robinhood-chain-info.json + robinhood-genesis.jsonChain info and a custom genesis
Testnet
robinhood-chain-testnet-info.jsonNo custom genesis, so the testnet command drops --init.genesis-json-file
Config mount
/home/nitro/configWhere the commands below read the files from
Data mount
/home/nitro/.arbitrumThe image runs as the nitro user; mounted anywhere else, the node cannot persist chain data
Mainnet

Start a Robinhood Chain mainnet node

Robinhood's command with both sequencer feeds added, as its guide recommends. The image tag is the one the guide named on 2026-10-13; check the notices before you pin it.

L1_RPC="https://..."      # Ethereum execution endpoint, yours or a provider's
L1_BEACON="https://..."   # Ethereum beacon endpoint, needed for blob data
DATA_DIR="$HOME/rh/robinhood-nitro-data"

docker run --rm -it \
  -v "$DATA_DIR":/home/nitro/.arbitrum \
  -v "$HOME/rh/config":/home/nitro/config \
  -p 8547:8547 -p 8548:8548 \
  offchainlabs/nitro-node:v3.11.2-3599aca \
  --chain.info-files=/home/nitro/config/robinhood-chain-info.json \
  --parent-chain.connection.url="$L1_RPC" \
  --parent-chain.blob-client.beacon-url="$L1_BEACON" \
  --init.genesis-json-file=/home/nitro/config/robinhood-genesis.json \
  --node.feed.input.url=wss://feed.mainnet.chain.robinhood.com \
  --node.feed.input.url=wss://delayed-feed.mainnet.chain.robinhood.com \
  --http.addr=0.0.0.0 --http.port=8547 \
  --http.api=net,web3,eth
Feeds

Robinhood Chain sequencer feeds

The feed is how a node hears about new transactions as the sequencer orders them, instead of waiting for batches on Ethereum. Feed URLs must be wss://, and they are not JSON-RPC.

Primary feed
wss://feed.mainnet.chain.robinhood.comReal time, best-effort, no uptime guarantee. Compressed-only since 17 September 2026, per Robinhood's notices
Delayed feed
wss://delayed-feed.mainnet.chain.robinhood.comAbout 500 ms behind the primary, on separate hardened capacity: the supported fallback
Testnet feed
wss://feed.testnet.chain.robinhood.com

Two ways to wire the delayed feed. Pass both URLs to --node.feed.input.url, as in the command above, and the node connects to both and de-duplicates by sequence number: no added latency, and no reconnect gap if the primary degrades. Robinhood recommends this. Or keep the delayed feed as a strict standby that only takes over when the primary drops:

--node.feed.input.url=wss://feed.mainnet.chain.robinhood.com \
--node.feed.input.secondary-url=wss://delayed-feed.mainnet.chain.robinhood.com
Testnet

Robinhood Chain testnet node

The testnet (chain ID 46630) runs the same image with robinhood-chain-testnet-info.json as its chain info file and no --init.genesis-json-file flag. Its feed is wss://feed.testnet.chain.robinhood.com.

Sync

Check the node and its sync

The node answers
curl -s -d '{"id":0,"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false]}' -H "Content-Type: application/json" http://localhost:8547
Fully synced when this returns false
curl -s -d '{"id":0,"jsonrpc":"2.0","method":"eth_syncing","params":[]}' -H "Content-Type: application/json" http://localhost:8547

The first sync takes a long time and spends a lot of L1 requests, so watch your provider's quota. A transaction sent before the node has caught up can fail with "nonce has already been used": wait for the sync to finish.

Snapshots

Start from a database snapshot

Restore
--init.url=<snapshot-url>On the node's first start, instead of syncing from genesis
Validators

Running a validator

Robinhood Chain resolves disputes with BoLD through a permissioned set of validators. A validator has to be on the allowlist and stake a 1 WETH bond; Robinhood encourages defensive validators.

FAQ

Robinhood Chain node questions

How do I run a Robinhood Chain node?

Run the Arbitrum Nitro image (offchainlabs/nitro-node:v3.11.2-3599aca as of 2026-10-13) with Robinhood's chain info file (robinhood-chain-info.json) and genesis file (robinhood-genesis.json) mounted at /home/nitro/config, a data directory mounted at /home/nitro/.arbitrum, and an Ethereum execution and beacon endpoint passed as --parent-chain.connection.url and --parent-chain.blob-client.beacon-url. Add the sequencer feed with --node.feed.input.url, then wait until eth_syncing returns false.

What hardware does a Robinhood Chain node need?

Robinhood's guide asks for a modern multi-core cpu, 8+ cores, strong single-core performance, 64 GB (128 GB recommended) of RAM, and locally attached NVMe SSD: 2 x the current chain size plus 20%, several TB. That is for a full node; an archive node needs substantially more disk.

What is wss://feed.mainnet.chain.robinhood.com?

Robinhood Chain's sequencer feed: a WebSocket stream of the sequencer's ordered transactions that Nitro nodes subscribe to with --node.feed.input.url so they see new blocks with low latency. It is real time but best-effort, with no uptime guarantee; wss://delayed-feed.mainnet.chain.robinhood.com is the backup, about 500 ms behind on separate capacity. Running both at once is what Robinhood recommends.

Can I use wss://feed.mainnet.chain.robinhood.com as a WebSocket RPC?

No. The feed speaks Nitro's broadcast protocol, not JSON-RPC, so eth_subscribe and eth_call do not work on it. For a WebSocket RPC on chain 4663, use a provider such as Alchemy, dRPC or Tatum, or run your own node and enable its WebSocket port.

Do I need my own Ethereum node to run a Robinhood Chain node?

No, but you need two Ethereum (L1) endpoints, your own or a provider's: an execution RPC and a beacon (consensus) endpoint, which the node uses to read blob data. If you run your own L1 node it must be fully synced first. The initial sync uses a lot of L1 requests, so watch your provider quota.

Can I run a Robinhood Chain validator?

Only from an allowlist. Robinhood Chain resolves disputes with BoLD through a permissioned set of validators; a validator must be added to the allowlist and stake a 1 WETH bond. Robinhood encourages defensive validators.

Keep going