Skip to main content
This page covers the operational lifecycle of a Quantum Chain node after it’s installed.

Startup

A typical systemd unit:
# /etc/systemd/system/geth.service
[Unit]
Description=Quantum Chain geth
After=network-online.target

[Service]
Type=simple
User=geth
ExecStart=/usr/local/bin/geth \
  --datadir /var/lib/geth \
  --networkid 20803 \
  --syncmode snap \
  --http --http.addr 127.0.0.1 --http.api eth,net,web3 \
  --metrics --metrics.addr 127.0.0.1 --metrics.port 6060
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
systemctl enable --now geth
journalctl -u geth -f

Health and readiness

Quantum Chain exposes the standard geth health endpoints:
RPC methodPurpose
eth_blockNumberLatest block; should advance every ~15s on mainnet
eth_syncingReturns sync status; false when fully synced
net_peerCountNumber of connected peers
admin_nodeInfoNode identity, enode URL
A simple liveness probe:
curl -s -X POST http://127.0.0.1:8545 \
  -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","method":"eth_blockNumber","id":1,"params":[]}' \
  | jq -r '.result'

Metrics

Enable Prometheus-compatible metrics with:
geth ... --metrics --metrics.addr 0.0.0.0 --metrics.port 6060
Key metrics:
MetricMeaning
chain/head/blockLatest block number
chain/head/headerLatest header number; block - header should be 0
eth/db/chaindata/disk/sizeDatabase size in bytes
p2p/peersPeer count
txpool/pendingPending transactions in pool
txpool/queuedFuture transactions
system/cpu/sysloadOS CPU load

Logs

Logs are structured. Increase verbosity with:
geth --verbosity 4    # 0=silent ... 5=debug
Or per-module via --vmodule consensus=4,p2p=3.

Sync states

StateMeaning
Receiving headersFirst phase of snap sync
Importing block headersHeader chain catching up
Importing snapshot chunksDownloading the latest state snapshot
Block synchronizationBlock bodies and receipts
SyncedUp to head; tracking new blocks

Backups

Snap and full sync nodes are stateless — you can wipe and resync. Archive nodes hold irreplaceable historical state; back them up with:
systemctl stop geth
tar -C /var/lib --use-compress-program=zstd -cf /backup/geth-$(date +%F).tar.zst geth
systemctl start geth
For online backups without stopping the node, use a copy-on-write filesystem (ZFS, btrfs).

Upgrades

Quantum Chain releases ship as tagged commits in this repository.
  1. Read the release notes for hard-fork activation blocks.
  2. Build the new binary on a staging node.
  3. Update validators within the upgrade window — sealers running an outdated binary after the fork height will produce blocks rejected by the network.
  4. Roll RPC nodes after validators.

Pruning

To reclaim disk on a --gcmode full node:
systemctl stop geth
geth snapshot prune-state --datadir /var/lib/geth
systemctl start geth
prune-state rewrites the trie and may take several hours.

Where to go next