Coinbase maturity · whole chain
Coming at block 979,920: the lock extends to 1 Sep 2027.
Knots 29.4.3 — still a release candidate (v29.4.3.knots20260508rc1) — extends this rule. Every coinbase mined from block 973,440 onward will stay locked until the chain's median time reaches 1 Sep 2027, 00:00 UTC, instead of unlocking at block 979,920. Nodes and miners must upgrade before block 979,920: 2,725 blocks to go (about 2 Nov 2026). Because it is a release candidate, details can still change before the final release; if they do, this notice changes with them. We will run the final release on our node before block 979,920.
Newly mined coins are locked for 6,480 blocks — until block 979,920.
In force since block 973,440. Every coinbase mined from block 973,440 onward cannot move until block 979,920 — 2,725 blocks to go (about 2 Nov 2026).
What PyBLØCK has done. Our node is already running v29.4.2.knots20260508, since 2026-09-21. We said we would upgrade at RC2, and we have.
What that changes for you, plainly. This already applies, and it did not wait for block 973,440: our node no longer passes on a spend of any reward younger than 6,480 confirmations. That is about our node relaying, not about whether the coin is yours: a reward mined before block 973,440 matures at the usual 100 confirmations and your balance shows it as spendable, because it is. Your coins are not frozen and we are not holding them. They are valid, they are already yours on-chain, and any other wallet or node still broadcasts them — most of the network has not upgraded. What changes is our node, not your ownership.
Why this is easier here than elsewhere. Your reward is written straight into the block's coinbase, to your address: it is already yours on-chain, and nothing here is held by us: we cannot spend it, and we are not paid first. A custodial pool instead collects the whole coinbase and pays you later out of its own balance; while that coinbase is locked, it has to fund every payout from reserves. We front nothing, so there is nothing here that can run out.
Why the date is sooner than 45 days: the rule counts blocks, not time. 6,480 blocks is about 45 days at the usual 10-minute spacing, but this chain is currently running faster (~45 days at the recent pace), so the unlock lands earlier. The block height is the part that is fixed; every date here is an estimate that moves with the chain.
Until now a block reward could be moved after 100 blocks, about 16 hours. This is a rule of the Bitcoin BLAKE2b client, not of this pool: it applies to every coinbase on the chain, whoever mined it, and there is nothing we can change from our side. What you are owed does not change — only how long it sits before it moves. Payouts keep being written straight into the block's own coinbase, to your address, with nothing held by us. That also means your share is locked the same way ours is: we are not paid first.
Why this starts before block 973,440. The wallet and relay side of this release applies the long wait to every reward, on purpose and independently of the chain rule — the proposal says so in as many words. We ran the release on an isolated node of our own to be sure: the cut-off sits exactly at 6,480 confirmations whenever the reward was mined, and it already applies with the activation still in the future. So it is not something that gets fixed before the flag day: it is what the client does, and it is a client behaviour rather than a rule of this pool.
The same announcement says that whoever mines without running their own node and gateway is not really mining and might not be paid at all in the future. That is a stated intention in the change itself — not code, and no mechanism for it exists today. We are not going to pretend we know how it would be administered. We tell you because you should have the whole picture. If it ever becomes a real rule, you will read it here first.
What we recommend, for what it is worth. If you are going to be waiting on a longer maturity anyway, this is a good moment to run your own node and DATUM gateway. Not because it exempts you from the wait — it does not, and anyone telling you otherwise is wrong: the rule applies to every coinbase on the chain, whoever built the block. Run it because it is simply better for you. Your node picks the transactions, so we never see your selection and could not censor one if we wanted to. And you keep more, because there is no node-runner cut when you are the node runner: 99% on CAROUSEL, against 98% over our stratum (CHIRP already pays 100% either way: it runs 100% on DATUM). The waiting is the same either way — what changes is how much of the block is yours when it unlocks, and who decided what went into it. How to run it →
Running your own node and gateway is what WAVICLES already does, and it is now available for CAROUSEL and CHIRP too — see PATUM for the one-click installer.
The penalty we are going to roll out for SV1 endpoints will be so resounding that it will echo across the universe.
| Your own node | Public stratum | Supplier endpoint | |
|---|---|---|---|
| CHIRP | 0% pool | 77% pool | — |
| WAVICLES | 0% pool | 77% pool | — |
| CAROUSEL | 1% pool | 77% pool + 1% supplier | 1% pool + 77% supplier |
Your node builds the block. The pool only sets the split: everyone with work in the window, by work · fee 0% with your own node, 0% through PyBLØCK’s stratum · paid in the coinbase. The pool never holds a sat.
| Miner | Hashrate · 10 min | Share of window | Would receive | Last share |
|---|---|---|---|---|
| No work in the window yet — connect a node and the split appears here. | ||||
| Block | When | Built by | Paid to miners | Pool output | Miners paid |
|---|---|---|---|---|---|
| No WAVICLES blocks yet — the first one shows up here and on BLOCKS. | |||||
| Gateway | Software | Shares | Work | Connected | Last share |
|---|---|---|---|---|---|
| No gateways connected right now. | |||||
CONVOYMining/datum_gateway master on or after 2026-09-02 (commit b9ea7dc+). Older builds fail after the handshake with "Invalid data structure in configuration" — pull, rebuild, reconnect; your config does not change.| Symptom in the gateway log | Cause | Fix |
|---|---|---|
Invalid data structure in configuration → Waiting on DATUM server… 0 | CONVOY build older than 2026-09-02 | update to master (≥ b9ea7dc), rebuild, reconnect |
decryption failed | pool_pubkey wrong or truncated | copy the full 128-hex key (click the config block), restart the gateway |
| Handshake OK but 0 shares on the pool | miners point at the pool instead of your gateway | miners go to gateway-IP:stratum-port, never to :28915 |
| miners hash on your gateway, still 0 shares after 30+ min | DATUM’s default share floor vardiff_min = 16384 is SHA-256 ASIC scale; a BLAKE2b GPU or CPU never reaches it | "stratum": {"vardiff_min": 1} (a power of two; 1 is what PyBLØCK’s own GPU gateway runs), restart the gateway |
| "pool-only" coinbase in a block | template left no room for the payout outputs | blockreservedweight=100000 in your node’s bitcoin.conf |
| connects, then drops every few minutes with a new gateway key each time | the gateway restarts right after the handshake: its node returns no BLAKE2b work (RPC misconfigured, not synced, or missing the blake2b rule) | read the gateway log after "DATUM Pool MOTD"; on your node run bitcoin-cli getblocktemplate '{"rules":["segwit","blake2b"]}' |
| your identity shows work but payout 0 / "not payable" | the miner username on your gateway is a worker name, not an address | miners log in with a Bitcoin-BLAKE2b address (bc1q… / 1…); a worker after a dot is fine: bc1q….rig1 |
| few identities paid in a block | a coinbase budget too small for the payout list | fixed pool-side on 2026-09-14: every gateway now gets the 16 KB class (~400 payouts), stock CONVOY included. Nothing to change on your side. |
blockreservedweight=100000 in bitcoin.conf. The Knots default leaves room for ~55 coinbase outputs. Your miners’ firmware sets how many payouts a coinbase can carry: modern firmware (Whatsminer, S21, ePIC) takes big coinbases and pays the whole window; a stock ~730-byte coinbase fits ~15, and then the split is pro-rated among those who fit — never kept by the pool. With a big window your coinbase can carry hundreds of outputs (each bech32 payout = 124 WU); reserve weight for it so it never displaces transactions. Bitcoin-BLAKE2b templates are ~110 kWU today, so there is room to spare.mining.pool_address it decides who gets paid if you ever mine without the pool, and the gateway will not even start without a valid one. On each miner, as the Stratum username, it decides who gets credited in the window. Set both. Then check the Node runners table above: shares climbing means it worked.mining.pool_address. It is required. With an invalid one the gateway prints Could not generate output script for pool addr and exits in under a second, so if your gateway is running at all, this field is already fine. It is also the address that collects 100% of any block you find while the pool is unreachable, which is the case below.x. A worker name after a dot is fine: bc1q….rig1. With the config we publish above (pool_pass_full_users: true) this username is what we credit, so each miner on your gateway is paid to whatever address it logs in with.pool_pass_full_users to false and every miner on your gateway is credited to mining.pool_address instead, whatever your miners type. That is the right setting if the rigs are all yours, and the wrong one if you are hosting somebody else.bad-username, and those shares earn nothing. So a typo costs you real work, silently, until you look. Always re-check after changing a username: your row in the Node runners table should show shares going up and rejects staying flat.:28915, which is where your gateway talks to us and never where miners go; or they are on a GPU or CPU and never reach the default share floor, which is sized for SHA-256 ASICs. For that last one set "stratum": {"vardiff_min": 1} and restart. Your gateway’s own Clients tab is the fastest way to tell the first case from the rest: if it is empty, the problem is on your side of the gateway, not between us.pooled_mining_only decides. Left at true, as we publish it, your gateway drops your miners rather than mine without a pool. Set to false, your node keeps building blocks on its own and any block it finds pays 100% to mining.pool_address. Neither is wrong. The first keeps your hashrate from going somewhere you did not choose; the second keeps it earning. It is also the second reason that field has to be an address you actually control.7491a509 or later. Builds before it miscount the BLAKE2b coinbase bytes and truncate the payout list, so a block found on one would leave most of the window unpaid. We refuse those at the handshake with a message saying so, rather than let you find out on a block. Note that a plain git pull of master is not enough if master still carries the bug. OCEAN-lineage forks and StartOS packages work too.wavicles_api.php?mode=snapshot&hash=… and cannot change after the block exists.max_payees) == the snapshot’s payees, every payee paid on chain.python3 tools/verify_wavicles_block.py --height H \ --conf bitcoin.conf --url https://b.pyblock.xyz/wavicles_api.php