Major consolidated release. Mainnet is currently on v2.0.0.6;
v2.0.0.7 was never publicly shipped. This release bundles the entire
accumulated body of fixes built between v2.0.0.6 and v2.0.0.8,
including the new masternode voted-payee consensus headline
feature and the first functional DigitalNote testnet.
Chain-compatible with v2.0.0.6 until voted consensus is activated
by the network spork key. No mandatory upgrade.
🗳️ Masternode Voted Consensus (headline feature)
- Per-masternode signed queues of upcoming payees, broadcast and
tallied by position - Deterministic forward-simulation produces identical queues on every
node — position-for-position consensus - Block validation enforces the agreed payee post-activation
- Activation: floor at
INT_MAX(off until further notice);
SPORK_15can bring forward, never back - Soft activation: permissive fallback to legacy rule during
consensus gaps; no chain-stall risk - Validated on testnet through SPORK_14/15 rehearsal and a full
controlled crossing at height 1837 (PoW) / 1838 (PoS) with 7/7
voter consensus
⛏️ Masternode Fixes
Payment selection and last-paid tracking:
- Fixed
getblocktemplatereturning the same masternode every block - Fixed all masternodes showing identical "last paid" times
- Fixed "last paid" not reflecting voted-consensus payments
Masternode start and activation:
- Fixed strict version-equality check preventing cross-version
activation - Fixed "could not allocate vin" when collateral is locked
- Fixed local masternode start ignoring
masternode.conf(ban-storm
root cause)
Collateral lock semantics:
- Remote-MN start now auto-locks collateral (matches local-MN)
- Stop-MN no longer auto-unlocks (locks are user data)
Peer reliability and ban-storm prevention:
- Fixed
dsegre-askMisbehaving(34)penalty - Fixed
dseg3-hour cool-off after lost requests - Fixed invalid-signature
mnvoteMisbehaving(100)ban storm - Fixed masternode-payee strict-check firing pre-activation (CW12:
gate the v2.0.0.6 fMnAdvRelay-disabled strict check back behind
voted-consensus activation height, matching v2.0.0.6 effective
mainnet behaviour byte-for-byte pre-spork) - Fixed NAT-hairpin address pollution into
addrman - Fixed dsee misbehaviour scoring during IBD
- Fixed missing queue catch-up on peer handshake
Equivocation handling:
- Fixed Path A
OnFreshDseeauto-clear being dead code in
steady-state operation - Fixed equivocation false-positive on legitimate same-height
re-broadcast (newer-wins replacement)
🪙 Masternode Collateral Tools
- 2,000,000 XDN incoming-collateral popup
- Lock column in My Master Nodes table
- Lock / Unlock context menu (right-click)
- NEW: Locked Outputs dialog (
Tools → Locked Outputs...) - Standard ExtendedSelection model on the MN list
⛏️ Proof-of-Stake Reliability
- Fixed rare staker stalls (Class B
cs_main/voteTracker.cs
lock-order deadlock — three iterations, gdb-confirmed) - Fixed PoS coinstake input stale spent-flag (CW4 Fix B)
- Fixed pre-activation last-paid-clamp tie-collapse / payee streak
- Fixed post-activation payee streak via M1Q queue redesign
- Fixed staker mint-retry storm on too-early blocks
(Velocity back-off) - Fixed post-restart staking-icon "not staking" delay
- Fixed staking icon stuck on "warming up" for healthy stakers
(state-machine rewrite) - Fixed staking icon showing "no mature coins" while actively
staking (CW6 maturity-window state) - Fixed nonsense tooltip values ("1763 days 13 hours" → real
estimate) - Fixed PoS staker indefinite defer after M1Q switch-over
🔐 BIP39 Recovery Phrase
- 24-word recovery phrase on new wallet encryption
- Password OR recovery phrase unlocks the wallet
- Existing-wallet upgrade via
Settings → Recovery Phrase - Phrase stable across password changes
getrecoveryphraseRPC
🌐 Testnet — Established and Operational (new in v2.0.0.8)
- Rebuilt from genesis on the deterministic-VRX binary
- P2P port 28092, RPC port 28094 (
-testnetswitch) - No premine in testnet genesis
- Voted-consensus activation floor: testnet height 2000
- 6 masternodes + 1 PoS staker; public seed at
testnet.xdn-explorer.com - Bugs uncovered during construction (all fixed): same-IP MN
connection rejection, NAT-hairpin pollution,
duplicate-MN-identity frommasternode.conf-ignorant collateral
selection, ban storms from over-aggressive scoring,
enforcement gated behind abandoned-mnadvrelayflag
💰 Balance and Wallet Correctness
Balance display:
- Fixed cold-start balance underreport on large wallets
- Fixed inflated watch-only credit until restart
- Fixed watch-only stake leaking into Spendable Stake
- Fixed P2PK outputs invisible to watch-only tracking
- Fixed rescan-discovered tx timestamps clamped to most-recent
Spent-tracking correctness (CW4 Fix C — new in v2.0.0.8):
- Fixed balance over-report after observing sends/stakes via gossip
- Fixed PoS coinstake input stale spent-flag (writer-side)
- Reorg-safe spent detection (no manual
repairwalletneeded) - Spendable and watch-only balance now share the same
spent-tracking semantics
Coin selection:
- Fixed 2M payments excluding the entire tx from staking
Unlock flow:
CWallet::Unlock()now tries all master keys
🛠️ Rebuild Wallet (Maintenance)
- NEW:
Tools → Compact Wallet— full BDB cursor-level
dump-and-restore - Preserves all wallet data (keys, history, watch-only, locks,
BIP39 mnemonic, address book) - Encrypted wallets stay encrypted
- Original wallet preserved as
wallet.dat.bak - CLI:
-rebuildwallet; hidden RPCsdumprawwallet,
createfromdumpfile
🌐 Network and Synchronisation
- Fixed difficulty-recovery curve that never engaged in v2.0.0.6
(cause of long mainnet chain stalls) - Fixed non-determinism in the post-v2.0.0.6 curve-engagement fix
that broke from-genesis resync (recovery loop fired against
wall-clock instead of committed block time) - Extended historical
nBitsexception list to 30 entries for
mainnet stall-recovery blocks where v2.0.0.6 and v2.0.0.8 curves
produce different answers (one-time archaeology; strict check
intact for all post-tag blocks) - Mining-side same-timestamp guarantee —
nBitsis now computed
afterpblock->nTimeis finalised, eliminating the residual
~3,600-second hourly-boundary window where miner and validator
could disagree at recovery steps - NEW: Devops address rotation activates at mainnet block
1,400,000 (testnet block 100). - NEW: Strict devops-address check restored, height-gated to
fire at the rotation block onwards. Pre-rotation blocks continue
to validate lax (preserves all canonical chain history); post-
rotation blocks must pay the correct address or get rejected. - NEW: Fixed producer/validator off-by-one in the devops ladder
lookup. Both sides now ask the ladder about the same block by
construction, eliminating the latent rotation-boundary mismatch
that has been in the code since the v1.0.1.5 era. - Fixed wallet banning peers on startup
🖥️ Wallet GUI
Menu / theme:
- New Tools menu with maintenance/system actions
- Dark theme (
Settings → Dark Theme) - In-app
DigitalNote.confeditor
Splash / startup:
- New splash screen
- Maintenance Mode splash (rebuild/rescan/reindex)
- Live
Rescanning... block N / Mprogress - New 16/24/32/48/64/128/256 icons; Windows 11 tray fix
Password / unlock:
- Password generator (20-char random)
- "Forgot password?" link to recovery-phrase unlock
- "For staking only" checkbox hidden by default
Status bar / version:
- MAINNET indicator
- Build date and version embedded from source (replaces
long-brokenv1.0.3.5self-report from stale git tag)
Transaction display:
- Locally-mined PoW coinbases now appear in the GUI immediately
(was one-block-late due to ahashPrevBestCoinBasestatic delay
from Bitcoin Core heritage; PoS stakers were never affected) - Double-click opens detail dialog (was a no-op)
- Removed meaningless
-000transaction-ID suffix - Notification batching during import
Debug console:
- Input disabled with elapsed-time indicator during command flight
- Windows paths typed without quotes work correctly
-debug=alland-debug=1now work as wildcard aliases (CW14;
previously silently did nothing). Newdebug-logging-guide.md
covers all 21 categories.
Adding/Removing watch-only addresses:
- New watch-only accounts view
- Remove watch-only prune mechanism (no more restoring wallet from backup to remove)
Visual polish:
- Balance labels min-width (no more clipped "N")
- Copyright year 2018-2026
- Coin Control lock icon visible against light theme
- Qt signal/slot warnings cleared
🔧 Build & Release
Automated releases
- GitHub Actions CI: Windows x64, Linux x64, Linux ARM64,
macOS Intel + Apple Silicon - Automated tag-driven releases with SHA256 checksums
- Source-file-controlled version string
- BIP39 library inlined (
USE_BIP39flag retired)
New asset naming convention for release downloads: <name>-<version>-<os>-<arch>[-compat].<ext>. For v2.0.0.8 the assets are:
-
DigitalNote-qt-2.0.0.8-win-x64.exe(Windows 10+, x64) -
DigitalNote-qt-2.0.0.8-linux-x64(Ubuntu 24.04+ / Debian 13+ / glibc 2.39+) -
DigitalNote-qt-2.0.0.8-linux-x64-compat(Ubuntu 20.04+ / Debian 11+ / RHEL 9+ / glibc 2.31+) -
DigitalNote-qt-2.0.0.8-linux-arm64(Ubuntu 22.04+ / Debian 12+ / glibc 2.35+, aarch64) -
DigitalNote-qt-2.0.0.8-macos-x64.dmg(macOS 12 Monterey+, Intel) -
DigitalNote-qt-2.0.0.8-macos-arm64.dmg(macOS 12 Monterey+, Apple Silicon) -
DigitalNoted-2.0.0.8-win-x64.exe(Windows 10+, x64) -
DigitalNoted-2.0.0.8-linux-x64(Ubuntu 24.04+ / Debian 13+ / glibc 2.39+) -
DigitalNoted-2.0.0.8-linux-x64-compat(Ubuntu 20.04+ / Debian 11+ / RHEL 9+ / glibc 2.31+) -
DigitalNoted-2.0.0.8-linux-arm64(Ubuntu 22.04+ / Debian 12+ / glibc 2.35+, aarch64) -
32-bit builds dropped
-
macOS Apple Silicon native build added
⚠️ Deprecations & Known Issues
Deprecated:
-salvagewallet(requires-iknowsalvagewalletisdangerousto
run); use Compact Wallet instead
Known minor display behaviour:
- Masternode "active" column refreshes on 5s timer cadence
- Coinstake rows displayed as single net-reward line
- Large wallets: transaction-list display delay after splash
(Compact Wallet improves) importwallettoast spam on GUI (workaround: use Compact Wallet)
⚠️ Upgrade Notes
- Chain-compatible with v2.0.0.6 until voted-consensus activation
- Network protocol bumped; older clients can still connect/sync but
don't contribute to post-activation consensus vote - No mandatory upgrade
- Recovery phrase only for v2.0.0.8-encrypted wallets; old wallets
upgrade viaSettings → Recovery Phrase
Recommended upgrade order for masternode operators:
- Masternodes
- Mining pools
- Stakers
- Full nodes
🔍 MISC
- Per-block log noise reduced (success chatter behind
-debug
categories:masternode,mnengine,instantx,smsg,
retarget,init) - Fixed ~1378 "coinstake as individual tx" errors per launch
- Legacy per-height vote message path removed (~500 lines)
- Masternode-payment lock-ordering audited and standardised
Platform Downloads
Filenames have the leading v stripped — so v2.0.0.8 produces files named …-2.0.0.8-….
| Platform | GUI Wallet | Daemon |
|---|---|---|
| Windows x64 | DigitalNote-qt-<ver>-win-x64.exe |
DigitalNoted-<ver>-win-x64.exe |
| Linux x64 | DigitalNote-qt-<ver>-linux-x64 |
DigitalNoted-<ver>-linux-x64 |
| Linux x64 (compat) | DigitalNote-qt-<ver>-linux-x64-compat |
DigitalNoted-<ver>-linux-x64-compat |
| Linux ARM64 | DigitalNote-qt-<ver>-linux-arm64 |
DigitalNoted-<ver>-linux-arm64 |
| macOS Intel | DigitalNote-qt-<ver>-macos-x64.dmg |
DigitalNoted-<ver>-macos-x64 |
| macOS Apple Silicon | DigitalNote-qt-<ver>-macos-arm64.dmg |
DigitalNoted-<ver>-macos-arm64 |
Which Linux x64 build do I want? The standard linux-x64 requires glibc 2.39+ (Ubuntu 24.04, Debian 13). The linux-x64-compat variant requires glibc 2.31+ (Ubuntu 20.04+, Debian 11+, RHEL 9+) and statically links libstdc++. Pick compat if the standard one fails with GLIBC_2.x not found errors.
SHA256 Checksums
See SHA256SUMS.txt attached below.