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

Quick start

This walkthrough takes you from nothing installed to a running Exfer node with a wallet that's ready to receive payments. About five minutes of your time, plus however long the initial sync takes.

We use the pre-built Linux binary below; macOS and Windows downloads work the same way and are covered in Install. If you prefer to compile from source, that's there too.

1. Download the binary

curl -LO https://github.com/ahuman-exfer/exfer/releases/latest/download/exfer-linux-x86_64
chmod +x exfer-linux-x86_64
mv exfer-linux-x86_64 exfer

That's a single self-contained binary — no system dependencies beyond the usual C runtime. Place it wherever you like (./exfer is fine for now, but moving it to /usr/local/bin/exfer makes it available everywhere).

2. Bootstrap a node and wallet in one command

./exfer init

init creates an encrypted wallet, starts a full node, and begins syncing the chain. You'll be prompted for a wallet passphrase — pick something strong and write it down somewhere durable, because there is no seed phrase recovery; the encrypted key file plus the passphrase are the only things between you and your funds.

If you're scripting this — for CI, an agent, or a server — pass the passphrase non-interactively instead:

EXFER_PASS="your-passphrase" ./exfer init --passphrase-env EXFER_PASS --json

By default everything lands under ~/.exfer/: the wallet at ~/.exfer/wallet.key and the chain data alongside it. Add --mine if you want to start mining at the same time.

3. Watch it sync

The first time a node starts, it goes through an initial block download (IBD): finding peers, fetching headers, then fetching block bodies, validating as it goes. Peers are discovered automatically through DNS (seed.exfer.org) — you don't need to specify them.

You'll see this in the log when the cold-sync portion finishes:

INFO exfer: Sync manager: cold-bootstrap IBD complete
INFO exfer: IBD complete at height 559300

After that, new blocks arrive at roughly the 10-second target cadence.

You can check 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 any community node. When the two are within a block or two of each other, you're caught up.

4. Grab your address

./exfer wallet info --wallet ~/.exfer/wallet.key --json

The output:

{
  "address": "8d896d64864f53214acb49aeb44a09a03d5bb23d19a417a6ce7b0da65c7bd750",
  "pubkey":  "fcbd5a818501cd5439ebe8c0c5ff244c0f1475333e226b7f998e6eb80552c69d"
}

The 64-hex address is what you give to anyone paying you. The pubkey is what you'd configure on a mining server (see Solo mine) so that the server never needs to hold your private key.

5. You're done

You now have:

  • a full node listening on 9333/tcp for P2P and 9334/tcp for RPC (localhost only),
  • an encrypted wallet at ~/.exfer/wallet.key,
  • an address that others can pay.

Where to go next depends on what you want to do:

  • Get paidReceive a payment walks through sharing the address and watching for the incoming transaction.
  • Pay someoneSend a payment, once you have some EXFER in the wallet.
  • Survive rebootsRun as a service makes the node start automatically and restart on failure.
  • Don't lose the walletBackup & recovery explains the three things to back up and which ones matter most.