Merge #5969: chore: backport items to 20.1.x and release v20.1.1

b96b20283d chore: bump version to 20.1.1 (pasta)
83cac77335 docs: add v20.1.1 release notes (pasta)
e58c7c443c Merge #5970: guix: exclude debug symbols for apple from list of hashes due to its non-determinism (pasta)
2bde1ddca4 Merge #5927: fix: check if message can be handled before attempting to deserialize (pasta)
1637fa5a9e Merge #5968: docs: add v20.0.4 release notes (pasta)
fd46c4ccda Merge #5962: fix: deadlock over cs_main and contributionsCacheCs in dkssessionmgr (pasta)

Pull request description:

  ## Issue being fixed or feature implemented
  Backport to v20.1.x and release v20.1.1

  ## What was done?
  Backports and release

  ## How Has This Been Tested?

  ## Breaking Changes
  None

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

Top commit has no ACKs.

Tree-SHA512: 40574df3349bf1c653a50b4efbf78d1654eb048eeeb483eb657eec5f2af102f95cff8f978a98c174925d2672d56426238a1b7ec3e8cd2a53ec28c0fca42c1293
This commit is contained in:
pasta 2024-04-03 13:31:12 -05:00
commit 19512988c6
No known key found for this signature in database
GPG Key ID: 52527BEDABE87984
7 changed files with 353 additions and 102 deletions

View File

@ -2,7 +2,7 @@ AC_PREREQ([2.69])
dnl Don't forget to push a corresponding tag when updating any of _CLIENT_VERSION_* numbers dnl Don't forget to push a corresponding tag when updating any of _CLIENT_VERSION_* numbers
define(_CLIENT_VERSION_MAJOR, 20) define(_CLIENT_VERSION_MAJOR, 20)
define(_CLIENT_VERSION_MINOR, 1) define(_CLIENT_VERSION_MINOR, 1)
define(_CLIENT_VERSION_BUILD, 0) define(_CLIENT_VERSION_BUILD, 1)
define(_CLIENT_VERSION_IS_RELEASE, true) define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2024) define(_COPYRIGHT_YEAR, 2024)
define(_COPYRIGHT_HOLDERS,[The %s developers]) define(_COPYRIGHT_HOLDERS,[The %s developers])

View File

