Download 29.4.2.knots20260508 for your architecture (for example x86_64-linux-gnu or aarch64-linux-gnu):
- Official builds: bitcoinknots.org
- GitHub release: v29.4.2.knots20260508
- Source: github.com/bitcoinknots/bitcoin
Check the build against SHA256SUMS and SHA256SUMS.asc in the files folder. Do not set chain=testnet4. Keep the same data directory if you already have a mainnet node.
1. Knots on mainnet
Minimal bitcoin.conf. txindex=1 is not required for DATUM or getblocktemplate. Working nodes often add extra knobs such as consensusrules=rdts, maxtipage, and a larger mempool. blocknotify via /NOTIFY or killall -USR1 both work:
server=1
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 8333. Forward inbound TCP 8333 on your router to this machine so other nodes can connect to you. Default RPC port is 8332. Leave RPC on localhost.
bitcoin-cli getblockchaininfo
bitcoin-cli getdeploymentinfo
# blake2b.height == 961640 and blake2b.active == true
# deployments.reduced_data.height == 961640 and active == true
# deployments.long_coinbase_maturity.type == "flagday"
# deployments.long_coinbase_maturity.height / enforce == 973440
# deployments.long_coinbase_maturity.height_end == 979919
# deployments.long_coinbase_maturity.coinbase_start_height == 973440
# deployments.long_coinbase_maturity.maturity == 6480
# deployments.long_coinbase_maturity.active == true while tip is in that window
Long coinbase maturity is an active softfork on mainnet. Coinbases created at height 973440 or later need 6480 confirmations before they can be spent in a block (~45 days). Coinbases from before 973440 stay on the old 100-block rule for block consensus. On Knots 29.4.2, the wallet and this node's mempool apply 6480 to every coinbase, including rewards mined before 973440. Ordinary (non-coinbase) bitcoin is unchanged.
2. DATUM Gateway
Clone the BLAKE2b and header-v2 gateway from CONVOY:
git clone https://github.com/CONVOYMining/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 29.4.2 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": "bc1q…your_mainnet_address…",
"coinbase_tag_primary": "MyTag",
"allow_hasher_time_rolling": false
},
"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
CONVOY serves BLAKE2b / header-v2 jobs when GBT advertises !blake2b. There is no pow_algorithm setting.
Solo needs pool_host empty and pooled_mining_only false. CONVOY's built-in defaults turn pooled mining on and point at a CONVOY pool host. If you empty the host and leave pooled mining on, the process exits. Their example config is a pool example; do not use it as the solo recipe. Solo can omit abw_verify_all_shares_on_disclosure.
3. Miners
This chain is on BLAKE2b now. CONVOY only serves BLAKE2b and BLAKE2b-sia header-v2 jobs. It will not mine SHA256d. If GBT does not advertise blake2b, it serves no work. SHA256d hardware was useful through block 961639 and cannot add blocks here.
Point the miner at your stratum URL. The username can be any worker name DATUM accepts. A payout address is a common choice.
Confirm GBT advertises blake2b:
bitcoin-cli getblocktemplate '{"rules":["segwit","blake2b"]}'
# expect "!blake2b" in rules
4. Optional peer
addnode=OTHER_HOST:8333
What working looks like
getdeploymentinforeportsblake2b.height961640 andblake2b.activetrue, plusdeployments.reduced_dataat the same height and active.getdeploymentinforeportsdeployments.long_coinbase_maturityas a flag day: height / enforce 973440, height_end 979919, maturity 6480, andactivetrue while the tip is in that window.- GBT from a client that supports blake2b shows
!blake2b. - DATUM serves BLAKE2b / header v2 jobs (Sia-style notify: commitment
coinb1, JSON merkle[], longerntimeandnoncefields, and related fields). It waits for a BLAKE2b anti-withholding assignment before using a template. - 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.
- The
BLOCK FOUNDhash equals the new chain tip. - GBT from a supporting client shows
!blake2b. - After upgrading to 29.4.2,
getdeploymentinfoshowslong_coinbase_maturityactive at the tip. - Mined rewards stay immature in the wallet for about 6480 blocks (~45 days), not about 100.
Common mistakes
- DATUM older than
56c31f4can printBLOCK FOUNDand then intermittent or frequenthigh-hash. - Leaving CONVOY's pooled-mining defaults on, or emptying
pool_hostwhilepooled_mining_onlyis still true. - Setting
chain=testnet4or peering on 48333. Mainnet P2P is 8333. - Leaving 8333 closed on the router. The node can still make outbound peers, but inbound peers cannot reach you.
Checklist
- Knots 29.4.2 from the links above, using your existing mainnet data directory if you already have one.
- DATUM from CONVOY at
56c31f4or later. - BLAKE2b and BLAKE2b-sia miners on stratum port 23334.
- Confirm
long_coinbase_maturityis active at the tip. - Confirm the
BLOCK FOUNDhash matches the tip. Ignore a benign dual-submitduplicate. - Expect coinbase rewards to remain immature in the wallet for ~6480 blocks (~45 days).