Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Sync the chain

A fresh node has no blocks. On first startup it performs an initial block download (IBD): connect to peers, download headers, then bodies, validating along the way.

Start syncing

exfer node --datadir ~/.exfer --rpc-bind 127.0.0.1:9334

Peers are discovered automatically via DNS (seed.exfer.org) and a hardcoded fallback list — no --peers needed. To pin manual peers:

exfer node --datadir ~/.exfer --peers 82.221.100.201:9333 --peers 89.127.232.155:9333

What you'll see in the log

INFO exfer: Node starting on 0.0.0.0:9333
INFO exfer: P2P listener bound
INFO exfer: Sync manager: cold-bootstrap IBD complete
INFO exfer: IBD complete at height 559300

After IBD complete, the node tracks the tip and accepts new blocks live (~one every 10 s).

Watch progress

From another terminal:

curl -s -X POST http://127.0.0.1:9334 \
    -H 'content-type: application/json' \
    -d '{"jsonrpc":"2.0","method":"get_block_height","params":{},"id":1}'

Compare the returned height against a community node (or the dashboard on this site). When they match within a block or two, you are synced.

Speeding up the first sync

By default, blocks at or below the hardcoded checkpoint height (130 000) skip Argon2id PoW verification during IBD. This dramatically cuts cold sync time. All other validation (block linkage, signatures, UTXO accounting, state root, coinbase rules, timestamps) is still performed for every block.

The trust assumption is the binary author, not your peers — the checkpoint hash guarantees the canonical chain. If the block at the checkpoint height does not match, the chain is rejected.

To opt out:

exfer node --datadir ~/.exfer --no-assume-valid
# or to also re-verify every replayed block:
exfer node --datadir ~/.exfer --verify-all

--verify-all is for paranoid scenarios (suspected database corruption, hardware faults). It implies --no-assume-valid.

How long does a cold sync take?

Order of magnitude — varies by disk speed, network, and host CPU:

PhaseApprox. duration on a typical VPS
Header chaina few minutes
Pre-checkpoint blocks (assume-valid)tens of minutes
Post-checkpoint blocks (full PoW verify)growing with tip height

If you can copy a recent ~/.exfer/chain/ and ~/.exfer/state/ from a trusted machine, you can skip most of this — see Backup & recovery for the cautions.

Stay in sync after the first run

The node stays running and follows the tip. To restart cleanly after a reboot, use a system service — see Run as a service.

If the node falls behind (network outage, host suspended), it automatically catches up on the next start; no special command needed.

Common sync issues

See Troubleshooting. The most frequent ones:

  • Stuck at one height for minutes — usually a slow peer; the sync manager rotates to a different peer after a timeout.
  • Address already in use on 9333 — another exfer instance is running, or that port is taken. See Troubleshooting.
  • Permissions on node_identity.key are too open — pass --repair-perms to auto-fix.