Releases: gridcoin-community/Gridcoin-Research
5.4.2.0-leisure
[5.4.2.0] 2023-03-26, leisure, "LaVerne"
https://github.com/gridcoin-community/Gridcoin-Research/releases/tag/5.4.2.0
This is the 5.4.2.0 leisure release, the final release in the LaVerne milestone.
The changelog for this release is shorter than usual, but don't let that fool
you! Here are the most significant features in this release:
- #2540: HD wallet functionality (BIP32, but NOT BIP39 seed phrase support).
See details below. - #2620: Inclusion of Berkeley DB version 5.3 in tree and standardization of
all wallet.dat files to the bdb 5.3 format. THIS IS VERY IMPORTANT See
details below. - #2619: Optimization of critical section locking during poll refresh to fix
non-responsive GUI with wallets that have slow disks. This addresses the
complaint of non-responsive GUI when there are a lot of polls in progress and
the poll refresh is done on a computer with a regular HDD. - #2645, #2659: Improvements to the MRC request screen to improve information
and reduce confusion. - #2624: Update of pool cpids and avw rules. This adds the new pool (GRC Pool
5) to the list of valid pools for pool mode and also updates the poll % AVW
requirements passed by governance poll "Adopt New AVW Percentage Requirements
for Polls" c186e2fd5fa81541e74838c1f3b1268c471b55dc6c37aa1b3b9ea84ecd20801c. - #2612: Backport of Bitcoin Core ARMv8 SHA2 intrinsics which should speed up
newer ARM devices that are running a wallet.
For HD wallet functionality, please see the documentation in the PR:
#2540. Note that
people with existing wallets that choose to upgrade will have a HYBRID wallet
that contains both legacy private keys, the new hdseed key, and keys that are
generated from the hdseed. Backing up the hdseed covers all of the keys
generated from the hdseed, but not legacy keys. Those must also be backed up. It
is still safest to store copies of the wallet backup file(s) automatically
stored by the wallet every 24 hours in the walletbackups subdirectory of the
wallet data directory.
We have not yet implemented seed phrase support (BIP39).
IMPORTANT
If you are running a Windows wallet or certain Linux distribution wallets that
use the older Berkeley DB 4.8, such as Fedora or OpenSUSE, your Berkeley DB
version of your wallet.dat file will be upgraded automatically to 5.3 when you
first run Gridcoin after upgrading to this release. This should be completely
transparent to you. If for some reason you decide to downgrade, you need to be
aware that the older release will NOT successfully read your wallet.dat file
without doing a special procedure. If you downgrade to 5.4.1.0 or earlier,
before starting the downgraded wallet, you need to go to the data directory,
which is at %AppData%\GridcoinResearch on Windows or ~/.GridcoinResearch on
Linux by default, and go to the database subdirectory and delete the log.* files
found there. Then you can start the downgraded client and it should be able to
successfully read your wallet.dat file. If you downgrade and forget to do this,
your wallet will warn you about an unrecoverable error. If so, shut the wallet
down, and perform step discussed above, then restart. THIS IS ONLY NECESSARY IF
DOWNGRADING FROM THIS RELEASE.
The advantage of having everyone on the same bdb version, 5.3, is that
wallet.dat files will now be portable across ALL of Gridcoin's supported
operating systems/architectures that are on this version or higher (or were
already running bdb 5.3, such as Debian/Ubuntu, Mint, and Arch for example).
Just remember if you take a wallet.dat that is running on this release and move
it over to a machine running an earlier release on Windows, you will need to do
the procedure above or you will run into an error trying to read the
wallet.dat. Alternatively you can upgrade the target machine's wallet
installation before moving the wallet.dat, which would be preferred.
Thanks to the following contributors for this release:
- barton26
- delta1513
- div72
- jamescowens
- PrestackI
- pythonix
- sitiom
- theMarix
Enjoy!
Jim
[5.4.2.0] 2023-03-26, leisure, "LaVerne"
Added
- [3/3] key, wallet: HD wallets #2540 (@div72)
- ARMv8 SHA2 Intrinsics #2612 (@barton2526)
- build: vendor bdb 5.3 #2620 (@div72)
- scraper, gui: Add external adapter projects indication #2625 (@jamescowens)
- gui: implement INSUFFICIENT_MATURE_FUNDS status for the mrcmodel #2628 (@jamescowens)
- gui, accrual: Implement accrual limit warning #2636 (@jamescowens)
- rpc: add
getnodeaddresses
#2646 (@Pythonix) - consensus: Add new checkpoints #2651 (@barton2526)
Changed
- voting: Optimize poll locks #2619 (@jamescowens)
- util: move threadinterrupt.{cpp,h} to util #2613 (@Pythonix)
- gui, voting: Update pool cpids and avw rules #2624 (@jamescowens)
- ci: bump python and setup-python action version #2626 (@div72)
- gui: Change text from username to name (real name or nickname) #2633 (@jamescowens)
- locale: Translation update, phase 1 #2637 (@jamescowens)
- gui: Change MRC too soon to submit error to be less confusing #2645 (@jamescowens)
- locale: Update translations prior to release (phase 2/2) #2658 (@jamescowens)
- gui: Enhance MRC request form to avoid fee boost field confusion #2659 (@jamescowens)
Removed
none
Fixed
- net: Turn net structures into dumb storage classes (backport) #2561 (@Pythonix)
- build: Include native_X.mk before X.mk #2609 (@barton2526)
- depends: fix OpenSSL for Darwin builds #2610 (@div72)
- build: Change actions runner image to Focal, Force Lint to use 22.04, Change cd runner version #2611 (@barton2526)
- gui: don't show datadir error msgbox if arg isn't specified #2617 (@div72)
- rpc: Repair auditsnapshotaccrual rpc function #2621 (@jamescowens)
- gui: Correct updateBeaconIcon() function in bitcoingui.cpp #2622 (@jamescowens)
- wallet: Strengthen CWalletTx::RevalidateTransactions #2627 (@jamescowens)
- test: Fix Wambiguous-reversed-operator compiler warning, drop boost::assign #2632 (@barton2526)
- gui: Fix wallet overview displaying lower-case poll name #2640 (@delta1513)
- Fix and optimize ResendWalletTransactions #2642 (@jamescowens)
- build(nsis): Write registry keys to HKLM instead of HKCU, Install shortcuts for all users, Fix INSTALLDIR removal bug #2643 (@sitiom)
- gui: Fix TransactionRecord::decomposeTransaction to properly display self-sidestake #2647 (@jamescowens)
- rpc: Fixed the RPC error when running
help voting
while syncing #2649 (@delta1513) - build: Fix compilation with GCC 13 #2653 (@theMarix)
- rpc: Formatting - typo correction rpc help for listresearcheraccounts #2654 (@PrestackI)
5.4.1.0-leisure
[5.4.1.0] 2022-11-27, leisure
https://github.com/gridcoin-community/Gridcoin-Research/releases/tag/5.4.1.0
This is the 5.4.1.0 leisure release, an intramilestone maintenance release as
part of the LaVerne milestone. Much of this release comprises bugfixes and
updates from the Bitcoin Core upstream. Thanks to @barton2526 for working hard
to port Bitcoin Core PR's for Gridcoin. There are a few notable features that
make this version an important upgrade:
- Implementation of the getmrcinfo rpc function, which reports summary and/or
detailed MRC info for a single CPID or the entire network. - Implementation of the new core diagnostics library, along with an associated
walletdiagnose rpc command to allow running diagnostics on a headless wallet.
The GUI diagnostics were refactored to use the new core library. Thanks
@MinaFarhan! - Implementation of wallet holder's last vote information on the GUI poll
cards. This allows you to see your last vote on each poll in the GUI.
Thanks to the following contributors for this release:
Enjoy!
Jim
[5.4.1.0] 2022-11-27, leisure
Added
- net: Add and document network messages in protocol.h (backport) #2533 (@Pythonix)
- Define MAX_DIGITS_BTC for magic number in BitcoinUnits::format #2555 (@barton2526)
- rpc: Implementation of getmrcinfo #2570 (@jamescowens)
- init: Add init error message if -printtoconsole and -daemon specified simultaneously #2571 (@jamescowens)
- rpc: getmrcinfo part 2 - add calculated minimum fees and fee boosting and by CPID reporting #2575 (@jamescowens)
- fs: fully initialize
_OVERLAPPED
for win32 #2587 (@div72) - util: Diagnose Lib Version #1 #2573 (@MinaFarhan)
- util: Implement core diagnostics #2 (@jamescowens)
- util: modify Win32LockedPageAllocator to query windows for limit. #2536 (@div72)
- gui, voting: Implement information for wallet holder's votes on poll info cards #2605 (@jamescowens)
Changed
- scripted-diff: Drop Darwin version for better maintainability #2557 (@barton2526)
- build: Require gcc8 on Ubuntu Bionic to enable C++17 features #2579 (@barton2526)
- util: Replace use of locale dependent atoi(…) with locale-independent std::from_chars(…) (C++17) #2564 (@barton2526)
- translation: Translation updates #2581 (@jamescowens)
- depends: update urls for dmg tools #2583 (@div72)
- Use ReadLE64 in uint256::GetUint64 instead of duplicating logic #2586 (@div72)
- util: Make Parse{Int,UInt}{32,64} use locale independent std::from_chars(…) (C++17) instead of locale dependent strto{l,ll,ul,ull} #2592 (@barton2526)
- build: don't set PORT=no in config.site #2593 (@barton2526)
- build: Replace
which
command withcommand -v
#2595 (@barton2526) - build: update ax_cxx_compile_stdcxx to serial 14 #2596 (@barton2526)
- gui: Changed the unlocked for staking only icons to green #2598 (@delta1513)
- gui: Translation updates #2599 (@jamescowens)
- build: update CI for linter and actions version #2606 (@jamescowens)
- gui: Update translations #2608 (@jamescowens)
Removed
- refactor: remove unused c-string variant of atoi64() #2562 (@barton2526)
- refactor: Remove unused CDataStream::rdbuf method #2585 (@div72)
Fixed
- net: Fix some benign races (backport) #2532 (@Pythonix)
- rpc: fix invalid parameter error codes for {sign,verify}message RPCs #2556 (@barton2526)
- build: Fix x86_64 <-> arm64 cross-compiling for macOS #2560 (@barton2526)
- rpc, mrc: Fix field name and initialization of mrc_fees_to_staker #2567 (@jamescowens)
- gui: Add missing resizeTableColumns to fix send address book column widths #2569 (@jamescowens)
- accrual: rebuild snapshot registry on corruption instead of crashing #2577 (@div72)
- doc: Fix link to MurmurHash3.cpp (moved from Google Code to Github) #2584 (@div72)
- fix help text for
revokebeacon
command #2591 (@Pythonix) - util: Fix spelling error in gridcoinresearchd.cpp #2590 (@jamescowens)
- depends: always use correct ar for win qt build #2588 (@div72)
- util: Fix some bugs due to new implementation and change in BOINC dir handling (@jamescowens)
- util: Diagnose lib - Implement changes to solve crash on some Boost 1.66 machines #2597 (@jamescowens)
- contrib: Check for
patch
command, Check forwget
command #2594 (@barton2526) - build: Check std::system for -[alert|block|wallet]notify #2582 (@barton2526)
- gui: Changed the wording on the tooltip for the address book #2602 (@delta1513)
- build: pass win32-dll to LT_INIT() #2601 (@barton2526)
- build: minor cleanups to native_clang package #2600 (@barton2526)
- util: restore translations to diagnostics #2603 (@jamescowens)
- refactor: Fix problems found by valgrind #2607 (@jamescowens)
5.4.0.0-mandatory
[5.4.0.0] 2022-08-01, mandatory, "Kermit's Mom"
https://github.com/gridcoin-community/Gridcoin-Research/releases/tag/5.4.0.0
The Gridcoin core developers are proud to release 5.4.0.0 which represents the
Kermit's Mom milestone. This is a mandatory release and includes the long-
awaited implementation of Manual Reward Claims (MRC) and significant
improvments to poll and project structures among many other enhancements and
fixes.
Highlights
Manual Reward Claims (MRC)
The importance of this release to the community cannot be overstated. One of the
most significant challenges to new "crunchers" joining the Gridcoin community
is the payment of the 2nd layer crunching rewards to the crunchers for work they
are doing for network approved BOINC projects. The implementation of constant
block rewards (CBR) a number of years back improved the participation of wallets
in the staking process dramatically, raising the average difficulty on the
network from about 3 to greater than 18 today, representing more than
180000000 GRC continuously online and staking. This has drastically improved
security of Gridcoin, making it much more resistant to 51% attacks, but has had
the downside of increasing the effective minimum GRC required to solo crunch
to 5000 GRC or more. Without MRC, which is in this release, solo crunchers are
required to stake to get paid their rewards.
Most people regard having enough GRC to stake on average once a month is the
practical minimum for solo crunching, so 5000 GRC is effectively the minimum
bar for entry for solo crunching. Needless to say this is a giant challenge
for many newcomers and greatly harms the growth of the network. The pools help
with the problem by providing a way to earn GRC and eventually collect enough
to solo crunch, but they have a drawback in that the project research when pool
crunching is done in the name of the pool, not the cruncher. MRC sweeps that
giant hurdle away. With MRC you can solo crunch with only about 1 GRC to start.
You simply need enough to send a beacon advertisement (which is the new solo
cruncher's way of letting the network know that they want to get rewarded for
crunching). MRC will now allow a solo cruncher with an active beacon to request
payment at intervals as small as 14 days from the last time they were paid.
There is no minimum payment threshold, only the minimum time threshold. This
request for payment is a "manual reward claim" request, which is where the name
MRC came from originally. Note that what is going on under the hood is that the
requester is sending out a "MRC" request contract that is attached to a
transaction in the Gridcoin blockchain, which is picked up by the next staker,
and causes the staker to stake the reward for the requester as a delegate.
Essentially MRC is a form of delegated staking. Note that for this privilege
the requester will pay a portion of their reward as a fee to the staker and the
foundation. The total fee starts at 40% of the rewards at 14 days and then
declines as 14/(number of days) as the interval between payments is increased.
The foundation gets 80% of the fees and the staker 20%. These ratios were set
and approved by official poll
(id 651a3d7cbb797ee06bd8c2b17c415223d77bb296434866ddf437a42b6d1e9d89,
gridcoin-community/Gridcoin-Tasks#250).
To give a specific example, a new cruncher registers their beacon and starts
crunching. They have a pretty good computer and their magnitude has been
building to the point where at 14 days they have about 35 GRC pending as
rewards. At 14 days after the activation of their beacon, the MRC payment
button on the main screen will allow them to request payment of their rewards.
If they press the button at 14 days, then the requester will get 35 * (1 -
0.40) or 21 GRC. The foundation will get 0.80 * 0.40 * 35 or 11.2 GRC and the
staker will get 0.20 * 0.40 * 35 = 2.8 GRC. If the cruncher waits until 28 days
to request the reward, lets assume his or her magnitude is constant, so the
rewards have doubled, so now the requester has 70 GRC pending. If they press
the button at 28 days, then the requester will get 70 * (1 - 0.20) or 56 GRC.
The foundation will get 0.80 * 0.20 * 70 or 11.2 GRC and the staker will get
0.20 * 0.20 * 70 or 2.8 GRC. Notice that the effective fee to the foundation
and the staker at 28 days is the same as at 14 days. This is by design. The
foundation and staker fees decline as a percentage from the point of view of
the requester's total rewards as the time between payment requests increase
beyond 14 days, but from the point of view of the foundation and staker, the
fees essentially are computed at the 14 day point and remain capped as absolute
numbers.
The MRC request button will appear on the wallet main screen for crunchers
with active beacons and will allow MRC requests once the block v12
functionality block height is reached. This is the post Kermit's Mom release
hardfork point, and it will be at block 2671700, which will occur on or about
August 31, 2022.
Some resources to review for MRC and related concepts:
- Solo crunching guide: https://gridcoin.us/guides/boinc-install.htm
- Staking: https://gridcoin.us/wiki/staking.html
- Beacons: https://gridcoin.us/wiki/beacons.html
- MRC core functionality:
#2425 - MRC GUI functionality:
#2513
Polls
Kermit's Mom has significantly improved both the rigor and functionality of the
polling system. Poll categories were included in the GUI rewrite a while back,
but those categories were GUI only and were not enforced by protocol at the
blockchain level. At the Kermit's Mom hardfork block (2671700), polls will now
use the poll payload v3 contract and associated protocol code, which will
enforce and validate poll categories and the validation rules associated with
them. Minimum poll duration and minimum vote weight percent of active vote
weight, along with poll type requirements are now encoded and/or enforced by
protocol. The GUI will display a "validated" tag for polls that have met
validation requirements for their given poll type. Polls that fail validation
requirements by the end of the poll will show "invalid". Polls with invalid
combinations of poll type, duration, and poll weight type cannot be created and
will also be validated by all nodes and rejected if an invalid combination is
received.
Polls also support the inclusion of additional fields, and the PROJECT poll
type now requires the additional fields of project_name and project_url in
the poll. This is in anticipation of driving automated whitelisting
functionality in a future release.
For more information, please see:
- Voting: https://gridcoin.us/wiki/voting.html
- Whitelist: https://gridcoin.us/wiki/whitelist-process.html
- Poll validation:
#2522 - Poll GUI additional fields components:
#2525
Projects
Kermit's Mom has implemented the inclusion of a GPPR controls required flag in
the project structure. After the Kermit's Mom hardfork point (2671700), all
project entries for the whitelist will require the GDPR protection flag to be
set to either true or false to indicate whether the project requires the user
to give permission for project statistics for that user to be exported. This is
used to drive a new column in the projects tab table in the researcher
(cruncher) wizard, and indicate a possible situation where a cruncher may not
have granted the necessary permission.
For more information, please see:
- Whitelist: https://gridcoin.us/guides/whitelist.html
- GDPR Protection Display:
#2527
libsecp256k1 port from Bitcoin Core
This one is not visible on the outside to anyone, but is a major improvement to
Gridcoin's plumbing. @div72 did a fabulous job porting over Bitcoin Core's
libsecp256k1 to Gridcoin. This replaces OpenSSL for all elliptic curve
cryptography on the blockchain itself with Bitcoin's more efficient (and more
secure) version. OpenSSL is now only used by the CURL library for https
communication with external websites in the scraper project download. This will
remain as CURL is well encapsulated and well maintained.
There were many other improvements and fixes that are in the Kermit's Mom
release. Please refer to the change log below for details. This release was a
group effort. Thanks to everybody who submitted a PR merged into the release. A
special thanks to @barton2526 for doing many backports/fixes to the build
system, Qt version bumps, and other utility backports. Thanks to @Pythonix for
submitting backports and fixes to the network code. And thanks to @iFoggz for
submitting enhancements to the scanforunspent rpc. A special thanks to m3prx for
submitting the winning icon for MRC submission used in the GUI.
A teaser of the major feature to look forward to for the next milestone,
LaVerne: HD wallet support! This is another long sought piece of
functionality that will allow folks to store one keyphrase to regenerate all
keys if necessary and provide the foundation for proper hardware based wallet
functionality.
Jim Owens
[5.4.0.0] 2022-08-01, mandatory, "Kermit's Mom"
Added
- test: Add TrimString(...) tests #2447 (@barton2526)
- test: Add dead code detection #2449 (@barton2526)
- test: Add explicit references to related CVE's in comments #2467 (@barton2526)
- test: Add testing of ParseInt/ParseUInt edge cases with leading +/-/0:s #2470 (@barton2526)
- consensus, contract, mining, resea...
5.3.3.0-leisure
[5.3.3.0] 2022-02-27, leisure, "Janice"
The Gridcoin core developers are proud to release 5.3.3.0 which represents the
Janice milestone. This is actually a very large leisure release. On the surface
you will notice few changes, but there were a lot of updates under the hood,
including a number of bug fixes that should make the operation of the wallet a
lot smoother.
I would like to call out @barton2526 and @div72 specifically for their
contributions to this release. @barton2526 did a tremendous number of important
ports of functionality/changes/fixes from upstream. @div72 worked on some
critically important areas, including implementation of a Github integrated
automated release build capability, that will be used for this and succeeding
releases (See #2249.) There were other significant contributors too. Janice
was truly a group effort.
While this version is not a mandatory, I have noticed some nodes are still
running 5.3.0.0 or 5.3.1.0. In particular I STRONGLY urge folks running versions
prior to 5.3.2.0 to upgrade, as there have been many bug fixes since the
5.3.0.0 release that can affect the operation of the wallet, not to mention
the advancement of the GUI.
Enjoy. The next milestone is Kermit's Mom, which is going to be a mandatory and
will include some big items, including the long awaited MRC.
Jim Owens
Specific user notes:
-
The -reindex option has now been implemented to allow rebuilding the block-
chain transaction database from the block data file. This is similar to a
bootstrap but uses the in-place blockchain data files instead. Similarly the
existing -loadblock option has been improved to accept multiple data files. -
The blocks on the main screen will now show a percent progress indicator
during sync. -
The CPID detection code in the wallet now prefers the CPID implied by the
email configured in the wallet in the case multiple CPIDs are indicated in
the boinc client_state.xml file (i.e. a potential split CPID situation). -
A privacy mode has been implemented for the GUI main screen that can be
activated by Ctrl-Shift-M. -
-rpcwait and -rpcwaittimeout have been implemented following upstream
behavior. -
Obsolete config settings are now removed from the config file to help
eliminate confusion from no longer used settings and remove the old beacon
keys (pre-Fern), which are no longer valid (and haven't been for a long time). -
Fix for the bug that would result in the current poll not being properly
updated on the main screen, especially after a poll expires. -
Alt-7 was assigned as the hotkey for locking and unlocking the wallet in
the GUI. (Alt-1 through Alt-6 select the Overview - voting buttons.)
[5.3.3.0] 2022-02-27, leisure, "Janice"
Added
- build: add stack-clash and control-flow protection options to hardening flags, don't enable it for Windows #2284 (@barton2526)
- build: add upstream compiler warnings #2288 (@jamescowens)
- rpc: Create getblockbymintime #2290 (@RoboticMind)
- cd: generate release binaries using GitHub actions #2249 (@div72)
- util: port upstream span changes #2323 (@div72)
- rpc: add additional ban time fields to listbanned #2334 (@barton2526)
- test: Add sanity_tests from upstream #2343 (@barton2526)
- util, test: Don't allow Base58 decoding of non-Base58 strings. Add Base58 tests. Add whitespace tests. #2345 (@barton2526)
- test: Add tests for monetary value formatting and parsing. Clean up includes in rpc_tests #2348 (@barton2526)
- rpc: Implement -rpcwait and -rpcwaittimeout #2349 (@jamescowens)
- test: Add crypto_tests (@upstream #2372 from barton2526)
- test: Add test for GCC bug 90348 #2380 (@barton2526)
- build: add python3.10, 3.11 alias to AC_PATH_PROGS call in configure #2386 (@barton2526)
- wallet, contract: Implement contract change option #2388 (@jamescowens)
- gui: Implement privacy mode #2399 (@jamescowens)
- util: Implement -reindex option, improve -loadblock option #2394 (@jamescowens)
- gui: Implement Alt-7 for unlock and lock of wallet #2406 (@jamescowens)
- gui, voting: Add a one minute timer to check for current poll expiring and update gui #2416 (@jamescowens)
- gui: Implement a warning about split CPID/email mismatch condition #2414 (@jamescowens)
- util: clean obsolete config keys #2424 (@div72)
- net: Implement an upper limit of 950 for max network connections #2426 (@jamescowens)
Changed
- build: libevent 2.1.12-stable #2226 (@barton2526)
- build: Bump minimum QT support to 5.9.5, Remove obsolete checks #2251 (@barton2526)
- doc: Update to https where possible #2230 (@barton2526)
- refactor: Replace fprintf with tfm::format #2262 (@barton2526)
- qt: Replace deprecated QSignalMapper by lambda expressions #2261 (@barton2526)
- refactor: Use functions guaranteed to be locale independent (ToLower, IsDigit, IsSpace) #2265 (@barton2526)
- refactor: Replace std::to_string with locale-independent alternative #2266 (@barton2526)
- refactor: small python cleanup #2267 (@barton2526)
- refactor: Replace local dependent string functions with non-locale versions in strencodings.h/cpp #2270 (@amescowens)
- ci: Update KNOWN_VIOLATIONS list for the linter for functions we don't care are locale-dependent #2271 (@barton2526)
- refactor: move block storage functions to src/node/blockstorage #2273 (@div72)
- refactor: Replace deprecated Qt::SystemLocale{Short,Long}Date, Fix 'QDateTime is deprecated' warnings #2275 (@barton2526)
- rpc: optimize getblockbynumber #2289 (@barton2526)
- gui: Update connect statements to conform to Qt 5 standard #2281 (@jamescowens)
- depends: Bump ccache and curl #2297 (@barton2526)
- ci: only print depends/apt output if the step fails #2287 (@div72)
- depends: Update to openSSL 1.1.1l #2302 (@barton2526)
- rpc: Don't use floating point in getreceivedbyaddress #2310 (@barton2526)
- LibreSSL doesn't define OPENSSL_VERSION, use LIBRESSL_VERSION_TEXT instead #2306 (@barton2526)
- build: update m4 #2317 (@div72)
- qt: Replace deprecated Qt functions #2316 (@barton2526)
- build: set minimum required Boost to 1.60 #2318 (@barton2526)
- util: Don't use gmtime() or localtime() #2319 (@barton2526)
- build: Update univalue subtree #2335 (@barton2526)
- refactor: use include guards instead of #pragma once #2336 (@div72)
- refactor: Scraper thread safety and code cleanup #2315 (@jamescowens)
- qt: Follow Qt docs when implementing rowCount and columnCount #2333 (@barton2526)
- qt: Notificator class refactoring. Notificator always takes 3 args. Remove Growl support. #2352 (@barton2526)
- build: pin OpenSSL version for MacOS #2354 (@div72)
- build, util: Update leveldb to 1.22 (@upstream Bitcoin #2353 from jamescowens)
- test: Update transaction_tests and associated JSON files from upstream #2356 (@barton2526)
- test: Update script_p2sh_tests from upstream #2357 (@barton2526)
- refactor: port upstream ui_interface changes #2355 (@div72)
- contract: parse strings for claim and message types #2359 (@div72)
- test: Update sigopcount_tests and transaction_tests from upstream #2361 (@barton2526)
- test, refactor: Update script_tests from upstream #2360 (@barton2526)
- test: Update util_tests from upstream #2363 (@barton2526)
- test: Update script test JSON files from upstream #2364 @barton2526)
- refactor: split clientversion from version #2367 (@div72)
- random: port upstream random changes #2368 (@div72)
- refactor: convert C-style (void) parameter lists to C++ style () #2373 (@barton2526)
- build: Disable -fcf-protection for mingw win32 #2377 (@jamescowens)
- gui: Add text output and dialog boxes for -help and -version in GUI client #2378 (@jamescowens)
- test, refactor: Use FastRandomContext for all tests. Add a header for test_gridcoin #2381 (@barton2526)
- depends: avoid system harfbuzz and bz2 #2382 (@barton2526)
- doc: Update Windows build instructions #2383 (@barton2526)
- refactor: replace QDateTime::fromTime_t with QDateTime::fromSecsSinceEpoch #2387 (@barton2526)
- util: Port of Bitcoin upstream base58.h/cpp at a85442f62bf157b07849accd495c55c73535dc73 #2384 (@jamescowens)
- test: update base58_encode_decode.json from upstream #2391 (@barton2526)
- depends: Port libdmg-hfsplus changes from upstream #2389 (@barton2526)
- doc: Port newer build documentation from Bitcoin #2162 (@nathanielcwm)
- rpc: Change getmininginfo to getstakinginfo #2393 (@jamescowens)
- researcher: Prefer CPID with active beacon for primary CPID #2404 (@scribblemaniac)
- contract: separate legacy type parsing #2396 (@div72)
- refactor: Pass values by reference #2408 (@Pythonix)
- net: only adjust time with data from outbound nodes #2411 (@div72)
- rpc: Change call to FormatISO8601DateTime to FormatISO8601DateTimeDashSep in scanforunspent #2413 (@jamescowens)
- build: Adjust depends packages to successfully compile on OpenSUSE #2260 (@jamescowens)
- gui: Enable masking of cpid in privacy mode #2420 (@jamescowens)
- doc: Update license year range to 2022 #2421 (@barton2526)
- contrib: install_db4: use local config.guess/sub #2436 (@div72)
- gui: update translations #2442 (@div72, @3man001)
Removed
- qt: Remove stray QT4 references #2220 (@barton2526)
- util: Remove old boost hacks/workarounds #2231 (@barton2526)
- refactor: Remove sprintf and printf #2269 (@jamescowens)
- depends: Remove boost::program_options dependency #2277 (@barton2526)
- refactor: Drop noop gcc version checks #2278 (@barton2526)
- util: Remove unused itostr #2280 (@barton2526)
- util: Remove deprecated random number generator functions #2236 (@jamescowens)
- depends: cleanup package configure flags #2279 (@barton2526)
- rpc: remove 'label' filter for rpc command help #2282 (@barton2526)
- wallet: remove unused fNoncriticalErrors variable from CWalletDB::FindWalletTx #2283 (@barton2526)
- refactor: Optimiz...
5.3.2.0-leisure
[5.3.2.0] 2021-08-01, leisure, "Ingrid"
https://github.com/gridcoin-community/Gridcoin-Research/releases/tag/5.3.2.0
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:
-
Implementation of the GUI assets in
#847 as native Qt.
This major re-skinning is meant to tide us over until the implementation of the
GUI as bountied in
#1401. -
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. -
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. -
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.) -
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.) -
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. -
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. -
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. -
Refresh of the diagnostics to provide better information and eliminate bugs
within the diagnostics themselves in corner cases. -
Many other fixes and refinements.
Some known remaining issues (both predating this release):
-
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. -
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.
Enjoy!
[5.3.2.0] 2021-08-01, leisure, "Ingrid"
Added
- 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)
Changed
- 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: Up...
5.3.1.0-leisure
[5.3.1.0] 2021-04-04, leisure
This leisure release is part of the "Ingrid" milestone and contains a number
of important fixes. It is highly recommended to upgrade as soon as practicable.
Some highlights:
-
The beacon renewal chain walker fix (#2054) corrects a potential stall on restart
if the accrual directory is rebuilt. -
Beacons are not supposed to be auto-renewed during the scraper active period to
prevent problems with magnitude for renewed beacons on the following superblock. We
actually saw this, where a researcher lost magnitude on the following superblock (only)
due to a renewal that occurred while the scrapers were active, and traced it to an
incorrect guard on the renewal. #2090 and #2092 fix this problem. -
Checkpoint based spam protection has been reimplemented (#2084) and we are now
verifying hardened checkpoints on startup to catch some forked wallets better. -
Several GUI improvements, including better researcher status while out-of-sync to
prevent confusion (#2068), and an update to translations. -
Memory optimization for the beacon db to "passivate" unneeded beacon elements from
memory. -
Implementation of a new getburnreport RPC function.
The next release should have the requested "sync-from-zero" menu option to complement
the "snapshot download" option already present.
Enjoy!
[5.3.1.0] 2021-04-04, leisure
Added
- doc: Invite users to donate to Gridcoin Foundation #1997 (@smoe)
- rpc: Add "getburnreport" RPC function #2049 (@cyrossignol)
- gui: Add stats export reminder to beacon wizard auth page #2050 (@cyrossignol)
- doc: Add undocumented "-showorphans" GUI option to help text #2058 (@cyrossignol)
- beacon: Cull beacon db memory (passivation) #2069 (@jamescowens)
- gui: Avoid refreshing GUI researcher status while out-of-sync #2068 (@cyrossignol)
- consensus: Reimplement checkpoint-based spam protection #2084 (@cyrossignol)
- consensus: Verify hardened checkpoints on start up #2087 (@cyrossignol)
Changed
- test: autogenerate data headers #2030 (@div72)
- doc: Change copyright years to 2021 #2042 (@caraka)
- gui: Clarify overview page "stake" field #2056 (@cyrossignol)
- doc: Update Copyright headers #2059 (@barton2526)
- gui: Update Qt Linguist localization files #2063 (@cyrossignol)
- build: update dependencies #2064 (@barton2526)
- net: Reduce default connection limit back to 125 #2066 (@cyrossignol)
- build: openssl patch #2074 (@barton2526)
- translation: Translate /src/qt/locale/bitcoin_en.ts in pt_PT #2083 (@DjMVeiga)
- log: Adjust logging #2076 (@jamescowens)
- gui: Change scraper tab to Inconsolata monospace font #2085 (@jamescowens)
- researcher: Change beacon deferment fix to reference nActiveBeforeSB #2092 (@jamescowens)
Removed
- net: Clean up mandatory protocol version transition #2080 (@cyrossignol)
- refactor: Remove LessVerbose() function #2089 (@cyrossignol)
Fixed
- build: Fix depends cross-compilation for macOS #2038 (@cyrossignol)
- build: Deal with Qt depends .qmake.stash file #2048 (@cyrossignol)
- beacon: Fix a subtle error in renewal chain walker #2054 (@jamescowens)
- researcher: Fix "malformed CPID" status for some pool projects #2052 (@cyrossignol)
- lint: Misc Typos #2060 (@barton2526)
- lint: remove identified duplicate includes #2061 (@barton2526)
- gui: Fix splash screen block height progress #2057 (@cyrossignol)
- gui: Fix garbage placeholders in some tx notification localizations #2070 (@cyrossignol)
- build: Patch libzip to fix mingw compile regression for mingw 9.2+ #2082 (@jamescowens)
- gui: Fix shutdown response for failed core init #2088 (@cyrossignol)
- researcher: Fix deferment of beacon renewal in superblock window #2090 (@cyrossignol)
- gui: Fix typo in beacon status refresh #2091 (@div72)
5.3.0.0-mandatory
[5.3.0.0] 2021-03-16, mandatory
EMERGENCY MANDATORY
First, I would like to apologize for having to issue an emergency mandatory release. The newbie bug was ALMOST squashed by the
combination of 5.2.0.0+ and the hard fork and following superblock. Unfortunately almost is not good enough. There were 130 people
affected by the newbie bug, and after the post hard fork superblock, the pending rewards matched properly for 127 out of the 130
original mismatches. The other three didn't, and further, different nodes showed different things for those three. Most nodes showed
a perfect match but some showed a mismatch on one or two of the three involved. Many thanks to @div72 for a keen eye in helping me
spot the one line in code that was causing the problem.
Given different nodes don't match, this is a consensus issue and requires a mandatory to fix. Note that this version, when installed
and first run will automatically rebuild the accrual snapshots (in the accrual folder) to straighten everything out. This may
take a couple of additional seconds on startup, but should be transparent.
There are no other changes in this mandatory. Not installing this mandatory risks your node forking if it has a different accrual
than the rest of the network for those three newbie CPID's if they stake, so it is best to upgrade to this version ASAP.
We have run audits on a number of nodes with a hotfix version of this mandatory that we tested on mainnet last night and all now
match. This should be the end of the newbie bug problem and things should be quieter on the release front for a while!
Onward!
Thanks!
[5.3.0.0] 2021-03-16, mandatory
Fixed
- consensus, accrual: Fix accrual post hard-fork at 2197000 #2053 (@jamescowens, @div72, @cyrossignol)
5.2.2.0-leisure
[5.2.2.0] 2021-03-14, leisure
This is a small maintenance release to address a sync from zero issue in the 5.2.1.0 release.
We had a report of folks sticking at block 2069264 during a sync from zero using 5.2.1.0. This did not occur with 5.2.0.0.
Looking into the matter, the bug fix in 5.2.1.0 (#2036) created a different problem where in a rare instance multiple beacon contracts
on the same block would not get recorded properly. The fix is in this release.
Folks that are using 5.2.1.0 should upgrade at their earliest convenience, because there is a small chance this problem could occur on a
future block. Note that if you were using 5.2.1.0, when you first start 5.2.2.0, it may take a little longer to startup at the Gridcoin
screen, because it has to scan to correct the problem caused 5.2.1.0.
Thanks!
[5.2.2.0] 2021-03-14, leisure
Fixed
- beacon, contracts: Fix sync from zero issue due to ApplyContracts problem in 5.2.1.0 #2047 (@jamescowens)
5.2.1.0-leisure
[5.2.1.0] 2021-03-07, leisure
This is a small maintenance release to address some rough edges in the 5.2.0.0 release.
-
The locked file during cleanup error that people were encountering when using the snapshot download menu option
has been resolved. -
The workflow on the voting tab has been changed to mitigate the wallet being stuck for a long period of time
every time the voting tab is selected. Now the polls do not load until the reload button is pressed. A timer
keeps the data in cache for 60 minutes, and then puts up a reminder to refresh because it is stale. Switching
away and switching back the data is retained. -
A very minor issue was corrected in the beacon db that under certain very improbable circumstances could cause
a wallet to stall if restarted on a block where a beacon renewal contract is advertised, and on restart a reorg happens
that causes the wallet to reorganize deeper than that block. The wallet will recover by being restarted again and the
actual renewals are not affected by the problem, but it is a good idea to apply this release for the fix. -
Consolidateunspent was enhanced slightly by adding the transaction hash and fees paid to the rpc output.
Enjoy! :)
[5.2.1.0] 2021-03-07, leisure
Added
- voting: Add wait warning to voting tab loading message #2039 (@cyrossignol)
- rpc: Adds transaction hash and fees paid to consolidateunspent #2040 (@jamescowens)
Changed
- gui, voting: Make some minor adjustments for VotingDialog flow #2041 (@jamescowens)
Fixed
- beacon, util, gui: Fix small error in beacon db for renewals and fix snapshot download functionality #2036 (@jamescowens)
5.2.0.0-mandatory
[5.2.0.0] 2021-03-01, mandatory, "Hilda"
The core team is proud to present the Hilda milestone release, which is a mandatory upgrade.
The mandatory aspect of the upgrade here is the complete fix for the "newbie bug" that was
not completely fixed in Gladys. This mandatory provides a permanent fix for the bug, and
also will pay newbie's back accrual when they stake post-fix to the point of their original
beacon confirmation superblock, as long as they have not already staked with their CPID. (For
reference, the "newbie bug" is where newly confirmed beacons would have their accruals
reset to zero at each superblock instead of continuing like they are supposed to.)
The transition height ("hard fork") is at 2197000, which will be approximately Sunday, March 14.
All nodes MUST be upgraded by then or face disconnection from the network. There is a disconnection
grace period of 2000 blocks higher than the hard fork, or 2199000. Any node not on 5.2.0.0 at that
time will automatically be disconnected.
In addition to the mandatory inducing changes, this release contains LOTS of goodies that should
improve the experience with the wallet. Some highlights:
-
A Port of the data directory dialog box from Bitcoin Core for a brand new installation, allowing
a different directory than the default to be specified. This will be memorized by the wallet as
an alternative to providing a -datadir value on the command line. This should be especially useful
for MacOS folks. -
Another goodie for the MacOS folks is the implementation of the AppNap manager ported from Bitcoin Core,
which suspends AppNap when the wallet is staking to avoid lost stake opportunities. -
Significant optimizations were done to memory usage that reduce memory requirements by 30% or more.
This should really help using the wallet on SBCs and also reduce hardware requirements on other
platforms. It also results in another modest improvement in sync speed, although we are getting
to the point of diminishing returns there. Mainnet can sync from zero in less than 2 hours on a
fast machine. -
Several bottlenecks were removed in the GUI code that caused the wallet to bog down very badly
if the wallet has a lot of transactions or a lot of UTXOs. This drastically improves the GUI experience,
especially if resyncing an existing wallet from zero with the blockchain, or on a slower SBC. -
The GUI now remembers the size and position of the wallet window for both mainnet and testnet, and some
font work was done to improve scaling on various displays. (The font and scaling work is still a
work in progress, but it is much better than before.) -
A big bug was fixed in CreateTransaction that was causing insufficent fee transaction rejections
and driving everyone crazy! This bug has actually been in there forever and is finally slayed! -
Related to #3, but also generally useful for folks interested in monitoring their staking
efficiency are new measures in the getmininginfo RPC: staking_loop_efficiency measures the percent
of elapsed time that is covered by an active staking loop, and staking_efficiency measures the overall
staking efficiency, which takes into account staking_loop_efficiency and the UTXO's that are on
cooldown. -
The beacon registry in the wallet, which holds in memory the beacons for the network, has received
enhancements that solve some thorny problems related to contract lookback and beacon renewals, and
does this with high performance by using leveldb for specialized storage of the beacon structures. -
Consolidateunspent has been enhanced. The function now allows the consolidation of ALL addresses
to the specified address, and also allows the sweeping of associated change addresses. -
The wallet no longer depends on external IP resolvers, but instead uses the Bitcoin Core style of
IP resolution. This also means the wallet will correctly update its IP if a notebook is put to sleep
on one network and then awoken on another with a different IP. Before the wallet would have to be restarted
to accept incoming connections. Note that UPNP can still be an issue though. -
Other bugfixes and enhancements too.
This was a pretty hefty release. We hope you enjoy it! :)
[5.2.0.0] 2021-03-01, mandatory, "Hilda"
Added
- gui: Add RAC column to wizard summary page projects table #1951 (@cyrossignol)
- rpc: clean up the superblocks function and add magnitude to getmininginfo #1966 (@jamescowens)
- rpc: Add transaction size to RPC output #1971 (@cyrossignol)
- voting: Add user-facing support for poll response types #1976 (@cyrossignol)
- gui: Port Bitcoin Intro class (implement the ability to choose a data directory via the GUI) #1978 (@jamescowens)
- gui: Port Bitcoin MacOS app nap manager #1991 (@jamescowens)
- mining, rpc: Implement staking efficiency measure and improve SelectCoinsForStaking and CreateCoinStake #1992 (@jamescowens)
- accrual, rpc: Implement auditsnapshotaccruals #2001 (@jamescowens)
- docs: add doxygen support #2000 (@div72)
- beacon: Specialized beacon storage in leveldb #2009 (@jamescowens)
- rpc: Add a call to dump contracts in binary form #2011 (@div72)
- rpc: Add boolean option to report active beacons only in beaconreport #2013 (@jamescowens)
- consensus: Set Hilda mainnet hardfork height to 2197000 #2022 (@jamescowens)
Changed
- refactor: [Memory optimization] Block index duplicate PoS state #1945 (@cyrossignol)
- refactor: [Memory optimization] Block index superblock and contract flags #1950 (@cyrossignol)
- refactor: [Memory optimization] Remove stake modifier checksums #1954 (@cyrossignol)
- refactor: [Memory optimization] Block index allocation overhead #1957 (@cyrossignol)
- refactor: [Memory optimization] Remove block index subsidy fields #1960 (@cyrossignol)
- refactor: [Memory optimization] Separate chain trust from the block index #1961 (@cyrossignol)
- refactor: [Memory optimization] Eliminate padding between block index fields #1962 (@cyrossignol)
- beacon, gui: Add check for presence of beacon private key to updateBeacon() #1968 (@jamescowens)
- util: Enhance ETTS calculation #1973 (@jamescowens)
- refactor: Use new clamp in util.h #1975 (@jamescowens)
- gui: Redo global status for overview #1983 (@jamescowens)
- util: Improvements to MilliTimer class and use in the miner and init #1987 (@jamescowens)
- rpc: Move rpc files to directory #1995 (@Pythonix)
- rpc: Enhance consolidateunspent and fix fee calculation #1994 (@jamescowens)
- contract: Double the lookback scope of contract replay #1998 (@jamescowens)
- net: Don't rely on external IP resolvers #2002 (@Tetrix42)
- beacon: Change beacon map to pointers #2008 (@jamescowens)
- gui: Update bitcoin_sv.ts #2014 (@sweede-se)
- util: Update snapshot URLs and add accrual directory #2019 (@jamescowens)
- beacon: Tweak BeaconRegistry::Revert #2020 (@jamescowens)
- rpc, qt: bump fees @2023 (@div72)
Removed
- researcher: Remove automatic legacy beacon key import #1963 (@cyrossignol)
- util: Revert "Close LevelDB after loading the block index" #1969 (@cyrossignol)
- ci: Fix python symlink issue & remove travis #1990 (@div72)
- ci: remove python workaround #2005 (@div72)
Fixed
- gui: fix mandatory/leisure detection of upgrade check #1959 (@Pythonix)
- voting: Fix title in "gettransaction" RPC for legacy poll contracts @1970 (@cyrossignol)
- gui: Fix missing menu items on macOS #1972 (@scribblemaniac)
- rpc: Fix answer offset in "votedetails" #1974 (@cyrossignol)
- voting: Implement missing try-catch in VotingVoteDialog::vote #1980 (@jamescowens)
- scraper: Add check for minimum housekeeping complete in scraper #1977 (@jamescowens)
- voting: Fix nonsense vote weights for legacy polls #1988 (@cyrossignol)
- voting: Fix incorrect field returned in ResolveMoneySupplyForPoll() #1989 (@cyrossignol)
- consensus, accrual: Fix newbie accrual #2004 (@jamescowens)
- log: grammar correction #2016 (@nathanielcwm)
- wallet: Correct nMinFee fee calculation in CreateTransaction #2021 (@jamescowens)
- rpc, miner: Correct GetLastStake #2026 (@jamescowens)
- wallet: Fix bug in CreateTransaction causing insufficient fees #2029 (@jamescowens)