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/tcpfor P2P and9334/tcpfor 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 paid → Receive a payment walks through sharing the address and watching for the incoming transaction.
- Pay someone → Send a payment, once you have some EXFER in the wallet.
- Survive reboots → Run as a service makes the node start automatically and restart on failure.
- Don't lose the wallet → Backup & recovery explains the three things to back up and which ones matter most.