Gridcoin "Ingrid" release


[] 2021-08-01, leisure, "Ingrid"

This leisure release represents the completion of the "Ingrid" milestone. It has turned out to be a very substantial release, quite a bit larger in scope than originally envisioned. The biggest thing that folks will notice right away is the re-skinning of the application to conform to the approved GUI assets that were done for the GUI bounty. While a complete rewrite of a loosely coupled GUI has not been completed, this is a great stop-gap until that is done.

Some highlights:

  1. Implementation of the GUI assets in as native Qt. This major re-skinning is meant to tide us over until the implementation of the GUI as bountied in

  2. Many fixes and refinements to the GUI's underlying style and scaling. The wallet has a consistent look and feel across all platforms and most screen resolutions. There may be some remaining fine-tuning to dialog box sizes and we will attend to that in the next release after feedback from users in production.

  3. Overhauling of the poll/voting GUI. More work needs to be done in this area still, but the improvements in here should make voting a much better experience.

  4. Port of Bitcoin's ArgsManager which allows for much better processing of program arguments on the command line and the config files, and provides the plumbing for read-write core wallet settings into a new gridcoinsettings.json file while the wallet is running. Note that settings stored in gridcoinsettings.json always override the read-only gridcoinresearch.conf. (See 7.)

  5. Implementation of the consolidate unspent wizard for graphically assisted selection of UTXOs to consolidate and automated construction of the consolidation transaction. (Prior to this to do UTXO consolidation required the use of the consolidateunspent RPC command in the debug console.)

  6. Refresh of rainbymagnitude to require a minimum of 1000 GRC to do a network rain, and also prevent dust distribution via rain. No payment to an individual as part of a rain of less than 0.01 GRC is allowed. The ability to send custom rain messages has also been removed. The ability to do a trial run of the rain transaction before the send to understand what is going to happen has been implemented.

  7. The implementation of new options that allow in wallet GUI control of staking and stakesplitting without having to shut the wallet down first. In wallet GUI control and configuration of sidestaking is envisioned for the next release.

  8. Refresh of the snapshot download functionality to ensure broader compatibility and more reliable operation across all platforms, and implementation of the "reset blockchain data" option to easily wipe the blockchain from the GUI or the command line and start syncing from zero without having to manually go and delete the files.

  9. Refresh of the diagnostics to provide better information and eliminate bugs within the diagnostics themselves in corner cases.

  10. Many other fixes and refinements.

Some known remaining issues (both predating this release):

  1. Snapshot download functionality still will not work correctly on some 32-bit Linux platforms due to the distributions not properly compiling the libzip package with 64 bit file offsets enabled. We are probably going to end up distributing a version of libzip in the main source code compile tree, just like LevelDB, ensure it is statically linked into the executable, and ensure it is properly compiled with large offset support to fix this issue across all platforms. Note that the platforms that seem to be most affected by this are ARM 32-bit SBCs. The reason this is an issue at all is that the snapshot file is now greater than 2 GB. Windows 32 bit platforms work correctly and are not affected by this issue.

  2. If coin control is used to manually select UTXOs for a send, and a message is provided, the fees calculated do not include the cost of the message (0.1 GRC), so if the amount post fees to send + the calculated fees equals the selected UTXO size, the transaction will fail. This normally will not be a problem if automatic input selection is used, or you can simply reduce the amount to send by another 0.1 GRC and it will succeed.

Detailed notes on the new gridcoinsettings.json file and the listsettings and changesettings RPC commands:

With the implementation of the Bitcoin ArgsManager in Gridcoin comes the new gridcoinsettings.json file. This file contains settings changed by the node while running and settings stored in this file override the read-only settings in the gridcoinresearch.conf file.

Two new RPC commands have been implemented to enable listing and change of settings while the wallet is running:

listsettings takes no arguments and provides a JSON output of all settings currently active in the wallet. For each setting it shows whether that setting is changeable dynamically while the wallet is running without requiring a restart.

If a setting does not require a restart of the wallet (i.e. changeable_without_restart is true), then the setting(s) can be dynamically modified by...

changesettings setting1=value1 setting2=value2 etc.

No dashes are required for the settings (think about them like entries in the config file).

Note that settings modified this way will make entries in the gridcoinsettings.json file and they will override any corresponding settings in the gridcoinresearch.conf file.

The GUI control of staking and stakesplitting makes use of the same services internally.


