Releases: gridcoin-community/Gridcoin-Research
5.4.8.3-testnet
Testnet release of 5.4.8.3 for testing. This is RC1 for 5.4.9.0 maintenance release as part of the Natasha milestone.
This is for testnet network only unless permission is granted to use on mainnet by a core dev.
5.4.8.2-testnet
Testnet release of 5.4.8.2 for testing.
This is for testnet network only unless permission is granted to use on mainnet by a core dev.
5.4.8.0-hotfix-1
This is a hotfix tag to address the breaking change in miniupnp API version 18+. Currently this is only necessary for Arch Linux with the latest updates.
Fixed
- util, build: Support miniupnp API version 18+ #2771 (@jamescowens)
5.4.8.0-leisure
[5.4.8.0], 2024-04-10, leisure
This release is a maintenance release that adds checkpoints post the unintended
fork when 5.4.6.0 was introduced. Given that some folks upgraded to 5.4.7.0 too
late for their wallets to correct out of the fork, some 5.4.7.0 clients continue
to spam the network. This will largely squelch that on 5.4.8.0 nodes. It also
will force the forked 5.4.7.0 or below clients to reset their blockchain and
resync from zero when they upgrade to 5.4.8.0 and run it for the first time.
It is highly encouraged to upgrade to this release.
Jim Owens
Added
- build: add option for sanitizers #2553 (@div72)
- build: CMake: Initial Windows support (MSYS2) #2733 (@CyberTailor)
Changed
- build: enforce SSE2 on x86 targets #2746 (@div72)
- consensus: Update checkpoint data for mainnet and testnet #2756 (@jamescowens)
- gui, util: Enhance verify checkpoints fail handling; use RegistryBookmarks for DB passivation #2758 (@jamescowens)
Removed
Fixed
- build, depends: fix compilation with XCode 15 #2747 (@div72)
- Fix man page installation path for cmake builds #2749 (@theMarix)
- consensus, mrc, sidestake: add mrc fees to staker to rewards to be allocated via sidestaking #2753 (@jamescowens)
- Fix Systemd unit install location #2754 (@theMarix)
- scraper: Corrections to scraper_net after removal of cntPartsRcvd decrement and increment #2755 (@jamescowens)
- rpc: fix setban segfault #2757 (@div72)
5.4.7.0-leisure
[5.4.7.0], 2024-03-13, leisure
This release is solely to implement the disconnection of version 5.4.5.0 and
below nodes as the last cleanup action due to the inadvertent fork caused at
3190603/4 as a result of the inadvertent protocol change introduced in
5.4.6.0. A more detailed explanation is in order:
The default contract version is supposed to change from 2 to 3 at the block v13
hardfork, which was envisioned to be set as part of the Natasha milestone
release. The way this is accomplished is that the default contract version is
incremented to 3, and then logic is used to ensure the contract version actually
used is 2 until the v13 fork point is reached. The fork point for v13 was not
set in version 5.4.6.0, as it was intended to be 100% protocol compatible with
5.4.0.0 - 5.4.5.0, i.e. a leisure upgrade; however, a coding omission caused tx
messages sent from 5.4.6.0 nodes to be version 3 instead of version 2
immediately. This caused nodes 5.4.5.0 and below to reject the transaction
containing the message and the block causing a fork.
This mistake is mine and mine alone, and I am regretful about it. This is the
first forking incident we have had in a number of years, but I take this type
of event very seriously. Regression testing is done as well as longer time
testnet testing and some mainnet testing before that, but this particular type
of issue is hard to catch.
By the time this actually occurred on mainnet, there was far more weight on the
5.4.6.0 side of the fork than the 5.4.5.0 side, so it made the most sense to
continue forward with the 5.4.6.0 side, and require everybody that had not
already upgraded to upgrade, essentially turning 5.4.6.0 into a mandatory.
All but a few folks have upgraded now to 5.4.6.0, but we still have a few nodes
(with aggregrate difficulty ~ 1.0) on the 5.4.5.0 fork and these nodes are
connecting to 5.4.6.0 peers. Given that the fork common block is fairly deep at
this point (the fork point was at 3190603/4 and the head of the chain is at
3194579 as of this writing), this is causing a lot of unnecessary network
traffic between 5.4.5.0 and 5.4.6.0 nodes to pass orphan blocks around.
At this point it makes sense to implement an automatic disconnect for all nodes
5.4.5.0 and below. The code already disconnected nodes below 5.4.0.0 as the
protocol version in wallets less than 5.4.0.0 is out of date. Because the
protocol version was not incremented from 5.4.5.0 to 5.4.6.0, we have to
distinguish and disconnect here based on the node sub version string, which
contains 5.4.x (and is also displayed in the peers table).
Note this is similar in concept to what we do in a normal mandatory, where we
normally disconnect pre-mandatory version nodes after a grace period from the
hard fork height. Obviously the conditions are not ideal here, but this is the
best answer at this point.
This should solve the elevated CPU usage and network bandwidth of wallets that
are receiving all of the orphan block traffic.
This release also includes the small adjustment to the Fraction class to solve
the compilation problems on Arch.
Added
- net, consensus: Ban nodes 5.4.5.0 and below #2751 (@jamescowens)
Changed
Removed
Fixed
- util: Adjust Fraction class addition overload overflow tests #2748 (@jamescowens)
5.4.6.0-hotfix-1
This hotfix includes PR2748 which corrects test suite errors This hotfix is only necessary if C++ compiler flag -D_GLIBCXX_ASSERTIONS is set during build. Currently this is true for Arch distribution. This hotfix is NOT necessary for normal wallet operation.
5.4.6.0-leisure
[5.4.6.0], 2024-03-02, leisure, "Miss Piggy"
https://github.com/gridcoin-community/Gridcoin-Research/releases/tag/5.4.6.0
This is the 5.4.6.0 leisure release, the final release in the Miss Piggy
milestone.
This is an important release that contains a number of bugfixes that enhance
stability for the wallet and implement poll caching, automatic background
updates and performance improvements for polls/voting. It also includes most
of the basic machinery needed to support the v13 block version protocol which
will be in the next mandatory at the following milestone, Natasha, although the
v13 block height has not been set, so we remain at v12 for now.
Some highlights:
- GUI control of sidestaking via settings -> options -> staking has been
implemented. Sidestaking has been converted over to integer arithmetic to
eliminate floating point consensus issues in preparation for the v13 mandatory,
which will support mandatory sidestaking. - Caching of polls in the client with automatic background updating, and poll
expiration reminders. This is a major improvement to polling. Some corrections
were made to how the wallet handles "my vote" tracking. - CMake build system support, which allows CMake to be used instead of
autotools. Note this does not yet work for Windows builds, but that is coming.
This should be helpful for maintainers. - Removal of almost all OpenSSL dependencies in favor of upstream native
implementations, with the exception of SSL RPC (deprecated anyway), and
indirect use through CURL, which is required in the scraper and a few other
areas. - A number of important fixes and updates, including a fix for the beacon
history stall problem that some folks have experienced, and an issue that caused
a major fork in testnet back in September 2023. - PR #2711 changes the JSON keys in the superblocks RPC command to lower snake
case, which is the RPC standard. This could cause scripts that process the
superblocks command output to fail, so a small adjustment to scripts that use
that command may be necessary.
A number of people besides myself contributed to this release. I would like to
thank the following people:
- @adriaanjoubert
- @CyberTailor
- @barton26
- @div72
- @theMarix
- @PrestackI
- @Pythonix
- The translation volunteers on Transifex
It is highly recommended that EVERYONE upgrade to this release.
There is much planned for Gridcoin in the future. I encourage folks to join the
discussion on Discord to participate.
Jim Owens
Added
- contrib: add nix file for compilation environment #2660 (@div72)
- gui: Make main Gridcoin window geometry save unique to datadir location #2661 (@jamescowens)
- build: Initial CMake support #2676 (@CyberTailor)
- util: Add
-shutdownnotify
andstartupnotify
options from upstream #2688 (@barton2526) - gui, staking: Implement facilities for mandatory sidestakes and sidestake GUI #2704 (@jamescowens)
- gui, voting: Implement poll result caching and poll stale indicator #2709 (@jamescowens)
- gui, projects: Implement greylist state for projects in GUI projects table #2715 (@jamescowens)
- gui, poll: Implement poll expiration reminders #2716 (@jamescowens)
- serialize: allow variants to be serialized #2729 (@div72)
- gui: Implement poll field length limiters in GUI forms #2742 (@jamescowens)
Changed
- consensus, contract, scraper, protocol, project, beacon, rpc: Replace remaining appcache sections with native structures #2639 (@jamescowens)
- build: update libsecp256k1 to v0.3.0 #2655 (@div72)
- build: Replace $(AT) with .SILENT #2674 (@barton2526)
- build: allow system bdb #2675 (@div72)
- Resize Header Column with Additional Text #2683 (@PrestackI)
- rpc: use RPCErrorCode everywhere #2687 (@Pythonix)
- wallet: SecureString to allow null characters #2690 (@barton2526)
- random: port some upstream changes #2696 (@div72)
- depends: Bump dependencies #2692 (@barton2526)
- doc: Update link to Discord server #2693 (@adriaanjoubert)
- rpc: Change capitalization, remove whitespace of rpc keys #2711 (@Pythonix)
- ci: bump MacOS version to 12 #2713 (@div72)
- depends: no-longer nuke libc++abi.so* in native_clang package #2719 (@div72)
- doc: update windows
-fstack-clash-protection
doc #2720 (@div72) - Silence
-Wcast-function-type
warning #2721 (@div72) - build: Use newest
config.{guess,sub}
available #2722 (@div72) - refactor: use the try_lock result in TryEnter #2723 (@div72)
- Updates for file src/qt/locale/bitcoin_en.ts in pt_PT #2726 (@gridcoin-community)
- ci: do not silently fail #2727 (@div72)
- Properly include Boost Array header #2730 (@theMarix)
- build: Update depends zlib to 1.3.1 #2734 (@jamescowens)
- util: Enhance Fraction class overflow resistance #2735 (@jamescowens)
- refactor: Fix compilation warnings #2737 (@jamescowens)
- gui, util: Improve upgrade dialog #2738 (@jamescowens)
- util: Improve allocation class #2740 (@jamescowens)
- translations: translation updates for Miss Piggy release #2745 (@jamescowens)
Removed
- gui: Disable snapshot GUI action #2700 (@jamescowens)
- build, crypto, script: remove most of OpenSSL usage #2705 (@div72)
- util: remove WSL 1 workaround in fs #2717 (@div72)
Fixed
- diagnostics: fix missing arg in ETTS warning #2684 (@div72)
- misc: fix include guard in netaddress.h #2695 (@div72)
- gui: Fix expired pending beacon display #2698 (@jamescowens)
- consensus: Fix 20230904 testnet forking issue #2703 (@jamescowens)
- gui: Fix filter by type in Transaction View #2708 (@jamescowens)
- depends: make fontconfig build under clang-16 #2718 (@div72)
- diag: fix researcher mode check #2725 (@div72)
- gui: Add missing switch cases for ALREADY_IN_MEMPOOL #2728 (@jamescowens)
- beacon, registry: Fix beacon history stall #2731 (@jamescowens)
- build: Implement comp_double comparison function in certain tests #2741 (@jamescowens)
- ci: change Qt path in CMake CI #2743 (@div72)
- net: Correct -tor argument handling #2744 (@jamescowens)
5.4.5.0-leisure
[5.4.5.0] 2023-04-23, leisure
https://github.com/gridcoin-community/Gridcoin-Research/releases/tag/5.4.5.0
This is an important leisure release and follows right on the heals of
5.4.4.0, because we fixed one thing only to break another in a worse way. By
worse I mean that some people with old keys could get a corrupt wallet message
on startup. In troubleshooting this issue, as it turns out, there is more to
the story than just the compressed flag not being set properly. Gridcoin has
been around a long time. A number of older wallets may have keys generated by
openssl that aren't handled correctly by the secp256k1 DER parser. We switched
over to secp256k1 from openssl for keys in 5.4.0.0, to align with Bitcoin
upstream. It is not entirely clear why Bitcoin does not see this issue with old
keys. Regardless, to be safe, we have disabled the ability to import HEX
formatted keps with importprivkey. This loss of HEX import functionality should
affect essentially no one, since the Base58, WIF, form is what everybody uses.
It is highly recommended that EVERYONE upgrade to this release.
Added
none
Changed
none
Removed
none
Fixed
5.4.4.0-leisure
[5.4.4.0] 2023-04-21, leisure
https://github.com/gridcoin-community/Gridcoin-Research/releases/tag/5.4.4.0
This is an important leisure release. It is not mandatory but contains an
important bug fix for exporting and importing private keys which has been
present since the last mandatory, 5.4.0.0. For releases between 5.4.0.0 and
5.4.3.0 inclusive, dumpwallet and importwallet work correctly, but dumpprivkey
and importprivkey do not.
It is highly recommended that EVERYONE upgrade to this release, especially if
you are using dump and import rpc functions for keys.
Added
none
Changed
none
Removed
none
Fixed
- wallet, rpc: Add missing assignment of fCompressed in dumpprivkey #2680 (@jamescowens)
5.4.3.0-leisure
[5.4.3.0] 2023-04-05, leisure
https://github.com/gridcoin-community/Gridcoin-Research/releases/tag/5.4.3.0
This is a very small intramilestone leisure release to integrate a few hotfixes
after 5.3.2.0.
In particular the workaround for backup wallet is important for those running
Linux with Boost 1.74 and whom have replaced the usual walletbackups
subdirectory with a symlink to another volume to redirect the automatic backups.
Added
- install: Enhance windows installer - detect running gridcoinresearch(d).exe and ask to close before continuing #2672 (@jamescowens)
- gui: Add one minute QTimer to update beacon age/expiration in tooltip #2671 (@jamescowens)
Changed
none
Removed
none
Fixed
- util: Implement workaround for backupwallet to deal with Boost 1.74 regression on copy_file #2669 (@jamescowens)
- banman: use GetPerformanceCounter instead of GetRandBytes #2668 (@div72)