@ -192,6 +192,7 @@ mkdir -p "$outsigdir"
if (( ${#noncodesigned_fragments[@]} )); then if (( ${#noncodesigned_fragments[@]} )); then
cat "${noncodesigned_fragments[@]}" \ cat "${noncodesigned_fragments[@]}" \
| grep -v apple-darwin-debug.tar \
| sort -u \ | sort -u \
| sort -k2 \ | sort -k2 \
| basenameify_SHA256SUMS \ | basenameify_SHA256SUMS \
@ -220,6 +221,7 @@ mkdir -p "$outsigdir"
# Note: all.SHA256SUMS attests to all of $sha256sum_fragments, but is # Note: all.SHA256SUMS attests to all of $sha256sum_fragments, but is
# not needed if there are no $codesigned_fragments # not needed if there are no $codesigned_fragments
cat "${sha256sum_fragments[@]}" \ cat "${sha256sum_fragments[@]}" \
| grep -v apple-darwin-debug.tar \
| sort -u \ | sort -u \
| sort -k2 \ | sort -k2 \
| basenameify_SHA256SUMS \ | basenameify_SHA256SUMS \

View File

@ -122,8 +122,8 @@ def process_file(path: str, messages: List[Any], recv: bool, progress_bar: Optio
msg_ser = BytesIO(f_in.read(length)) msg_ser = BytesIO(f_in.read(length))
# Determine message type # Determine message type
if msgtype not in MESSAGEMAP: if msgtype not in MESSAGEMAP or MESSAGEMAP[msgtype] is None:
# Unrecognized message type # Unrecognized or unhandled message type
try: try:
msgtype_tmp = msgtype.decode() msgtype_tmp = msgtype.decode()
if not msgtype_tmp.isprintable(): if not msgtype_tmp.isprintable():
@ -131,10 +131,11 @@ def process_file(path: str, messages: List[Any], recv: bool, progress_bar: Optio
msg_dict["msgtype"] = msgtype_tmp msg_dict["msgtype"] = msgtype_tmp
except UnicodeDecodeError: except UnicodeDecodeError:
msg_dict["msgtype"] = "UNREADABLE" msg_dict["msgtype"] = "UNREADABLE"
err_str = "Unrecognized" if msgtype not in MESSAGEMAP else "Unhandled"
msg_dict["body"] = msg_ser.read().hex() msg_dict["body"] = msg_ser.read().hex()
msg_dict["error"] = "Unrecognized message type." msg_dict["error"] = f"{err_str} message type"
messages.append(msg_dict) messages.append(msg_dict)
print(f"WARNING - Unrecognized message type {msgtype} in {path}", file=sys.stderr) print(f"WARNING - {msg_dict['error']} {msgtype} in {path}", file=sys.stderr)
continue continue
# Deserialize the message # Deserialize the message

View File

@ -1,6 +1,6 @@
# Dash Core version v20.1.0 # Dash Core version v20.1.1
This is a new minor version release, including various new features, improvements, and bug fixes. This is a new patch version release, including bug fixes.
This release is optional but recommended for all nodes. This release is optional but recommended for all nodes.
@ -28,96 +28,12 @@ reindex or re-sync the whole chain.
# Notable changes # Notable changes
## HD Wallets Enabled by Default ## Work Queue RPC Fix / Deadlock Fix
In this release, we are taking a significant step towards enhancing the Dash wallet's usability by enabling Hierarchical A deadlock caused nodes to become non-responsive and RPC to report "Work depth queue exceeded".
Deterministic (HD) wallets by default. This change aligns the behavior of `dashd` and `dash-qt` with the previously Thanks to Konstantin Akimov (knst) who discovered the cause. This previously caused masternodes to become PoSe banned.
optional `-usehd=1` flag, making HD wallets the standard for all users.
While HD wallets are now enabled by default to improve user experience, Dash Core still allows for the creation of # v20.1.1 Change log
non-HD wallets by using the `-usehd=0` flag. However, users should be aware that this option is intended for legacy
support and will be removed in future releases. Importantly, even with an HD wallet, users can still import non-HD
private keys, ensuring flexibility in managing their funds.
## Windows release signing
Windows releases are signed by a new certificate that replaces the expired one used previously.
## Removal of Non-Deterministic InstantSend
Legacy InstantSend was deprecated with the activation of Deterministic InstantSend, but we kept the underlying logic for some time to ensure a smooth transition. v20.1 finally removes all Legacy InstantSend logic and will no longer support sending and receiving islock p2p messages and inv p2p messages with id 30. Such messages will be seen as unknown by v20.1 nodes. The protocol version was incremented to 70231 to indicate a change in network protocol. Please note that the -llmqinstantsend and -llmqtestinstantsend command line options have also been removed as part of this change.
## RPC changes
- `protx info`: It's now possible to get historical data at a specific block by providing its blockhash.
- `gettxchainlocks`: will now return the status `mempool` indicating whether the transaction is in the mempool.
or not.
- Exposed transaction version numbers are now treated as unsigned 16-bit integers instead of signed 16-bit integers.
This matches their treatment in consensus logic. Versions greater than 3 continue to be non-standard (matching previous
behavior of smaller than 1 or greater than 3 being non-standard). Note that this includes the joinpsbt command, which
combines partially-signed transactions by selecting the highest version number.
- `getpeerinfo`: now returns a `connection_type` field. This indicates the type of connection established with
the peer. It will return one of six options. For more information, see the `getpeerinfo` help documentation.
- `getpeerinfo`: now has additional `last_block` and `last_transaction` fields that return the UNIX epoch time
of the last block and the last valid transaction received from each peer.
- `getblockchaininfo`: now returns a new `time` field that provides the chain tip time.
- `fundrawtransaction` and `walletcreatefundedpsbt`: when used with the `lockUnspents` argument now lock manually
selected coins, in addition to automatically selected coins. Note that locked coins are never used in automatic coin
selection, but can still be manually selected.
- `testmempoolaccept`: returns `vsize` and a `fee` object with the `base` fee if the transaction passes
validation. The `testmempoolaccept` RPC now accepts multiple transactions (still experimental at the moment, API may be
unstable).
## Added RPCs
- `submitchainlock`: allows the submission of a ChainLock signature. Note: This RPC is whitelisted for the Platform
RPC user.
- `getassetunlockstatuses`: allows fetching of Asset Unlock txs by their withdrawal index. The RPC accepts an array
of indexes and an optional block height. The possible outcomes per each index are: `chainlocked`, `mined`, `mempooled`,
`unknown`. Note: If a specific block height is passed on request, then only `chainlocked` and `unknown` outcomes are
possible. This RPC is whitelisted for the Platform RPC user.
- `quorum dkginfo`: returns information about DKGs: `active_dkgs` and `next_dkg`.
- `getrawtransactionmulti`: allows requesting a batch of up to 100 raw transactions per request.
## Docker Build System
Modified the Dockerfile to exclude the `dash-qt` graphical wallet interface from the set of binaries copied to
`/usr/local/bin` during the Docker image build process. This change streamlines the Docker image, making it more
suitable for server environments and headless applications, where the graphical user interface of `dash-qt` is not
required. The update enhances the Docker image's efficiency by reducing its size and minimizing unnecessary components.
## Command-line options
- The same ZeroMQ notification (e.g. `-zmqpubhashtx=address`) can now be specified multiple times to publish the same
notification to different ZeroMQ sockets.
- `-startupnotify=<cmd>`: Execute command on startup.
## Notification changes
- `-walletnotify` notifications are now sent for wallet transactions that are removed from the mempool because they
conflict with a new block. These notifications were sent previously, but have been broken since
the v18.1 release.
- The `startupnotify` option is used to specify a command to execute when Dash Core has finished with its startup
sequence.
## Build System
The `--enable-upnp-default` and `--enable-natpmp-default` options have been removed. If you want to use port mapping,
you can configure it using a `.conf` file, or by passing the relevant options at runtime.
## Wallet
- The wallet can create a transaction without change even when the keypool is empty. Previously it failed.
- New Discreet mode for hiding balances in Dash-Qt
- Added a "Close all wallet" menu item for Dash-Qt
## Backports from Bitcoin Core
This release introduces many updates from Bitcoin v0.20-v25.0. Breaking changes are documented here; however, for
additional detail on whats included in Bitcoin, please refer to their release notes.
# v20.1.0 Change log
See detailed [set of changes][set-of-changes]. See detailed [set of changes][set-of-changes].
@ -125,14 +41,9 @@ See detailed [set of changes][set-of-changes].
Thanks to everyone who directly contributed to this release: Thanks to everyone who directly contributed to this release:
- Alessandro Rezzi
- Kittywhiskers Van Gogh
- Konstantin Akimov - Konstantin Akimov
- Odysseas Gabrielides
- PastaPastaPasta - PastaPastaPasta
- thephez - thephez
- UdjinM6
- Vijay Manikpuri
As well as everyone that submitted issues, reviewed pull requests and helped As well as everyone that submitted issues, reviewed pull requests and helped
debug the release candidates. debug the release candidates.
@ -141,6 +52,7 @@ debug the release candidates.
These release are considered obsolete. Old release notes can be found here: These release are considered obsolete. Old release notes can be found here:
- [v20.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.1.0.md) released March/5/2024
- [v20.0.4](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.4.md) released Jan/13/2024 - [v20.0.4](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.4.md) released Jan/13/2024
- [v20.0.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.3.md) released December/26/2023 - [v20.0.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.3.md) released December/26/2023
- [v20.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.2.md) released December/06/2023 - [v20.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.2.md) released December/06/2023
@ -188,4 +100,4 @@ These release are considered obsolete. Old release notes can be found here:
- [v0.10.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.10.0.md) released Sep/25/2014 - [v0.10.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.10.0.md) released Sep/25/2014
- [v0.9.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.9.0.md) released Mar/13/2014 - [v0.9.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.9.0.md) released Mar/13/2014
[set-of-changes]: https://github.com/dashpay/dash/compare/v20.0.4...dashpay:v20.1.0 [set-of-changes]: https://github.com/dashpay/dash/compare/v20.1.0...dashpay:v20.1.1

View File

@ -0,0 +1,143 @@
# Dash Core version v20.0.4
Release is now available from:
<https://www.dash.org/downloads/#wallets>
This is a new patch version release, bringing small bug fixes and build system enhancements.
This release is optional for all nodes.
Please report bugs using the issue tracker at GitHub:
<https://github.com/dashpay/dash/issues>
# Upgrading and downgrading
## How to Upgrade
If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes for older versions), then run the
installer (on Windows) or just copy over /Applications/Dash-Qt (on Mac) or
dashd/dash-qt (on Linux). If you upgrade after DIP0003 activation and you were
using version < 0.13 you will have to reindex (start with -reindex-chainstate
or -reindex) to make sure your wallet has all the new data synced. Upgrading
from version 0.13 should not require any additional actions.
## Downgrade warning
### Downgrade to a version < v19.2.0
Downgrading to a version older than v19.2.0 is not supported due to changes
in the evodb database. If you need to use an older version, you must either
reindex or re-sync the whole chain.
# Notable changes
## Build changes
The miner has been disabled for Windows binaries built via Guix. This resolves
an issue that was preventing users from installing v20.0.3 due to false
positive alerts from Microsoft Defender and other antivirus providers.
Use a self-signed Windows code signing certificate instead of expired one. The
expired certificate being used previously caused most antivirus software to trigger.
The new self-signed certificate results in a greatly improved installation experience.
Updated expired gpg keys for builders. Note that the actual keys themselves are the same.
The updated keys changed their expiration dates and added additional information such as
new email addresses.
## Governance
Triggers from the past are now ignored when voting.
## Asset lock and unlock transactions
Use the correct quorum for signing withdrawal (asset unlock) txes on RegTest.
# v20.0.4 Change log
See detailed [set of changes][set-of-changes].
# Credits
Thanks to everyone who directly contributed to this release:
- Konstantin Akimov (knst)
- PastaPastaPasta
- UdjinM6
As well as everyone that submitted issues, reviewed pull requests and helped
debug the release candidates.
# Older releases
Dash was previously known as Darkcoin.
Darkcoin tree 0.8.x was a fork of Litecoin tree 0.8, original name was XCoin
which was first released on Jan/18/2014.
Darkcoin tree 0.9.x was the open source implementation of masternodes based on
the 0.8.x tree and was first released on Mar/13/2014.
Darkcoin tree 0.10.x used to be the closed source implementation of Darksend
which was released open source on Sep/25/2014.
Dash Core tree 0.11.x was a fork of Bitcoin Core tree 0.9,
Darkcoin was rebranded to Dash.
Dash Core tree 0.12.0.x was a fork of Bitcoin Core tree 0.10.
Dash Core tree 0.12.1.x was a fork of Bitcoin Core tree 0.12.
These release are considered obsolete. Old release notes can be found here:
- [v20.0.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.3.md) released December/26/2023
- [v20.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.2.md) released December/06/2023
- [v20.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.1.md) released November/18/2023
- [v20.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.0.md) released November/15/2023
- [v19.3.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.3.0.md) released July/31/2023
- [v19.2.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.2.0.md) released June/19/2023
- [v19.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.1.0.md) released May/22/2023
- [v19.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.0.0.md) released Apr/14/2023
- [v18.2.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.2.md) released Mar/21/2023
- [v18.2.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.1.md) released Jan/17/2023
- [v18.2.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.0.md) released Jan/01/2023
- [v18.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.1.1.md) released January/08/2023
- [v18.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.1.0.md) released October/09/2022
- [v18.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.0.2.md) released October/09/2022
- [v18.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.0.1.md) released August/17/2022
- [v0.17.0.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.17.0.3.md) released June/07/2021
- [v0.17.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.17.0.2.md) released May/19/2021
- [v0.16.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.16.1.1.md) released November/17/2020
- [v0.16.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.16.1.0.md) released November/14/2020
- [v0.16.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.16.0.1.md) released September/30/2020
- [v0.15.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.15.0.0.md) released Febrary/18/2020
- [v0.14.0.5](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.5.md) released December/08/2019
- [v0.14.0.4](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.4.md) released November/22/2019
- [v0.14.0.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.3.md) released August/15/2019
- [v0.14.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.2.md) released July/4/2019
- [v0.14.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.1.md) released May/31/2019
- [v0.14.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.md) released May/22/2019
- [v0.13.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.3.md) released Apr/04/2019
- [v0.13.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.2.md) released Mar/15/2019
- [v0.13.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.1.md) released Feb/9/2019
- [v0.13.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.0.md) released Jan/14/2019
- [v0.12.3.4](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.4.md) released Dec/14/2018
- [v0.12.3.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.3.md) released Sep/19/2018
- [v0.12.3.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.2.md) released Jul/09/2018
- [v0.12.3.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.1.md) released Jul/03/2018
- [v0.12.2.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.3.md) released Jan/12/2018
- [v0.12.2.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.2.md) released Dec/17/2017
- [v0.12.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.md) released Nov/08/2017
- [v0.12.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.1.md) released Feb/06/2017
- [v0.12.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.0.md) released Aug/15/2015
- [v0.11.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.2.md) released Mar/04/2015
- [v0.11.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.1.md) released Feb/10/2015
- [v0.11.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.0.md) released Jan/15/2015
- [v0.10.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.10.0.md) released Sep/25/2014
- [v0.9.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.9.0.md) released Mar/13/2014
[set-of-changes]: https://github.com/dashpay/dash/compare/v20.0.3...dashpay:v20.0.4

View File

@ -0,0 +1,191 @@
# Dash Core version v20.1.0
This is a new minor version release, including various new features, improvements, and bug fixes.
This release is optional but recommended for all nodes.
Please report bugs using the issue tracker at GitHub:
<https://github.com/dashpay/dash/issues>
# Upgrading and downgrading
## How to Upgrade
If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes for older versions), then run the
installer (on Windows) or just copy over /Applications/Dash-Qt (on Mac) or
dashd/dash-qt (on Linux).
## Downgrade warning
### Downgrade to a version < v19.2.0
Downgrading to a version older than v19.2.0 is not supported due to changes
in the evodb database. If you need to use an older version, you must either
reindex or re-sync the whole chain.
# Notable changes
## HD Wallets Enabled by Default
In this release, we are taking a significant step towards enhancing the Dash wallet's usability by enabling Hierarchical
Deterministic (HD) wallets by default. This change aligns the behavior of `dashd` and `dash-qt` with the previously
optional `-usehd=1` flag, making HD wallets the standard for all users.
While HD wallets are now enabled by default to improve user experience, Dash Core still allows for the creation of
non-HD wallets by using the `-usehd=0` flag. However, users should be aware that this option is intended for legacy
support and will be removed in future releases. Importantly, even with an HD wallet, users can still import non-HD
private keys, ensuring flexibility in managing their funds.
## Windows release signing
Windows releases are signed by a new certificate that replaces the expired one used previously.
## Removal of Non-Deterministic InstantSend
Legacy InstantSend was deprecated with the activation of Deterministic InstantSend, but we kept the underlying logic for some time to ensure a smooth transition. v20.1 finally removes all Legacy InstantSend logic and will no longer support sending and receiving islock p2p messages and inv p2p messages with id 30. Such messages will be seen as unknown by v20.1 nodes. The protocol version was incremented to 70231 to indicate a change in network protocol. Please note that the -llmqinstantsend and -llmqtestinstantsend command line options have also been removed as part of this change.
## RPC changes
- `protx info`: It's now possible to get historical data at a specific block by providing its blockhash.
- `gettxchainlocks`: will now return the status `mempool` indicating whether the transaction is in the mempool.
or not.
- Exposed transaction version numbers are now treated as unsigned 16-bit integers instead of signed 16-bit integers.
This matches their treatment in consensus logic. Versions greater than 3 continue to be non-standard (matching previous
behavior of smaller than 1 or greater than 3 being non-standard). Note that this includes the joinpsbt command, which
combines partially-signed transactions by selecting the highest version number.
- `getpeerinfo`: now returns a `connection_type` field. This indicates the type of connection established with
the peer. It will return one of six options. For more information, see the `getpeerinfo` help documentation.
- `getpeerinfo`: now has additional `last_block` and `last_transaction` fields that return the UNIX epoch time
of the last block and the last valid transaction received from each peer.
- `getblockchaininfo`: now returns a new `time` field that provides the chain tip time.
- `fundrawtransaction` and `walletcreatefundedpsbt`: when used with the `lockUnspents` argument now lock manually
selected coins, in addition to automatically selected coins. Note that locked coins are never used in automatic coin
selection, but can still be manually selected.
- `testmempoolaccept`: returns `vsize` and a `fee` object with the `base` fee if the transaction passes
validation. The `testmempoolaccept` RPC now accepts multiple transactions (still experimental at the moment, API may be
unstable).
## Added RPCs
- `submitchainlock`: allows the submission of a ChainLock signature. Note: This RPC is whitelisted for the Platform
RPC user.
- `getassetunlockstatuses`: allows fetching of Asset Unlock txs by their withdrawal index. The RPC accepts an array
of indexes and an optional block height. The possible outcomes per each index are: `chainlocked`, `mined`, `mempooled`,
`unknown`. Note: If a specific block height is passed on request, then only `chainlocked` and `unknown` outcomes are
possible. This RPC is whitelisted for the Platform RPC user.
- `quorum dkginfo`: returns information about DKGs: `active_dkgs` and `next_dkg`.
- `getrawtransactionmulti`: allows requesting a batch of up to 100 raw transactions per request.
## Docker Build System
Modified the Dockerfile to exclude the `dash-qt` graphical wallet interface from the set of binaries copied to
`/usr/local/bin` during the Docker image build process. This change streamlines the Docker image, making it more
suitable for server environments and headless applications, where the graphical user interface of `dash-qt` is not
required. The update enhances the Docker image's efficiency by reducing its size and minimizing unnecessary components.
## Command-line options
- The same ZeroMQ notification (e.g. `-zmqpubhashtx=address`) can now be specified multiple times to publish the same
notification to different ZeroMQ sockets.
- `-startupnotify=<cmd>`: Execute command on startup.
## Notification changes
- `-walletnotify` notifications are now sent for wallet transactions that are removed from the mempool because they
conflict with a new block. These notifications were sent previously, but have been broken since
the v18.1 release.
- The `startupnotify` option is used to specify a command to execute when Dash Core has finished with its startup
sequence.
## Build System
The `--enable-upnp-default` and `--enable-natpmp-default` options have been removed. If you want to use port mapping,
you can configure it using a `.conf` file, or by passing the relevant options at runtime.
## Wallet
- The wallet can create a transaction without change even when the keypool is empty. Previously it failed.
- New Discreet mode for hiding balances in Dash-Qt
- Added a "Close all wallet" menu item for Dash-Qt
## Backports from Bitcoin Core
This release introduces many updates from Bitcoin v0.20-v25.0. Breaking changes are documented here; however, for
additional detail on whats included in Bitcoin, please refer to their release notes.
# v20.1.0 Change log
See detailed [set of changes][set-of-changes].
# Credits
Thanks to everyone who directly contributed to this release:
- Alessandro Rezzi
- Kittywhiskers Van Gogh
- Konstantin Akimov
- Odysseas Gabrielides
- PastaPastaPasta
- thephez
- UdjinM6
- Vijay Manikpuri
As well as everyone that submitted issues, reviewed pull requests and helped
debug the release candidates.
# Older releases
These release are considered obsolete. Old release notes can be found here:
- [v20.0.4](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.4.md) released Jan/13/2024
- [v20.0.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.3.md) released December/26/2023
- [v20.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.2.md) released December/06/2023
- [v20.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.1.md) released November/18/2023
- [v20.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.0.0.md) released November/15/2023
- [v19.3.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.3.0.md) released July/31/2023
- [v19.2.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.2.0.md) released June/19/2023
- [v19.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.1.0.md) released May/22/2023
- [v19.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.0.0.md) released Apr/14/2023
- [v18.2.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.2.md) released Mar/21/2023
- [v18.2.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.1.md) released Jan/17/2023
- [v18.2.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.0.md) released Jan/01/2023
- [v18.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.1.1.md) released January/08/2023
- [v18.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.1.0.md) released October/09/2022
- [v18.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.0.2.md) released October/09/2022
- [v18.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.0.1.md) released August/17/2022
- [v0.17.0.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.17.0.3.md) released June/07/2021
- [v0.17.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.17.0.2.md) released May/19/2021
- [v0.16.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.16.1.1.md) released November/17/2020
- [v0.16.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.16.1.0.md) released November/14/2020
- [v0.16.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.16.0.1.md) released September/30/2020
- [v0.15.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.15.0.0.md) released Febrary/18/2020
- [v0.14.0.5](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.5.md) released December/08/2019
- [v0.14.0.4](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.4.md) released November/22/2019
- [v0.14.0.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.3.md) released August/15/2019
- [v0.14.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.2.md) released July/4/2019
- [v0.14.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.1.md) released May/31/2019
- [v0.14.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.md) released May/22/2019
- [v0.13.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.3.md) released Apr/04/2019
- [v0.13.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.2.md) released Mar/15/2019
- [v0.13.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.1.md) released Feb/9/2019
- [v0.13.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.0.md) released Jan/14/2019
- [v0.12.3.4](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.4.md) released Dec/14/2018
- [v0.12.3.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.3.md) released Sep/19/2018
- [v0.12.3.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.2.md) released Jul/09/2018
- [v0.12.3.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.1.md) released Jul/03/2018
- [v0.12.2.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.3.md) released Jan/12/2018
- [v0.12.2.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.2.md) released Dec/17/2017
- [v0.12.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.md) released Nov/08/2017
- [v0.12.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.1.md) released Feb/06/2017
- [v0.12.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.0.md) released Aug/15/2015
- [v0.11.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.2.md) released Mar/04/2015
- [v0.11.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.1.md) released Feb/10/2015
- [v0.11.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.0.md) released Jan/15/2015
- [v0.10.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.10.0.md) released Sep/25/2014
- [v0.9.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.9.0.md) released Mar/13/2014
[set-of-changes]: https://github.com/dashpay/dash/compare/v20.0.4...dashpay:v20.1.0

View File

@ -389,7 +389,6 @@ void CDKGSessionManager::WriteEncryptedContributions(Consensus::LLMQType llmqTyp
bool CDKGSessionManager::GetVerifiedContributions(Consensus::LLMQType llmqType, const CBlockIndex* pQuorumBaseBlockIndex, const std::vector<bool>& validMembers, std::vector<uint16_t>& memberIndexesRet, std::vector<BLSVerificationVectorPtr>& vvecsRet, std::vector<CBLSSecretKey>& skContributionsRet) const bool CDKGSessionManager::GetVerifiedContributions(Consensus::LLMQType llmqType, const CBlockIndex* pQuorumBaseBlockIndex, const std::vector<bool>& validMembers, std::vector<uint16_t>& memberIndexesRet, std::vector<BLSVerificationVectorPtr>& vvecsRet, std::vector<CBLSSecretKey>& skContributionsRet) const
{ {
LOCK(contributionsCacheCs);
auto members = utils::GetAllQuorumMembers(llmqType, pQuorumBaseBlockIndex); auto members = utils::GetAllQuorumMembers(llmqType, pQuorumBaseBlockIndex);
memberIndexesRet.clear(); memberIndexesRet.clear();
@ -398,6 +397,9 @@ bool CDKGSessionManager::GetVerifiedContributions(Consensus::LLMQType llmqType,
memberIndexesRet.reserve(members.size()); memberIndexesRet.reserve(members.size());
vvecsRet.reserve(members.size()); vvecsRet.reserve(members.size());
skContributionsRet.reserve(members.size()); skContributionsRet.reserve(members.size());
// NOTE: the `cs_main` should not be locked under scope of `contributionsCacheCs`
LOCK(contributionsCacheCs);
for (const auto i : irange::range(members.size())) { for (const auto i : irange::range(members.size())) {
if (validMembers[i]) { if (validMembers[i]) {
const uint256& proTxHash = members[i]->proTxHash; const uint256& proTxHash = members[i]->proTxHash;