These RC3 binaries are not the published files on bitcoinknots.org. Download v29.4.1.knots20260508rc3 for your architecture (for example x86_64-linux-gnu or aarch64-linux-gnu) from:
test.bitcoinknots.org RC3 directory
Check the build against SHA256SUMS and SHA256SUMS.asc in that directory. Sync with chain=testnet4.
1. Knots on testnet4
Minimal bitcoin.conf:
chain=testnet4
server=1
txindex=1
blake2b_headline=Catbus
[testnet4]
rpcport=8332
rpcbind=127.0.0.1
rpcallowip=127.0.0.1
rpcuser=USER
rpcpassword=PASS
# optional: notify DATUM on new blocks
blocknotify=curl -fsS -o /dev/null http://127.0.0.1:7152/NOTIFY
Default P2P port is 48333, not 8333.
bitcoin-cli -rpcport=8332 getblockchaininfo
bitcoin-cli -rpcport=8332 getdeploymentinfo # hardfork.height == 150027
2. DATUM Gateway fork
git clone https://github.com/justinfilip/datum_gateway.git
cd datum_gateway
# build per README (cmake + libmicrohttpd, jansson, curl, libsodium, …)
Use a build that includes commit 56c31f4 (pow: Include header-v2 bit in BLAKE2b H1 commitment version) or later. Without that change, share proof of work will not match Knots RC3 GetHash.
Example datum_gateway_config.json:
{
"bitcoind": {
"rpcuser": "USER",
"rpcpassword": "PASS",
"rpcurl": "http://127.0.0.1:8332"
},
"stratum": { "listen_addr": "0.0.0.0", "listen_port": 23334 },
"api": {
"listen_addr": "0.0.0.0",
"listen_port": 7152,
"admin_password": "CHANGE_ME",
"modify_conf": true
},
"mining": {
"pool_address": "tb1q…your_testnet4_address…",
"coinbase_tag_primary": "MyTag",
"coinbase_tag_secondary": "Catbus",
"pow_algorithm": "auto"
},
"datum": { "pool_host": "", "pooled_mining_only": false }
}
datum_gateway -c /path/to/datum_gateway_config.json
- UI:
http://HOST:7152(digest auth usesadmin_password) - Stratum:
stratum+tcp://HOST:23334
Keep "pow_algorithm": "auto". Do not force "blake2b" before height 150027. Set coinbase_tag_secondary to exactly Catbus. Knots requires the headline bytes in the coinbase. This DATUM build does not copy coinbaseaux.blake2b_headline into the coinbase for you, so the secondary tag is how those bytes get into scriptSig.
3. Miners
| When | Work | Useful hardware |
|---|---|---|
| Tip below 150027 | SHA256d | S9 / Bitaxe / similar |
| Tip 150027 or higher | BLAKE2b (header v2) | BLAKE2b and BLAKE2b-sia miners |
Point the miner at your stratum URL. The username can be any worker name DATUM accepts. A payout address is a common choice.
After activation, confirm GBT advertises blake2b:
bitcoin-cli -rpcport=8332 getblocktemplate '{"rules":["segwit","blake2b"]}'
# expect "!blake2b" in rules; coinbaseaux.blake2b_headline should be hex for "Catbus"
4. Optional peer
addnode=OTHER_HOST:48333
What working looks like
Before activation (tip below 150027)
- Knots syncs testnet4.
getdeploymentinfoshows hardfork height 150027 andactive: false. - GBT does not yet require blake2b: no
!blake2binrules.coinbaseauxis typically empty even if the client advertises blake2b support. - DATUM with
autoserves SHA256d stratum jobs. SHA256d miners connect, get work, and submit shares. - BLAKE2b and BLAKE2b-sia miners are not useful yet. They need BLAKE2b jobs after the hardfork.
- Quiet testnet4 often sits at minimum difficulty and moves about every 20 minutes unless someone is mining.
At and after activation (tip 150027 or higher)
getdeploymentinforeports hardforkactive: true.- GBT from a client that supports blake2b shows
!blake2bandcoinbaseaux.blake2b_headline(hex forCatbus). - DATUM
autoswitches to BLAKE2b / header v2 jobs (Sia-style notify: commitmentcoinb1, JSON merkle[], longerntimeandnoncefields, and related fields). - A BLAKE2b or BLAKE2b-sia miner connects, hashes, and submits shares. Hashrate shows up in DATUM stats and the UI.
- On a real block you should see
BLOCK FOUND - <hash>, and the new tip hash should be that same hash. - Knots accepts the block via
submitblock. A second log line sayingduplicateis normal. DATUM submits twice; one path wins. - You should not see intermittent
high-hashon valid BLAKE2b or BLAKE2b-sia blocks if DATUM is at56c31f4or later. Older builds hashed H1 without wire bit0x80000000, so DATUM's block hash often disagreed with Knots: about a coin-flip on easy regtest, and almost all rejects at real difficulty.
Quick health checks
- Miners stay connected and jobs refresh on new tips.
- Shares are accepted. You are not flooded with unknown-work or high-hash rejects.
- After the hardfork, the
BLOCK FOUNDhash equals the new chain tip. - The node has
blake2b_headline=Catbus, DATUM's secondary tag isCatbus, and those headline bytes are present in the coinbase.
Common mistakes
- Forcing
"pow_algorithm": "blake2b"before 150027 produces bad templates and rejects. - If the node is set to
Catbusbut the coinbase never containsCatbus, Knots rejects the block withHeadline is wrong. - DATUM older than
56c31f4can printBLOCK FOUNDand then intermittent or frequenthigh-hash. - Peering on 8333 by mistake. testnet4 P2P is 48333.
Checklist
- Knots RC3 from the URL above,
blake2b_headline=Catbus, and a synced testnet4 chain. - DATUM fork at
56c31f4or later,auto, and secondary tagCatbus. - Before the hardfork: SHA256d miners. After it: BLAKE2b and BLAKE2b-sia miners on stratum port 23334.
- Watch the tip reach 150027, then start BLAKE2b miners.
- Confirm the
BLOCK FOUNDhash matches the tip. Ignore a benign dual-submitduplicate.