What this is
A local kaspad on Testnet-10 plus a CPU miner paying a kaspatest: address. tKAS is faucet money. Official line: CPU only so you do not own a tiny testnet.
Node
TN10 is a local kaspad plus a CPU miner paying a kaspatest: address. Mainnet is a real node. Public P2P is optional. This page does not tell you to mine mainnet.
Lab notes from a Windows run, 7 Sep 2026, plus official docs. Pin: rusty-kaspa v2.0.1 or newer. There is no official kaspa.exe. The node is kaspad / kaspad.exe.
| TN10 mine tKAS | Mainnet public node | |
|---|---|---|
| Flag | --testnet --netsuffix=10 | no --testnet |
| Address | kaspatest: | kaspa: (wallet only; this guide is node-only) |
| Miner port | 16210 | do not mine here |
| P2P | testnet | 16111 mainnet |
| Coins | worthless | real KAS |
| Explorer | tn10.kaspa.stream | kaspa.stream |
Local kaspad on Testnet-10 plus a CPU miner paying a kaspatest: address.
A local kaspad on Testnet-10 plus a CPU miner paying a kaspatest: address. tKAS is faucet money. Official line: CPU only so you do not own a tiny testnet.
GitHub puts the zip in Downloads. Do not run from there. Browser plus OneDrive plus kaspa-miner (3).exe is how paths break.
Get rusty-kaspa latest: Windows rusty-kaspa-*-win64.zip, Linux rusty-kaspa-*-linux-amd64.zip, macOS rusty-kaspa-*-osx.zip. CPU miner: kaspanet/cpuminer.
Make a dedicated folder and copy the unzipped files there. Windows: C:\Kaspa\tn10\. Ubuntu / Linux / macOS: ~/kaspa/tn10/. Confirm you see kaspad.exe or kaspad (sometimes in bin/).
Windows after unzip:
New-Item -ItemType Directory -Force -Path C:\Kaspa\tn10 Copy-Item "$env:USERPROFILE\Downloads\rusty-kaspa-*\*" C:\Kaspa\tn10 -Recurse
Linux / macOS:
mkdir -p ~/kaspa/tn10 unzip -o ~/Downloads/rusty-kaspa-*-linux-amd64.zip -d ~/kaspa/tn10 chmod +x ~/kaspa/tn10/kaspad ~/kaspa/tn10/kaspa-wallet ~/kaspa/tn10/rothschild
If the zip dumped a bin/ subfolder, cd there. Copy the miner into the same folder. Rename long GitHub names: kaspa-miner-v0.2.7-win64-amd64 (3).exe becomes kaspa-miner.exe.
Must start with kaspatest:. A kaspa: address is the wrong network.
Kaspa-NG: network Testnet-10, create wallet, copy receive address. CLI: kaspa-wallet in the node zip, against a running TN10 node with --utxoindex. Throwaway: rothschild in the same zip can print a key plus address. Save the key if you want that bag.
Paste the full string into tn10.kaspa.stream search. If it rejects it, you chopped the address or used mainnet. Faucet is optional: faucet-tn10.kaspanet.io. You do not need it to mine.
Windows PowerShell:
cd C:\Kaspa\tn10 dir kaspad.exe .\kaspad.exe --testnet --netsuffix=10 --utxoindex
Ubuntu / Linux / macOS:
cd ~/kaspa/tn10 ./kaspad --testnet --netsuffix=10 --utxoindex
One line. Enter once. Closing this window kills the node. One kaspad only. Windows Firewall: allow private networks.
Fails already hit: command from your home folder is “not recognized” (you are not in the dedicated folder). Two commands glued on one line makes --rpclisten-borsh=default.\kaspad.exe and “invalid IP”. Missing --testnet puts you on mainnet by accident.
Order: validating pruning-point proof (levels counting down). Receiving UTXO set chunks (--utxoindex is slow, hundreds of millions of UTXOs). “Finished receiving the UTXO set” then importing (looks frozen; do not kill it). Live tip: Accepted N blocks via relay every second.
Only step 4 is ready. Plan 1 to 2 hours on a home line.
Node stays up. You do not hard-close kaspad to free the miner. Rename the long miner filename first if needed.
Windows:
cd C:\Kaspa\tn10 .\kaspa-miner.exe --testnet --mining-address kaspatest:YOUR_ADDRESS -s 127.0.0.1 -p 16210 -t 1
Linux / macOS:
cd ~/kaspa/tn10 ./kaspa-miner --testnet --mining-address kaspatest:YOUR_ADDRESS -s 127.0.0.1 -p 16210 -t 1
Port 16210 is TN10 gRPC, not mainnet 16110. -t 1 is one CPU thread. Enough on TN10.
tn10.kaspa.stream address lookup. explorer-tn10.kaspa.org was unreliable. Coinbase stays Confirming until mature. Blue good, red bad. Then bring the address to the playground.
Change address: Ctrl+C the miner only. Restart with the new kaspatest: string. Old coins stay on the old address.
Official line is still CPU only on TN10. GPU is allowed by physics, not by etiquette. One card can own a network that sits around tens of MH/s. There is no public GPU pool for tKAS.
BzMiner to the node: bzminer -a kaspa -w kaspatest:YOUR_ADDRESS -p node+tcp://127.0.0.1:16210 --nc 1. Some builds want solo+tcp://. Do not use stratum+tcp://pool....
Or tmrlvi/kaspa-miner GPU build, -t 0 for GPU only. After Toccata, old miners can hash and still submit invalid blocks. Then use stratum-bridge.exe from the same zip, miner to 127.0.0.1:5555. Do not port-forward stratum.
| Symptom | Actual cause |
|---|---|
| not recognized | Wrong folder. cd to the directory that contains the exe |
| invalid IP / glued flags | Two commands pasted as one line. One command, then Enter |
| Reconnect loop / connection refused | Wrong port (16210 vs 16211 vs 16110), node not listening, or still importing UTXOs |
| Invalid address | You used kaspa: or chopped the string |
| Hashing, zero blocks, rejected submit | Pre-Toccata miner vs Toccata templates. Use the stratum-bridge path |
| Mining instantly at start | Node not synced. You forked yourself |
| Pool dashboard on Wooly or F2 | You are on mainnet. Stop |
Follow real KAS. Public P2P is optional. No miner in this guide.
Follow real KAS. This is not a miner guide. Do not add --testnet. Same release zip, different folder: C:\Kaspa\mainnet\ or ~/kaspa/mainnet/.
SSD. 16 GB RAM minimum, 32 GB more comfortable. 4+ cores. Tens of GB free. Stable link. Mainnet after Crescendo and Toccata is heavier than TN10.
Linux / Ubuntu / macOS:
cd ~/kaspa/mainnet ./kaspad --utxoindex
Windows:
cd C:\Kaspa\mainnet .\kaspad.exe --utxoindex
Optional local RPC. Keep it local:
./kaspad --utxoindex --rpclisten=127.0.0.1:16110
Do not expose 16110. IBD is long. Same rule: do not kill during UTXO import. One process per data dir.
Logs look like live tip: accepted blocks via relay, steady processed N blocks, not receiving UTXO set or pruning-level validation. Then a wallet can attach to 127.0.0.1:16110.
Foreground is fine for learning. Linux user systemd or tmux on Mac. One kaspad per data dir. Two processes on the same data dir is a lock or corruption.
Update: stop cleanly, overwrite kaspad, start again. Stay on 2.0.1+ (Toccata). Same data dir. Do not delete the DB unless the release notes say to resync.
You can sync forever as a private follower. Public means others can dial in on P2P 16111/tcp on a real public IP.
Router: forward 16111 to this machine. Firewall allow 16111 (sudo ufw allow 16111/tcp on Ubuntu). Do not bind P2P to 127.0.0.1. Need a real public IP. CGNAT means you will never list. RPC stays private. Public node is not open RPC.
kaspa.stream/nodes. Use Check your node. If the crawler sees you, the page highlights you. Want user agent kaspad:2.0.1 (Toccata). Wait 10 to 30 minutes after opening the port.
Extra port test: kaspa.host on mainnet 16111. Not listed means private follower. That is still a valid node. The chain does not require you to be on the public list.
Wrong flag, wrong prefix, wrong pool.
| Wrong | What happens |
|---|---|
--testnet on the mainnet folder | you sync TN10 |
kaspa: on the TN10 miner | wrong network or fail |
| Wooly / F2 / K1 while mining tKAS | mainnet KAS |
| Two kaspad on one DB | lock or corruption |
| Binaries left in Downloads | path and (3).exe mess |
| GPU or ASIC on public TN10 | you can own a tiny network |
TN10: dedicated folder, synced testnet node, one CPU thread on 127.0.0.1:16210, kaspatest: address.
Mainnet: dedicated folder, kaspad --utxoindex, optional 16111, then kaspa.stream/nodes.