Skip to content

Releases: gridcoin-community/Gridcoin-Research

5.5.1.3-testnet

5.5.1.3-testnet Pre-release
Pre-release

Choose a tag to compare

@jamescowens jamescowens released this 15 Jun 12:39

What's Changed

  • qt: relocate cached-wallet ordering into a producer-owned WalletTxStore (windowed-model step 2, #2944) by @jamescowens in #3011
  • qt: off-load WalletTxStore O(N) maintenance to a store-worker (windowed-model PR2.5) by @jamescowens in #3015
  • doc: refresh RPC-add walkthrough + addkey signature for post-#2922 conventions by @jamescowens in #3009
  • qt: windowed transaction-table model — per-view cursors + OverviewPage testbed (Phase 3) by @jamescowens in #3021
  • qt: migrate detailed TransactionView to the cursor-backed windowed model; delete TransactionFilterProxy (windowed-model PR4) by @jamescowens in #3022
  • qt: windowed-table read APIs + Qt-free WindowCache core (windowed-model PR5-A) by @jamescowens in #3023
  • rpc: cross-check CLI parameter conversion against RPCHelpMan arg types, fix 7 CLI-broken arguments by @PrestackI in #3019
  • qt: window the detailed transaction table on WindowCache (windowed-model PR5-B) by @jamescowens in #3041
  • gui: make explicit Exit shut down regardless of minimize-on-close (#2995) by @jamescowens in #3043
  • test: add Python functional-test framework + rpc_help.py by @PrestackI in #2976
  • test: Phase 2 — regtest chain mode + staking/premine RPCs (refs #2932) by @PrestackI in #2991
  • test: Phase 3 — P2P wire protocol (messages.py + p2p.py) + handshake/relay tests (refs #2932) by @PrestackI in #2992
  • test: Phase 4A — wire functional suite into CMake+CI + investor-mode test suite (refs #2932) by @PrestackI in #2993
  • qt: retire the lazy render-thread lock path; producer-side tx detail (windowed-model PR5-C) by @jamescowens in #3049
  • doc: as-built architecture + testing references for the windowed transaction table by @jamescowens in #3055
  • rpc: add analyzepsgt command by @PrestackI in #3020
  • qt: fix sticky/inconsistent transaction Type filter (anchor misapplied to filter changes) by @jamescowens in #3056
  • rpc: add missing CLI parameter conversions for generate/generatetoaddress/stakelimit by @jamescowens in #3058
  • refactor: drop std-equivalent Boost usage (replace_all, split, unused includes) by @PrestackI in #3005
  • greylist: fix cs_lock/autogreylist_lock lock-order inversion in AutoGreylist::RefreshWithSuperblock by @jamescowens in #3063
  • refactor: hoist ThreadStakeMiner out of StartNode into AppInit2 by @PrestackI in #3024
  • refactor: hoist CScheduler into a g_scheduler unique_ptr by @PrestackI in #3025
  • net: extract message processing into net_processing.{h,cpp} by @PrestackI in #3027
  • net: move RelayTransaction and the relay-message cache into net_processing by @PrestackI in #3028
  • net: relocate peer-misbehavior tracking into net_processing by @PrestackI in #3031
  • net: introduce the CConnman lifecycle skeleton by @PrestackI in #3032
  • net: run the net threads as std::thread members of CConnman by @PrestackI in #3033
  • net: wrap CNode's socket in a RAII Sock by @PrestackI in #3034
  • net: replace the socket-handler select() with Sock::WaitMany by @PrestackI in #3035
  • net: rename CAddrMan -> AddrMan by @PrestackI in #3036
  • net: split AddrMan into a pimpl (AddrMan + AddrManImpl) by @PrestackI in #3037
  • net: introduce PeerManager / NetEventsInterface shell by @PrestackI in #3038
  • net: relocate peer-misbehavior tracking into PeerManagerImpl by @PrestackI in #3039
  • net: drive message processing through CConnman::Options::m_msgproc by @PrestackI in #3040
  • net: add a CConnman read-only node-access API and migrate the simple readers by @PrestackI in #3042
  • net: add CConnman::ForEachNode/DisconnectNode and migrate the read/relay RPCs by @PrestackI in #3044
  • net: route the added-node RPCs through a CConnman API by @PrestackI in #3045
  • net: route the consensus/relay residuals through the CConnman API by @PrestackI in #3046
  • net: move the local-host nonce and addrSeenByPeer into CConnman by @PrestackI in #3047
  • net: move the GETBLOCKS locator cache into CConnman by @PrestackI in #3050
  • net: move the UPnP-enabled flag onto CConnman by @PrestackI in #3051
  • net: make CConnman own the AddrMan by @PrestackI in #3052
  • net: make the FindNode helpers file-static and shrink net.h by @PrestackI in #3053
  • scraper: route manifest relay through CConnman::RelayInventory (#2558 — completes encapsulation, stacked on #3053) by @jamescowens in #3061
  • net: move the node list into CConnman as m_nodes/m_nodes_mutex (#2558 — completes encapsulation, stacked on #3061) by @jamescowens in #3062
  • net: invoke PeerManager::StartScheduledTasks after the scheduler is constructed (#2558, stacked on #3062) by @jamescowens in #3064

Full Changelog: 5.5.1.1-testnet...5.5.1.3-testnet

5.5.1.0-macos-dmg-notarization

Pre-release

Choose a tag to compare

@jamescowens jamescowens released this 09 Jun 23:02
e59df28

Tag for macos-dmg-notarization

What's Changed

  • build: reintroduce macOS notarization in CI + fix release artifact race by @jamescowens in #3016

Full Changelog: 5.5.1.0...5.5.1.0-macos-dmg-notarization

5.5.1.0-hotfix

Choose a tag to compare

@jamescowens jamescowens released this 08 Jun 12:18
93740fc

This is a hotfix release to fix the crash on mainnet due to a logic error in a divide by zero guard in the scraper/autogreylist code. While it is versioned as a leisure release, since there is no real change in consensus, it is effectively mandatory to avoid the crash.

What's Changed

  • scraper: fix AutoGreylist GetWAS zero-denominator crash (5.5.1.0 mandatory hotfix) by @jamescowens in #3012

Full Changelog: 5.5.0.0...5.5.1.0

5.5.1.1-testnet

5.5.1.1-testnet Pre-release
Pre-release

Choose a tag to compare

@jamescowens jamescowens released this 08 Jun 23:32

What's Changed

  • voting: initialize buildPollTable timer for daemon/RPC callers by @jamescowens in #2908
  • consensus: set mainnet fork heights for Natasha mandatory by @jamescowens in #2907
  • consensus: unify BlockRewardRules for miner and validator (#2880) by @jamescowens in #2885
  • build: Add macOS Developer ID code signing and notarization by @jamescowens in #2911
  • i18n: Update translations and add translation pipeline script by @jamescowens in #2912
  • build: Restore Windows font rendering and disable CI notarization by @jamescowens in #2913
  • build: Add macOS resources conditionally by @CyberTailor in #2917
  • refactor: Remove dead code around HAVE_THREAD_LOCAL by @CyberTailor in #2916
  • scraper: remove vestigial AuthenticationETagClear and unused global by @jamescowens in #2920
  • contrib: Add network-status API proxy for gridcoin.us dynamic data by @jamescowens in #2925
  • doc: update CLAUDE.md consensus-changes block-version note by @jamescowens in #2927
  • ci: bump OpenSUSE Leap CI image to 16.0 by @jamescowens in #2931
  • doc: clarify contract payload version matrix in consensus.md by @jamescowens in #2933
  • ci: zypper dup before pattern install on OpenSUSE Tumbleweed by @jamescowens in #2934
  • rpc: add fundrawtransaction # 2877 (A) by @PrestackI in #2881
  • rpc: split signrawtransaction into withkey/withwallet #2877 (B) by @PrestackI in #2882
  • refactor: extract script/script.h and script/script.cpp from monolithic script.h/cpp #2877 (C) by @PrestackI in #2878
  • refactor: add CValidationState and remove embedded DoS scoring #2877 (D) by @PrestackI in #2895
  • refactor: introduce CMutableTransaction for transaction building (E1) by @PrestackI in #2889
  • refactor: convert miner/wallet/HTLC to CMutableTransaction (E2) by @PrestackI in #2892
  • refactor: introduce SigningProvider and signature creators #2877 (F1) by @PrestackI in #2898
  • refactor: introduce SignatureData and ProduceSignature #2877 (F2) by @PrestackI in #2900
  • refactor: const CTransaction fields, hash caching, and CMutableTransaction pipeline #2877 (F3) by @PrestackI in #2901
  • rpc: implement PSGT data structures and RPCs #2877 (G) by @PrestackI in #2909
  • test: re-enable coinstake_construction_tests.cpp on the #2877 chain by @jamescowens in #2935
  • superblock: fix by-project fallback to handle PPK/PACTC side-channel parts by @jamescowens in #2926
  • rpc: port RPCHelpMan infrastructure from Bitcoin Core v26.0 by @PrestackI in #2923
  • rpc: Tier 3 RPCHelpMan conversions (addpoll, wallet encryption trio, addkey, maintainbackups) — #2922 by @PrestackI in #2924
  • build, qt: actually wire up ENABLE_QRENCODE (replaces #2914) by @jamescowens in #2936
  • wallet: include gridcoinsettings.json in scheduled and manual backups by @jamescowens in #2938
  • node: coordinate blk*.dat fsync with block-index DB durability (#2865 Phase 1) by @jamescowens in #2939
  • node: Phase 2 startup chain-coherence recovery (#2865 phase 2 - 4) by @jamescowens in #2941
  • refactor: enable clang thread-safety analyzer and roll out annotations (#2869) by @jamescowens in #2943
  • build: fix openSUSE Leap MinGW repo detection in install_dependencies.sh by @jamescowens in #2945
  • gui: event-driven transaction model update path (fixes large-wallet stalls) by @jamescowens in #2944
  • gui: annotate NotifyTransactionChanged with EXCLUSIVE_LOCKS_REQUIRED by @jamescowens in #2946
  • ci: add Clang thread-safety analysis gate by @jamescowens in #2947
  • build: define MAC_OSX on Apple builds by @jamescowens in #2948
  • refactor: add license headers to script/sign and script/standard files by @PrestackI in #2949
  • qt: stop dropping a connecting block's coinstake from the tx model by @jamescowens in #2951
  • qt: expose tables and lists to screen readers (issue #2604) by @jamescowens in #2942
  • rpc: convert addnode/setban/settxfee/listsinceblock to RPCHelpMan (#2922) by @PrestackI in #2930
  • refactor: silence pre-existing TSan/UBSan findings surfaced during #2944 heap-corruption hunt by @jamescowens in #2957
  • build: remove busybox-gawk/-less on Tumbleweed before devel_basis install by @jamescowens in #2959
  • build: detect qt6-5compat-dev vs libqt6core5compat6-dev across Debian family by @jamescowens in #2960
  • rpc: convert 21 blockchain.cpp commands to RPCHelpMan (Tier 1a, #2922) by @PrestackI in #2954
  • poll, voting: Unable to create a "protocol development" poll? Issue #2785 by @PrestackI in #2833
  • wallet, rpc: Implement Transaction State Tracking for Unconfirmed Transaction Visibility (Issue #1157) by @PrestackI in #2839
  • rpc: convert 17 researcher/beacon/MRC blockchain.cpp commands to RPCHelpMan (Tier 1b, #2922) by @PrestackI in #2956
  • voting, rpc: dust-resistant poll-creation claim + largest-first fee selection + fee_outpoint coin-control (#2833 follow-up) by @jamescowens in #2972
  • refactor: complete thread-safety annotation coverage across the codebase by @jamescowens in #2980
  • build: detect qt6-charts-dev/qt6-svg-dev vs libqt6charts6-dev/libqt6svg6-dev across Debian family by @jamescowens in #2982
  • qt: converge subtract-fee on actual wallet fee, not first-success (#2981) by @jamescowens in #2983
  • refactor: ProtocolRegistry thread-safety + contract-registry locking model (1/4) by @jamescowens in #2986
  • refactor: ScraperRegistry thread-safety per the contract-registry locking model (2/4) by @jamescowens in #2987
  • contract: fix end()-iterator dereference in registry Revert() error paths by @jamescowens in #2988
  • refactor: SideStakeRegistry thread-safety per the contract-registry locking model (3/4) by @jamescowens in #2989
  • refactor: BeaconRegistry thread-safety per the contract-registry locking model (4/4) by @jamescowens in #2990
  • qt: fix Ctrl-C copying full balance instead of selection (#2994) by @jamescowens in #2996
  • rpc: convert 14 snapshots/registries blockchain.cpp commands to RPCHelpMan (Tier 1c, #2922) by @PrestackI in #2958
  • rpc: convert 8 server/misc/dataacq commands to RPCHelpMan (Tier 1 D1, #2922) by @PrestackI in #2961
  • wallet: add EXCLUSIVE_LOCKS_REQUIRED(cs_main) to CWallet::SyncTransaction definition by @Copilot in #3001
  • wallet: add EXCLUSIVE_LOCKS_REQUIRED(cs_main) to CWallet::AbandonTransaction by @Copilot in https://github.com/gridcoin-community...
Read more

5.5.0.0-mandatory

Choose a tag to compare

@jamescowens jamescowens released this 03 Apr 23:37
df13295

[5.5.0.0], 2026-04-03, mandatory, "Natasha"

Natasha represents over 13 months of development: 78 pull requests from 11 contributors, comprising 435 commits across 567 files with 51,238 lines added and 28,238 lines removed. The release includes 79 new test cases and 123 new source files.

This is a mandatory upgrade activating block v13 ("Fern II") and block v14 (HTLC) consensus rules on mainnet. All mainnet nodes must upgrade before the v13 activation height (3,989,800, approximately 8 weeks after release). Nodes that do not upgrade will be unable to follow the chain past the fork height.

The headline consensus change in this release is block v14, which activates three interdependent features: BIP65 (OP_CHECKLOCKTIMEVERIFY), BIP112/BIP68 (OP_CHECKSEQUENCEVERIFY and sequence-locked inputs), and Hash Time-Locked Contract (HTLC) support via the new createhtlc, claimhtlc, and refundhtlc RPCs. Block v14 also activates v3 beacons, which require a cryptographic BOINC account ownership proof (RSA-SHA512 signature issued by the BOINC project server) before a beacon is accepted, closing the historical gap where anyone who knew a CPID could advertise a beacon for it. (This historical gap was closed by the verification code process required for beacon v2, which was introduced in Fern, but the verification code process is very inconvenient, especially for new crunchers.) New beaconauth and advertisebeaconv3 RPCs support the v3 beacon flow, and a dedicated GUI wizard page guides researchers through the process. The v2 beacon flow remains valid.

Block v13 activates a broad set of consensus features, much of whose infrastructure was built in the 5.4.6.0 release but gated behind the v13 block version. Several of these features implement governance decisions made via community polls:

Governance polls implemented in this release

Poll Top Choice Votes Weight % AVW Validated
Treasury and Mandatory Sidestaking Structure Poll Yes, if the maximum mandatory side stake(X) is 25% 554 44.64% Yes
Determining consensus on future staking and magnitude rewards 500% 478 44.01% Yes
Determining consensus on recent and future multi-choice numerical poll outcomes First Past The Post 420 42.68% Yes
Proposed rebalancing of the reward and vote weight calculations Yes 413 42.75% Yes

The Treasury and Mandatory Sidestaking poll established the mandatory sidestake framework with a 25% maximum allocation, implemented via MaxMandatorySideStakeTotalAlloc in the consensus parameters. The staking and magnitude rewards poll (500% top choice, interpreted via First Past The Post as confirmed by the multi-choice outcomes poll) and the rebalancing poll together authorize the reward parameter changes described below. See Gridcoin-Tasks #268 for the full proposal and analysis.

Block v13 features:

  • Mandatory sidestaking: Protocol-enforced sidestake allocations (e.g. to the Gridcoin foundation) via administrative contract, validated in the block reward claim checker, with up to 4 mandatory sidestake outputs on the coinstake transaction. The sidestake registry, GUI management interface, and listmandatorysidestakes RPC were introduced in 5.4.6.0 (#2704).

  • Superblock v3 contracts carrying per-project all-CPID total credit data, required to support automated greylisting.

  • AutoGreylist: Automated greylisting of unresponsive BOINC projects based on Zero Credit Days (ZCD) and Whitelist Activity Score (WAS), with scraper convergence integration, GUI greylist state display, and an auto-greylist-override contract type. The system has received significant refinement since initial activation: flutter fixes for scraper quiescent periods, a benefit-of-doubt fix, removal of redundant fields from history output, and several crash and correctness fixes.

  • Changeable magnitude unit and magnitude weight factor: Configurable via protocol entries (administrative contracts with keys magnitudeunit and magnitudeweightfactor), enabling the network to adjust the research emission rate and the ratio of magnitude-to-balance weight in voting without a hard fork (#2781). These parameters, together with the enhanced CBR below, implement the infrastructure for Gridcoin-Tasks #268: Revitalizing Gridcoin — rebalancing rewards and vote weight. The first-choice (FC) parameters selected by poll will be applied via administrative contracts after v14 activation:

    • blockreward1 = 7,629,373,193 Halfords (~76.29 GRC/block)
    • magnitudeunit = 103050/100000 (~1.0305)
    • magnitudeweightfactor = 618034/1000000 (~0.618)

    This rebalances the reward split to ~38.2% CBR / ~61.8% research rewards (the golden ratio), increasing total daily emission from ~38,350 GRC to ~191,750 GRC (~5x), with an annualized inflation rate of ~14.07% (up from ~2.81%).

  • Enhanced constant block reward (CBR): Refactored GetConstantBlockReward with a ceiling raised to 500 GRC (from 20 GRC), controllable via protocol entry (blockreward1). Also corrected Active Vote Weight (AVW) computation for balance-only polls (#2781).

  • Contract payload version upgrades: Project contracts advance from v2 to v3, protocol and scraper contracts from v1 to v2, and voting, claim/MRC, and beacon contracts from v2 to v3. These version bumps enable the new payload formats required by several of the above features and by v3 beacons (which are further gated behind v14).

Mainnet activation heights

Parameter Height Approximate date
BlockV13Height 3,989,800 ~8 weeks post-release
BlockV14Height 3,990,000 ~200 blocks after v13
ProjectV4Height 3,989,800 Same as v13
SuperblockV3Height 3,989,800 Same as v13
AutoGreylistAuditHeight 3,989,800 Same as v13

The build system has been thoroughly modernized. Autotools (configure.ac, Makefile.am) have been removed entirely; CMake is now the sole supported build system. Qt6 is now supported (alongside Qt5), Linux Flatpak packaging with CI/CD artifact publication is available, official Docker container images (headless and GUI) are published, macOS DMG packaging is fixed and an Intel DMG CI build is added, Windows NSIS installer generation via CPack is supported, and Alpine/Musl Linux CI coverage is added. Boost 1.89+ and GCC 15 compatibility are addressed. A new ENABLE_DEBUG_LOCKORDER CMake option and improved lock-order diagnostic output aid concurrency debugging.

GUI improvements include a v3 beacon ownership proof wizard page, a sync overlay with out-of-sync action guards, an "Add Existing" button on the receive tab address book, subtract-fee-from-amount in the send dialog, thin-space thousands separators in coin amounts, transaction type tooltips and Help menu documentation links, a fix for stale researcher status display after beacon activation or revocation, fractional-scaling support with Qt6, Unicode data directory path handling on Windows, BOINC data directory resolution when native and Flatpak BOINC coexist, and macOS quit-hang and DMG packaging fixes. The terminology "investor" is replaced throughout with "non-cruncher".

Network hardening includes an encapsulated OrphanBlockManager with bounded storage, time-based expiry, and unique_ptr ownership (replacing the previous unbounded global orphan maps), per-peer resource exhaustion guards on data structures, inbound connection rate limiting per IP, and superblock deserialization caps to prevent memory amplification from crafted messages.

Added

  • consensus: set mainnet fork heights for Natasha mandatory (v13 at 3989800, v14 at 3990000) #2907 (@jamescowens)
  • consensus, script, rpc: add BIP68, BIP112/CSV, block v14 activation, and HTLC support (createhtlc, claimhtlc, refundhtlc) #2846 (@jamescowens)
  • consensus: set testnet v14 activation height at 3126500 #2874 (@jamescowens)
  • beacon: add BOINC account ownership proof verification for v3 beacons; add beaconauth and advertisebeaconv3 RPCs #2851 (@jamescowens)
  • qt: add v3 beacon ownership proof GUI wizard page #2856 (@jamescowens)
  • consensus: set testnet v13 mandatory height at 2870000; increment PROTOCOL_VERSION to 180328. Block v13 activates mandatory sidestaking, superblock v3 contracts, the AutoGreylist system, changeable magnitude weight factor and magnitude unit, and enhanced CBR #2800 (@jamescowens)
  • polls, voting, staking: changeable magnitude unit and magnitude weight factor via proto...
Read more

5.5.0.0-macos-codesigning

Pre-release

Choose a tag to compare

Special test release for macos signed and notarized packages

What's Changed

  • voting: initialize buildPollTable timer for daemon/RPC callers by @jamescowens in #2908
  • consensus: set mainnet fork heights for Natasha mandatory by @jamescowens in #2907

Full Changelog: 5.4.9.17-testnet...5.5.0.0-macos-codesigning

5.4.9.17-testnet

5.4.9.17-testnet Pre-release
Pre-release

Choose a tag to compare

@jamescowens jamescowens released this 29 Mar 05:51

What's Changed

  • voting: fix null pointer dereference in PollRegistry::DeletePoll by @jamescowens in #2904
  • ci: fix ARM64 cross-build, Arch Linux build, and update GitHub Actions by @jamescowens in #2905
  • net: bump protocol version to 180329 for block v14 mandatory by @jamescowens in #2906

Full Changelog: 5.4.9.15-testnet...5.4.9.17-testnet

5.4.9.15-testnet

5.4.9.15-testnet Pre-release
Pre-release

Choose a tag to compare

@jamescowens jamescowens released this 23 Mar 20:01

What's Changed

  • fix: use hash comparison in CTransaction::operator== by @PrestackI in #2899
  • refactor, net: orphan block manager and network hardening by @jamescowens in #2903

Full Changelog: 5.4.9.13-testnet...5.4.9.15-testnet

5.4.9.13-testnet

5.4.9.13-testnet Pre-release
Pre-release

Choose a tag to compare

@jamescowens jamescowens released this 15 Mar 04:15

What's Changed

  • refactor: fix Fraction operator== bug and harden against INT64_MIN UB by @jamescowens in #2876
  • build: add changed build folders to git ignore by @ZiggySchulz in #2879
  • wallet, qt: add subtract fee from amount option to send dialog by @jamescowens in #2875
  • build, qt: fix DebugMessageHandler linkage and DEP_LIB path resolution by @jamescowens in #2883
  • rpc: add listsidestakes RPC for combined sidestake view by @jamescowens in #2887
  • gui: add "Add Existing" button to receive tab address book by @jamescowens in #2890
  • consensus: fix misleading ERROR log for voluntary sidestake to mandatory address by @jamescowens in #2891
  • contrib: Add bash completion for gridcoinresearchd and gridcoinresearch by @Copilot in #2884
  • gui: add sync overlay and out-of-sync action guards by @jamescowens in #2893

New Contributors

  • @Copilot made their first contribution in #2884

Full Changelog: 5.4.9.11-testnet...5.4.9.13-testnet

5.4.9.11-testnet

5.4.9.11-testnet Pre-release
Pre-release

Choose a tag to compare

@jamescowens jamescowens released this 05 Mar 00:04

[5.4.9.11], 2026-03-04, testnet pre-release

This is a testnet-only pre-release (5.4.9.0 → 5.4.9.11) targeting block v14 mandatory activation on testnet at height 3126500. It is not intended for mainnet deployment; its purpose is to validate all v14 consensus changes before a coordinated mainnet hard fork. Mainnet nodes should not upgrade to this version.

The headline consensus change in this release is block v14, which activates three interdependent features: BIP65 (OP_CHECKLOCKTIMEVERIFY), BIP112/BIP68 (OP_CHECKSEQUENCEVERIFY and sequence-locked inputs), and Hash Time-Locked Contract (HTLC) support via the new createhtlc, claimhtlc, and refundhtlc RPCs. Block v14 also activates v3 beacons, which require a cryptographic BOINC account ownership proof (RSA-SHA512 signature issued by the BOINC project server) before a beacon is accepted, closing the historical gap where anyone who knew a CPID could advertise a beacon for it. (This historical gap was closed by the verification code process required for beacon v2, which has been used since Fern, but the verification code process is very inconvenient, especially new crunchers.) New beaconauth and advertisebeaconv3 RPCs support the v3 beacon flow, and a dedicated GUI wizard page guides researchers through the process.

Block v13 was made mandatory on testnet at height 2870000 during this release cycle. It activates a broad set of consensus features, much of whose infrastructure was built in the 5.4.6.0 release but gated behind the v13 block version:

  • Mandatory sidestaking: Protocol-enforced sidestake allocations (e.g. to the Gridcoin foundation) via administrative contract, validated in the block reward claim checker, with up to 4 mandatory sidestake outputs on the coinstake transaction. The sidestake registry, GUI management interface, and listmandatorysidestakes RPC were introduced in 5.4.6.0 (#2704).
  • Superblock v3 contracts carrying per-project all-CPID total credit data, required to support automated greylisting.
  • AutoGreylist: Automated greylisting of unresponsive BOINC projects based on Zero Credit Days (ZCD) and Whitelist Activity Score (WAS), with scraper convergence integration, GUI greylist state display, and an auto-greylist-override contract type. The system has received significant refinement since initial activation: flutter fixes for scraper quiescent periods, a benefit-of-doubt fix, removal of redundant fields from history output, and several crash and correctness fixes.
  • Changeable magnitude unit and magnitude weight factor: Configurable via protocol entries (administrative contracts with keys magnitudeunit and magnitudeweightfactor), enabling the network to adjust the research emission rate and the ratio of magnitude-to-balance weight in voting without a hard fork (#2781).
  • Enhanced constant block reward (CBR): Refactored GetConstantBlockReward with a ceiling raised to 500 GRC (from 20 GRC), controllable via protocol entry (blockreward1). Also corrected Active Vote Weight (AVW) computation for balance-only polls (#2781).
  • Contract payload version upgrades: Project contracts advance from v2 to v3, protocol and scraper contracts from v1 to v2, and voting, claim/MRC, and beacon contracts from v2 to v3. These version bumps enable the new payload formats required by several of the above features and by v3 beacons (which are further gated behind v14).

The build system has been thoroughly modernized. Autotools (configure.ac, Makefile.am) have been removed entirely; CMake is now the sole supported build system. Qt6 is now supported (alongside Qt5), Linux Flatpak packaging with CI/CD artifact publication is available, official Docker container images (headless and GUI) are published, macOS DMG packaging is fixed and an Intel DMG CI build is added, Windows NSIS installer generation via CPack is supported, and Alpine/Musl Linux CI coverage is added. Boost 1.89+ and GCC 15 compatibility are addressed. A new ENABLE_DEBUG_LOCKORDER CMake option and improved lock-order diagnostic output aid concurrency debugging.

GUI improvements include a v3 beacon ownership proof wizard page, thin-space thousands separators in coin amounts, transaction type tooltips and Help menu documentation links, a fix for stale researcher status display after beacon activation or revocation, fractional-scaling support with Qt6, Unicode data directory path handling on Windows, BOINC data directory resolution when native and Flatpak BOINC coexist, and macOS quit-hang and DMG packaging fixes. The terminology "investor" is replaced throughout with "non-cruncher".

Added

  • consensus, script, rpc: add BIP68, BIP112/CSV, block v14 activation, and HTLC support (createhtlc, claimhtlc, refundhtlc) #2846 (@jamescowens)
  • consensus: set testnet v14 activation height at 3126500 #2874 (@jamescowens)
  • beacon: add BOINC account ownership proof verification for v3 beacons; add beaconauth and advertisebeaconv3 RPCs #2851 (@jamescowens)
  • qt: add v3 beacon ownership proof GUI wizard page #2856 (@jamescowens)
  • consensus: set testnet v13 mandatory height at 2870000; increment PROTOCOL_VERSION to 180328. Block v13 activates mandatory sidestaking, superblock v3 contracts, the AutoGreylist system, changeable magnitude weight factor and magnitude unit, and enhanced CBR #2800 (@jamescowens)
  • polls, voting, staking: changeable magnitude unit and magnitude weight factor via protocol entries; refactored GetConstantBlockReward with CBR ceiling raised to 500 GRC; corrected AVW computation for balance-only polls #2781 (@jamescowens)
  • testnet: set AutoGreylistAuditHeight mandatory at 3111000 #2842 (@jamescowens)
  • poll: implement poll notifications in core and testpollnotification RPC #2804 (@jamescowens)
  • qt: add thin space thousands separators to coin amounts (closes #1040) #2849 (@jamescowens)
  • qt, doc: add transaction type tooltips, Help menu links, and transaction-types.md (closes #2808) #2850 (@jamescowens)
  • build: add Flatpak support with CI/CD artifact #2861 (@jamescowens)
  • build, ci, cd: add official Docker container images (headless and GUI) #2855 (@jamescowens)
  • build: add ENABLE_DEBUG_LOCKORDER CMake option #2860 (@jamescowens)
  • build: define DEBUG macro for CMake Debug builds #2871 (@jamescowens)
  • build: implement Alpine/Musl Linux CI #2832 (@jamescowens)
  • build: add Qt6 depends support and CMake compatibility #2826 (@jamescowens)
  • qt, build, ci: add optional Qt6 support #2798 (@CyberTailor)
  • build: use CPack to generate NSIS installer for Windows #48 (@CyberTailor)
  • ci: fix macOS DMG packaging and add macOS Intel DMG CI build #2864 (@jamescowens)
  • doc: replace coding.txt with Bitcoin developer-notes.md #2186 (@jamescowens)
  • doc: add quality control checklist (clinerules) #2854 (@PrestackI)

Changed

  • autogreylist: remove ZCD, WAS, and meets-greylist-criteria fields from getautogreylist history output #2817 (@jamescowens)
  • beacon: change beacon renewal job interval #2806 (@jamescowens)
  • build: remove Autotools build system entirely #2843 (@jamescowens)
  • build: fix version string duplication and stale autotools artifact pollution in CMake builds #2830 (@jamescowens)
  • build: add multiple depends source fallback capability #2824 (@jamescowens)
  • build: only link Boost::System if Boost < 1.89 #2823 (@2001herne)
  • build: bump libsecp256k1 to v0.6.0 #2801 (@div72)
  • bdb53: update embedded bdb53 code for GCC 15 compatibility #2816 (@jamescowens)
  • build: cmake build fixes for missing symbol checks and pipe2 detection #2821 (@fedux)
  • sync: improve DEBUG_LOCKORDER diagnostic output #2868 (@jamescowens)
  • refactor: replace "investor" terminology with "non-cruncher" throughout #2805 (@jamescowens)

Removed

  • build: remove Autotools build system (configure.ac, Makefile.am, m4 macros) #2843 (@jamescowens)
  • build: remove stale generated test data headers from source tree #2845 (@jamescowens)

Fixed

  • consensus, autogreylist: fix autogreylisting flutter during scraper quiescent periods #2840 (@jamescowens)
  • autogreylist: fix stack-use-after-return in AutoGreylist #2802 (@jamescowens)
  • staking: fix mandatory sidestake miscounting when staker address matches sidestake address #2848 (@jamescowens)
  • voting: fix unprotected chain state reads during vote tallying #2853 (@jamescowens)
  • voting, doc: fix false-positive lockorder warning in poll registry and document LOCK2 semantics #2867 (@jamescowens)
  • researcher: fix stale GUI researcher status after beacon activation via superblock #2852 (@jamescowens)
  • beacon: fix stale GUI researcher status after beacon revocation #2857 (@jamescowens)
  • rpc: fix params index bug in addkey for project auto_greylist_override contract type #2858 (@jamescowens)
  • rpc: make revokebeacon CPID parameter optional (defaults to current CPID) #2859 (@jamescowens)
  • scraper: fix lock ordering inconsistency in RecvManifest #2872 (@jamescowens)
  • scraper: fix scraper_net unserialize check to include ALL_BUT_DELETED projects #2813 (@jamescowens)
  • qt, init: fix Unicode data directory path handling on Windows #2863 (@jamescowens)
  • util: fix BOINC data directory resolution when native and Flatpak coexist #2862 (@jamescowens)
  • qt: fix macOS quit hang with QCoreApplication::exit #2873 (@jamescowens)
  • gui: fix fractional scaling with Qt6 #2829 (@jamescowens)
  • gui: fix external adapter project display logic #2811 (@jamescowens)
  • gui: fix researcher status display after beacon state changes on main screen #2810 (@jamescowens)
  • gui, init: fix "Blocks Verified" progress message total count #2814 (@ZiggySchulz)
  • compatibility: fix Qt6 and other compiler warnings #2827 (@jamescowens)
  • gui: fix build failures with -Werror=odr,lto-type-mismatch in notificator #2836 (@Kangie)
  • lint: fix include circular dependency linter false positives #2...
Read more