Skip to content

DigitalNote XDN v2.0.0.8

Latest

Choose a tag to compare

@github-actions github-actions released this 13 Jun 12:07

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_15 can 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 getblocktemplate returning 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 dseg re-ask Misbehaving(34) penalty
  • Fixed dseg 3-hour cool-off after lost requests
  • Fixed invalid-signature mnvote Misbehaving(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 OnFreshDsee auto-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
  • getrecoveryphrase RPC

🌐 Testnet — Established and Operational (new in v2.0.0.8)

  • Rebuilt from genesis on the deterministic-VRX binary
  • P2P port 28092, RPC port 28094 (-testnet switch)
  • 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 from masternode.conf-ignorant collateral
    selection, ban storms from over-aggressive scoring,
    enforcement gated behind abandoned -mnadvrelay flag

💰 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 repairwallet needed)
  • 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 RPCs dumprawwallet,
    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 nBits exception 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 — nBits is now computed
    after pblock->nTime is 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.conf editor

Splash / startup:

  • New splash screen
  • Maintenance Mode splash (rebuild/rescan/reindex)
  • Live Rescanning... block N / M progress
  • 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-broken v1.0.3.5 self-report from stale git tag)

Transaction display:

  • Locally-mined PoW coinbases now appear in the GUI immediately
    (was one-block-late due to a hashPrevBestCoinBase static delay
    from Bitcoin Core heritage; PoS stakers were never affected)
  • Double-click opens detail dialog (was a no-op)
  • Removed meaningless -000 transaction-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=all and -debug=1 now work as wildcard aliases (CW14;
    previously silently did nothing). New debug-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_BIP39 flag 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 -iknowsalvagewalletisdangerous to
    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)
  • importwallet toast 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 via Settings → Recovery Phrase

Recommended upgrade order for masternode operators:

  1. Masternodes
  2. Mining pools
  3. Stakers
  4. 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.

Changes since last release

  • Emergency fix: arm64 SMSG race (471bb91)
  • ci: create workflows (d051bd7)