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

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)

At and after activation (tip 150027 or higher)

Quick health checks

  1. Miners stay connected and jobs refresh on new tips.
  2. Shares are accepted. You are not flooded with unknown-work or high-hash rejects.
  3. After the hardfork, the BLOCK FOUND hash equals the new chain tip.
  4. The node has blake2b_headline=Catbus, DATUM's secondary tag is Catbus, and those headline bytes are present in the coinbase.

Common mistakes

Checklist

  1. Knots RC3 from the URL above, blake2b_headline=Catbus, and a synced testnet4 chain.
  2. DATUM fork at 56c31f4 or later, auto, and secondary tag Catbus.
  3. Before the hardfork: SHA256d miners. After it: BLAKE2b and BLAKE2b-sia miners on stratum port 23334.
  4. Watch the tip reach 150027, then start BLAKE2b miners.
  5. Confirm the BLOCK FOUND hash matches the tip. Ignore a benign dual-submit duplicate.