[] 2021-08-01, leisure, "Ingrid"


  • util, rpc. gui: Changes for snapshotdownload and add feature sync from zero #2093 (@iFoggz)
  • gui: Implement GUI version of consolidateunspent (coin control part) #2111 (@jamescowens)
  • gui: Implement consolidateunspent wizard #2125 (@jamescowens)
  • qt: Add antialiasing to traffic graph widget #2150 (@barton2526)
  • util: Port of ArgsManager and a significant subset of src/util #2146 (@jamescowens)
  • doc: add issue templates for bug reports and feature requests #2147 (@Pythonix)
  • gui, rpc: Implement dynamic stakesplitting control, settings changes via rpc, and dynamic changes to sidestaking via rpc #2164 (@jamescowens)
  • rpc: Implement getblocksbatch #2205 (@jamescowens)
  • voting, rpc, gui: Implement demand loading of historical poll by poll id and AVW calculation #2210 (@jamescowens)
  • gui: Show GUI error dialog if command line parsing fails #2218 (@jamescowens)
  • gui: Implement close confirmation. #2216 (@denravonska)
  • build: Use -fstack-reuse=none #2232 (@barton2526)


  • doc: Update build doc #2078 (@iFoggz)
  • gui: Normalize button and input control appearance #2096 (@cyrossignol)
  • consensus: Implement GetMinimumRequiredConnectionsForStaking #2097 (@jamescowens)
  • refactor: move CTransaction to primitives #2006 (@div72)
  • consensus, refactor, test: Merkle #2094 (@div72)
  • gui: Update diagnostics #2095 (@jamescowens)
  • gui: Refresh UI styles and sidebar/statusbar design #2102 (@cyrossignol)
  • gui: Set standard base Qt style on Windows and macOS #2114 (@cyrossignol)
  • build, refactor: bump to C++17 #2113 (@div72)
  • util, rpc, gui: Implement GetMaxInputsForConsolidationTxn() #2119 (@jamescowens)
  • gui: Refresh overview page design #2117 (@cyrossignol)
  • depends: change boost mirror #2122 (@div72)
  • refactor: small cleanup #2123 (@div72)
  • build: Update depends Qt recipe to version 5.12.10 #2129 (@cyrossignol)
  • build: Bump Codespell to 2.0.0 #2135 (@barton2526)
  • gui: Refresh "send coins" page design #2126 (@cyrossignol)
  • gui: Optimize locks to improve responsiveness #2137 (@cyrossignol)
  • gui: Refresh "receive payment" page design #2138 (@cyrossignol)
  • gui: Add empty placeholder to recent transactions list #2140 (@cyrossignol)
  • gui: Refresh transaction history page design #2143 (@cyrossignol)
  • gui: Refresh address book page design #2145 (@cyrossignol)
  • doc: Update http to https where possible #2148 (@barton2526)
  • depends: Update dependencies #2153 (@barton2526)
  • depends: Bump python to 3.6 #2159 (@barton2526)
  • test: Update cppcheck linter to c++17 #2157 (@barton2526)
  • test: Drop Travis specific workarounds, Mention commit id in error, Fix typos, Update spellcheck ignore words #2158 (@barton2526)
  • gui: Overhaul the voting UI #2151 (@cyrossignol)
  • wallet: simplify nTimeSmart calculation #2144 (@div72)
  • gui: Refresh checkbox and radio button styles #2170 (@cyrossignol)
  • build: Bump libevent to 2.1.11 #2172 (@barton2526)
  • build: Update native_mac_alias, Remove big sur patch file in qt recipe #2173 (@barton2526)
  • docs: Misc Grammar #2176 (@barton2526)
  • build: miniupnpc 2.2.2 #2179 (@barton2526)
  • rpc: Refresh rainbymagnitude #2163 (@jamescowens)
  • util: optimize HexStr #2185 (@div72)
  • refactor: misc style changes #2177 (@div72)
  • rpc: consolidatemsunspent changes. #2136 (@iFoggz)
  • refactor: Replace "GlobalStatus" state management #2183 (@cyrossignol)
  • rpc, util: Remove use of ArgsManager::NETWORK_ONLY for now #2190 (@jamescowens)
  • doc: Replace hidden service with onion service, Capitalize "Tor" #2193 (@barton2526)
  • gui: Update Qt Linguist localization files #2192 (@cyrossignol)
  • script: Shell script cleanups #2195 (@barton2526)
  • build: set minimum required Boost to 1.58.0 #2194 (@barton2526)
  • build, util: Prevent execution for Windows versions less than Windows 7 #2203 (@jamescowens)
  • build: Tweak NSIS Windows installer #2204 (@jamescowens)
  • build: Add bison in depends #2206 (@iFoggz)
  • build: macOS toolchain bump #2207 (@div72)
  • doc: Update #2212 (@springfielddatarecovery)
  • build: Bump minimum python version to 3.6, Remove python2 references #2219 (@barton2526)
  • depends: Change openSSL source path to Github #2237 (@barton2526)
  • doc: Fix typo in bug report template #2243 (@jamescowens)
  • ci: fold depends output #2244 (@div72)


  • wallet: remove dead hardcoded addnodes #2116 (@sweede-se)
  • rpc: Remove readconfig #2248 (@jamescowens)
  • rpc: Remove obsolete comparesnapshotaccrual RPC function #2100 (@jamescowens)
  • rpc: Remove memorypool RPC Command #2214 (@RoboticMind)
  • rpc: Remove deprecated RPC commands #2101 (@jamescowens)
  • Remove CCT from README, add Discord #2134 (@barton2526)
  • refactor: Remove obsolete pubsub method definitions #2191 (@barton2526)
  • refactor: Remove msMiningErrorsIncluded & msMiningErrorsExcluded #2215 (@RoboticMind)
  • qt: Remove obsolete topLevelWidget(), Remove obsolete QRegExpValidator #2198 (@barton2526)
  • net: Drop support of the insecure miniUPnPc versions #2178 (@barton2526)
  • log: remove deprecated db log category #2201 (@barton2526)
  • doc: Remove CCT from README and release process docs #2175 (@barton2526)
  • build: Remove travis references #2156 (@barton2526)


  • gui: Fix macOS and designer font sizes #2098 (@cyrossignol)
  • gui: Have the TrafficGraphWidget respect the selected stylesheet. #2107 (@jamescowens)
  • gui: Fix macOS display inconsistencies #2106 (@cyrossignol)
  • gui: Fix RPC console auto-complete background color #2108 (@cyrossignol)
  • gui: Avoid reloading redundant stylesheets #2109 (@cyrossignol)
  • gui: Fix "no active beacon" status #2110 (@cyrossignol)
  • gui: Fix dark theme link text color visibility #2115 (@cyrossignol)
  • scraper, util, qt: Fix several deprecations and warnings #2131 (@jamescowens)
  • gui: Fix duplicate time in GUIUtil::dateTimeStr() #2139 (@cyrossignol)
  • gui: Fix debug console traffic graph legend colors #2142 (@cyrossignol)
  • gui: Fix nomenclature #2104 (@jamescowens)
  • doc: Fix Typos #2149 (@barton2526)
  • doc: Fix "master" branch build status badge in readme #2167 (@cyrossignol)
  • gui: Fix Inter font rendering on Windows with FreeType #2169 (@cyrossignol)
  • gui: Fix assert on non-existent data directory and GUI datadir chooser corner case issues #2174 (@jamescowens)
  • gui: Fix display artifact in poll loading indicator #2180 (@cyrossignol)
  • rpc, logging: Minor fixes for sidestake logging #2187 (@jamescowens)
  • gui: Fix fractional scaling for dialog sizes #2189 (@cyrossignol)
  • doc: Random fixes #2197 (@barton2526)
  • doc: getbalance should say GRC not "btc" #2199 (@barton2526)
  • net: Add missing verification of IPv6 address in CNetAddr::GetIn6Addr¦ #2200 (@barton2526)
  • doc: remove duplicate line from .gitignore #2202 (@Pythonix)
  • util: Tweak exception handling in MilliTimer class to eliminate compiler warnings #2233 (@jamescowens)
  • depends: patch missing include in qt #2234 (@div72)
  • wallet, rpc: Check each input for IsMine() in GetAddressGroupings #2242 (@jamescowens)
  • util, qt: Fix snapshot download #2246 (@jamescowens)
  • gui: Fix Column Widths in RPC Console. Elide long strings in their center. Indent user agent. #2241 (@barton2526)
  • qt: Fix crash during download snapshot on macOS #2250 (@jamescowens)
  • qt: Don't allow to open the debug window during splashscreen & verification state #2245 (@barton2526)
  • gui: Fix address book selected model record when editing #2253 (@cyrossignol)
  • researcher: Check wallet status before beacon renewal #2254 (@cyrossignol)
  • qt: Prevent pasting (no label) as label in consolidation transaction #2255 (@jamescowens)