Dpowcoin Core 26.3.1 is now available. This is a transition release: at block 225,000, the Yespower proof-of-work requirement is dropped from consensus, and Argon2id alone secures the chain from that point on. It also brings a maintenance and feature update on top of the 26.x branch.
⚠️ [!CAUTION] THIS RELEASE IS NESSARY FOR ALL. ALWAYS BACK UP YOUR WALLET DATA BEFORE ANY UPDATE. Shut down your wallet completely, then copy your
wallet.datfile to a safe place before updating. If possible, always encrypt your wallet with a strong password.
Consensus change: the Yespower drop
From genesis through block 224,999, Dpowcoin required every header to pass two independent
proof-of-work checks sharing the same target: Yespower (N = 2048, r = 8) as a cheap filter,
followed by the dual-round Argon2id check described in the white paper if
Yespower passed. Starting at block 225,000, the Yespower check is removed from consensus —
Argon2id alone determines validity from that height onward.
This was a deliberate design decision, not a security response: because both algorithms shared the same target, Yespower never added security beyond what Argon2id already provided on its own — it only doubled the work the LWMA-3 retarget algorithm had to account for and added consensus-code complexity. The "Dual PoW" name stays in project documentation for historical reference only.
| Era | Block range | PoW check(s) required |
|---|---|---|
| Dual PoW Era | 0 – 224,999 | Yespower and Argon2id (shared target) |
| Transition | 225,000 | Yespower requirement removed from consensus |
| Argon2id-Only Era | 225,000+ | Argon2id only |
Upgrade from 26.2
If you are already running Dpowcoin Core 26.2, upgrading to 26.3.1 is straightforward:
- Shut down your node completely.
- Back up your
wallet.datto a safe location outside the data directory. - Install Dpowcoin Core 26.3.1.
- Start the node — it will continue syncing from where it left off.
What's new in 26.3.1
New feature: header PoW verification cache
This release adds a new header proof-of-work verification cache (pow_cache), built on the
same CuckooCache::cache structure already used elsewhere in the codebase (e.g. the signature
cache). The cache stores the result of already-verified headers (64 MiB by default, configurable
via -headerpowcachesize) and sits behind a single choke point, CheckProofOfWorkCached(), used
by both header validation (CheckBlockHeader()) and block reads from disk
(BlockManager::ReadBlockFromDisk()). This means the cache speeds up essentially any PoW check on
an already-seen header — including re-reading blocks from local storage — not just initial header
sync. It starts empty and is warmed up by ordinary node operation; misses always fall back to a
full Argon2id recompute, so consensus rules are unaffected.
New feature: parallel header PoW check queue
Separately, header PoW checks can now be dispatched across a dedicated parallel check queue,
instead of being checked one at a time. This only engages once a batch of headers exceeds an
internal threshold (32 headers) — in practice this means it's mainly active during the presync
stage of initial headers sync, where large batches of headers arrive from a peer and need checking
before the chain's cumulative work is confirmed; during normal steady-state operation, where
headers usually arrive in small numbers, checks are still processed sequentially. Up to 6
threads can be used, sized off the number of available CPU cores rather than the -par setting;
on machines with fewer than 3 CPU cores, header PoW checking automatically falls back to running
on the calling thread so it never starves the rest of the node.
Consensus-adjacent hardening
- Tighter future-block time window. The maximum amount of time a block timestamp is allowed to exceed network-adjusted time has been reduced from 2 hours to 600 seconds, with the timestamp grace window used for RPCs and wallet key creation times widened to 2 hours separately. The previous 2-hour allowance was inherited from Bitcoin's 10-minute block target and was too permissive for Dpowcoin's 5-minute blocks.
- BIP53-style malleation guard. Blocks without a coinbase transaction are now rejected as mutated if any transaction in them serializes to exactly 64 bytes, closing off a known Merkle tree malleability vector. This is not a consensus change in practice, since such blocks were already invalid for lacking a coinbase.
- Stricter RPC input validation.
getnetworkhashpsnow rejects invalidnblocks/heightarguments instead of silently clamping them, andsetmocktimevalidation was tightened.
Bug fixes and other improvements
- Hardened Taproot miniscript parsing against malformed input, with added unit test coverage.
- Fixed IPv6 handling issues in the networking code.
- Corrected miner default
nBitshandling. - Updated DNS seed and fixed-seed lists for mainnet and signet.
- Various build/dependency fixes (Qt zlib patch on newer toolchains, miniupnpc download URL, an API-compatible UPnP call).
See release notes on GitHub for the full changelog.
Troubleshooting
- Node won't start after upgrade — make sure you're upgrading from 26.2. If you're coming from an older release, upgrade to 26.2 first.
- Balance shows zero after upgrade — run
dpowcoin-cli rescanblockchainto rescan the chain.
Issues or questions? Use the issue tracker or join the community on the resources page.