Topology
A sensible minimum is three nodes on separate hosts:
Comparing the head of each node against the others, and against the
status page, is how you notice that
one of them has been cut off from the network or fed a different chain. Two
nodes on the same host or behind the same NAT protect against far less.
Size the hosts from Hardware requirements.
An archive node needs considerably more disk than a pruned one and grows
with every block.
Install
Download a release from GitHub and verify its SHA256 hash before running it, or use the Docker image. Run onlystable releases on mainnet, never rc or unstable builds. See
Installing the client
and Versioning.
Each release ships three binaries:
parallaxd, the node.parallax-cli, abitcoin-cli-style client for scripts and health checks. See Command-line RPC.parallax-wallet, an offline key tool that never talks to a node. See parallax-wallet.
Configure
Settings can be passed as flags or kept in a TOML file loaded with--config. Generate a template from your flags with parallaxd dumpconfig;
see Config files. Flags
given on the command line override the file.
A deposit indexer, as a systemd service:
/etc/systemd/system/parallaxd.service
TimeoutStopSec generous: on shutdown the node flushes its caches to
disk, and killing it part-way forces a slower recovery on the next start.
Ports
To accept inbound peers, forward TCP and UDP 32110. A node that only makes
outbound connections still works, but nodes with inbound peers see blocks
sooner and are harder to isolate. See Connecting to peers.
Lock down JSON-RPC
- Bind to localhost.
--http.addrand--ws.addrdefault to127.0.0.1. Keep it that way, or bind to a private interface that only your services can reach, behind a firewall. Never expose 8545 or 8546 to the internet. - If services on other hosts need RPC, put a proxy in front. Terminate TLS and authenticate at a reverse proxy (mTLS, or a key header) and forward to the node on localhost. Allow only the methods those services use.
- Serve only the namespaces you need. HTTP and WebSocket default to
eth,net,web3. Addtxpoolfor mempool visibility. Adddebugonly on the deposit indexer, only on localhost, because it can also rewind the chain (debug_setHead) and run expensive traces. Never serveadmin,personalorminerover HTTP. Use IPC for administration. - Keep keys off your nodes. Leave the node keystore empty and sign
withdrawals elsewhere (see Withdrawals). The
node refuses to unlock accounts while HTTP or WebSocket is enabled unless
you pass
--allow-insecure-unlock, and you should not. - Set
--http.vhoststo the host names your proxy forwards with, if notlocalhost, and leave--http.corsdomainempty. Browsers have no reason to talk to an exchange node.
History and indexing
How much history a node keeps decides what your scanner can ask it:
A deposit indexer that has fallen behind (after downtime, or rebuilding from
scratch) needs to trace blocks older than 128, so give it an archive node.
See Sync modes and
Pruning.
Health checks
Before crediting anything, your scanner should know the node is synced and current. Check, at least once a minute:- reports
eth_syncingas anything butfalse; - has fewer than about 8 peers (
net_peerCount); - has a head block more than about 2 hours old. Blocks average 10 minutes, so a 2-hour gap is very unlikely while miners are working, and points to an isolated node, a network-wide halt, or a large miner holding back blocks. Confirmations covers what each means;
- disagrees with your other nodes on the hash at a height more than a couple of blocks below the head. Disagreement at the very tip is a normal block race and settles within a block or two.
--metrics. See
Metrics and
Dashboards.
Reporting to the status page
Nodes can report their view to status.parallaxprotocol.org with--prlstats. More reporting nodes make its figures more robust, but a
reporting node’s name, client version, country and latency become public.
Exchanges usually leave their custody nodes off it. If you want to
contribute, report from a separate node that holds nothing; see
Setting up a node.
Upgrades
Parallax treats consensus rules the way Bitcoin does: they are meant to stay fixed, and a release is not an occasion to change them. Most releases are optional bug fixes and features. On the rare occasion a consensus change is needed, it activates at a block height, and the release carrying it is mandatory. Release notes say so explicitly. See Versioning.- Watch GitHub releases (GitHub can notify you of new releases only).
- Run
parallaxd version-checkfrom monitoring. It downloads the project’s signed list of known vulnerabilities and reports whether your binary is affected. - Upgrade the watcher first, then the broadcaster, then the indexer. A node restart is quick, but blocks keep arriving: let the scanner catch up before resuming credits.
- The status page shows how many reporting nodes run the latest release,
and raises an
infoalert when some are behind.

