Merge #6180: [v21.1.x] backport: release v21.1.0

8e9dd127c7 chore: bump version in configure.ac (pasta)
afb8dc0698 docs: add v21.1.0 release notes and archive v21.0.2 (pasta)
269dd025e8 Merge #6179: chore: update manpages v21.1 (pasta)
a8cb643db8 Merge #6175: feat: allow resigning for EHF (pasta)
de5cc22b0c Merge #6178: chore: bump protocol version to 70233 (pasta)
2de4ce51b0 Merge #6176: test: reduce BRRHeight in regtest (pasta)
840175ecb4 Merge #6174: fix: stop trying to sign pending txes when they are no longer non-locked (pasta)

Pull request description:

  ## Issue being fixed or feature implemented
  Backports for v21.1.0, add release notes and

  ## What was done?
  See commits

  ## How Has This Been Tested?
  Been on devnet

  ## Breaking Changes
  None

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [x] 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)_

ACKs for top commit:
  knst:
    utACK  8e9dd127c7

Tree-SHA512: 3c968c4f0e06bc88f63bf10f742d39595c45c7fcd4aef1891d2e76d9f443cae1ddd3cb84c787faa189ef3a189a9dd63a7f75e69f5787a47d1281d5b6a445a2a6
This commit is contained in:
pasta 2024-08-07 19:15:50 +07:00
commit 5d286a5e64
No known key found for this signature in database
GPG Key ID: 52527BEDABE87984
16 changed files with 196 additions and 57 deletions

View File

@ -1,8 +1,8 @@
AC_PREREQ([2.69]) 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, 21) define(_CLIENT_VERSION_MAJOR, 21)
define(_CLIENT_VERSION_MINOR, 0) define(_CLIENT_VERSION_MINOR, 1)
define(_CLIENT_VERSION_BUILD, 2) define(_CLIENT_VERSION_BUILD, 0)
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

@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH DASH-CLI "1" "July 2024" "dash-cli v21.0.0" "User Commands" .TH DASH-CLI "1" "August 2024" "dash-cli v21.1.0" "User Commands"
.SH NAME .SH NAME
dash-cli \- manual page for dash-cli v21.0.0 dash-cli \- manual page for dash-cli v21.1.0
.SH SYNOPSIS .SH SYNOPSIS
.B dash-cli .B dash-cli
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Dash Core\/\fR [\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Dash Core\/\fR
@ -15,7 +15,7 @@ dash-cli \- manual page for dash-cli v21.0.0
.B dash-cli .B dash-cli
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR [\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
.SH DESCRIPTION .SH DESCRIPTION
Dash Core RPC client version v21.0.0 Dash Core RPC client version v21.1.0
.SH OPTIONS .SH OPTIONS
.HP .HP
\-? \-?

View File

@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH DASH-QT "1" "July 2024" "dash-qt v21.0.0" "User Commands" .TH DASH-QT "1" "August 2024" "dash-qt v21.1.0" "User Commands"
.SH NAME .SH NAME
dash-qt \- manual page for dash-qt v21.0.0 dash-qt \- manual page for dash-qt v21.1.0
.SH SYNOPSIS .SH SYNOPSIS
.B dash-qt .B dash-qt
[\fI\,command-line options\/\fR] [\fI\,command-line options\/\fR]
.SH DESCRIPTION .SH DESCRIPTION
Dash Core version v21.0.0 Dash Core version v21.1.0
.SH OPTIONS .SH OPTIONS
.HP .HP
\-? \-?
@ -23,9 +23,9 @@ message)
If this block is in the chain assume that it and its ancestors are valid If this block is in the chain assume that it and its ancestors are valid
and potentially skip their script verification (0 to verify all, and potentially skip their script verification (0 to verify all,
default: default:
0000000000000020d5e38b6aef5bc8e430029444d7977b46f710c7d281ef1281, 000000000000001889bd33ef019065e250d32bd46911f4003d3fdd8128b5358d,
testnet: testnet:
0000000386cf5061ea16404c66deb83eb67892fa4f79b9e58e5eaab097ec2bd6) 00000034bfeb926662ba547c0b8dd4ba8cbb6e0c581f4e7d1bddce8f9ca3a608)
.HP .HP
\fB\-blockfilterindex=\fR<type> \fB\-blockfilterindex=\fR<type>
.IP .IP
@ -560,7 +560,10 @@ exists, otherwise <datadir>)
\fB\-walletnotify=\fR<cmd> \fB\-walletnotify=\fR<cmd>
.IP .IP
Execute command when a wallet transaction changes. %s in cmd is replaced Execute command when a wallet transaction changes. %s in cmd is replaced
by TxID and %w is replaced by wallet name. %w is not currently by TxID, %w is replaced by wallet name, %b is replaced by the
hash of the block including the transaction (set to 'unconfirmed'
if the transaction is not included) and %h is replaced by the
block height (\fB\-1\fR if not included). %w is not currently
implemented on windows. On systems where %w is supported, it implemented on windows. On systems where %w is supported, it
should NOT be quoted because this would break shell escaping used should NOT be quoted because this would break shell escaping used
to invoke the command. to invoke the command.

View File

@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH DASH-TX "1" "July 2024" "dash-tx v21.0.0" "User Commands" .TH DASH-TX "1" "August 2024" "dash-tx v21.1.0" "User Commands"
.SH NAME .SH NAME
dash-tx \- manual page for dash-tx v21.0.0 dash-tx \- manual page for dash-tx v21.1.0
.SH SYNOPSIS .SH SYNOPSIS
.B dash-tx .B dash-tx
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded dash transaction\/\fR [\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded dash transaction\/\fR
@ -9,7 +9,7 @@ dash-tx \- manual page for dash-tx v21.0.0
.B dash-tx .B dash-tx
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded dash transaction\/\fR [\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded dash transaction\/\fR
.SH DESCRIPTION .SH DESCRIPTION
Dash Core dash\-tx utility version v21.0.0 Dash Core dash\-tx utility version v21.1.0
.SH OPTIONS .SH OPTIONS
.HP .HP
\-? \-?

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH DASH-WALLET "1" "July 2024" "dash-wallet v21.0.0" "User Commands" .TH DASH-WALLET "1" "August 2024" "dash-wallet v21.1.0" "User Commands"
.SH NAME .SH NAME
dash-wallet \- manual page for dash-wallet v21.0.0 dash-wallet \- manual page for dash-wallet v21.1.0
.SH DESCRIPTION .SH DESCRIPTION
Dash Core dash\-wallet version v21.0.0 Dash Core dash\-wallet version v21.1.0
.PP .PP
dash\-wallet is an offline tool for creating and interacting with Dash Core wallet files. dash\-wallet is an offline tool for creating and interacting with Dash Core wallet files.
By default dash\-wallet will act on wallets in the default mainnet wallet directory in the datadir. By default dash\-wallet will act on wallets in the default mainnet wallet directory in the datadir.

View File

@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH DASHD "1" "July 2024" "dashd v21.0.0" "User Commands" .TH DASHD "1" "August 2024" "dashd v21.1.0" "User Commands"
.SH NAME .SH NAME
dashd \- manual page for dashd v21.0.0 dashd \- manual page for dashd v21.1.0
.SH SYNOPSIS .SH SYNOPSIS
.B dashd .B dashd
[\fI\,options\/\fR] \fI\,Start Dash Core\/\fR [\fI\,options\/\fR] \fI\,Start Dash Core\/\fR
.SH DESCRIPTION .SH DESCRIPTION
Dash Core version v21.0.0 Dash Core version v21.1.0
Copyright \(co 2014\-2024 The Dash Core developers Copyright \(co 2014\-2024 The Dash Core developers
Copyright \(co 2009\-2024 The Bitcoin Core developers Copyright \(co 2009\-2024 The Bitcoin Core developers
.PP .PP
@ -33,9 +33,9 @@ message)
If this block is in the chain assume that it and its ancestors are valid If this block is in the chain assume that it and its ancestors are valid
and potentially skip their script verification (0 to verify all, and potentially skip their script verification (0 to verify all,
default: default:
0000000000000020d5e38b6aef5bc8e430029444d7977b46f710c7d281ef1281, 000000000000001889bd33ef019065e250d32bd46911f4003d3fdd8128b5358d,
testnet: testnet:
0000000386cf5061ea16404c66deb83eb67892fa4f79b9e58e5eaab097ec2bd6) 00000034bfeb926662ba547c0b8dd4ba8cbb6e0c581f4e7d1bddce8f9ca3a608)
.HP .HP
\fB\-blockfilterindex=\fR<type> \fB\-blockfilterindex=\fR<type>
.IP .IP
@ -570,7 +570,10 @@ exists, otherwise <datadir>)
\fB\-walletnotify=\fR<cmd> \fB\-walletnotify=\fR<cmd>
.IP .IP
Execute command when a wallet transaction changes. %s in cmd is replaced Execute command when a wallet transaction changes. %s in cmd is replaced
by TxID and %w is replaced by wallet name. %w is not currently by TxID, %w is replaced by wallet name, %b is replaced by the
hash of the block including the transaction (set to 'unconfirmed'
if the transaction is not included) and %h is replaced by the
block height (\fB\-1\fR if not included). %w is not currently
implemented on windows. On systems where %w is supported, it implemented on windows. On systems where %w is supported, it
should NOT be quoted because this would break shell escaping used should NOT be quoted because this would break shell escaping used
to invoke the command. to invoke the command.

View File

@ -1,8 +1,8 @@
# Dash Core version v21.0.2 # Dash Core version v21.1.0
This is a new patch release, bringing an important bugfix, as well as docker build improvements. This is a new minor version release, bringing important bugfixes.
This release is **strongly encouraged** for all masternodes. This release is **mandatory** for all masternodes.
This release is optional but recommended for all other nodes. This release is optional but recommended for all other nodes.
Please report bugs using the issue tracker at GitHub: Please report bugs using the issue tracker at GitHub:
@ -34,21 +34,20 @@ reindex or re-sync the whole chain.
# Notable changes # Notable changes
Transaction Retrieval Bug Allow EHF Resigning
------------------------- -------------------
Resolved a bug that prevented some clients (incl. Dash mobile wallets) from receiving transactions before they are mined During implementation, the values for requestID and msgHash for EHF signing were switched. As a result, a masternode
due to partial misclassification as block-only connections. Kudos to @HashEngineering and @knst for finding and which participated in an earlier failed attempt to form an EHF message is unable to participate in subsequent
investigating this issue. attempts. This is because the LLMQ Signing System requires that the requestID be unique, and that a node will not
sign two different msgHash for the same requestID. See the [forum post](https://www.dash.org/forum/index.php?threads/ehf-activation-issues.55146/)
explaining it further.
Docker Images now include SBOM As there is no need to restrict double signing for EHF, we now allow signing of multiple msgHash's for a single EHF
------------------------------ requestID. Once a sufficient number of masternodes upgrade to v21.1, the EHF message will be automatically signed and
mined.
The [docker images](https://hub.docker.com/r/dashpay/dashd) should now provide SBOM and provenance. # v21.1.0 Change log
SBOM and provenenance provide additional information about the build process and exact dependencies included.
See this [blog post](https://www.docker.com/blog/generate-sboms-with-buildkit/) by Docker for more information.
# v21.0.2 Change log
See detailed [set of changes][set-of-changes]. See detailed [set of changes][set-of-changes].
@ -58,6 +57,8 @@ Thanks to everyone who directly contributed to this release:
- Konstantin Akimov - Konstantin Akimov
- PastaPastaPasta - PastaPastaPasta
- UdjinM6
- ogabrielides
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.
@ -66,6 +67,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:
- [v21.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-21.0.2.md) released Aug/1/2024
- [v21.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-21.0.0.md) released Jul/25/2024 - [v21.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-21.0.0.md) released Jul/25/2024
- [v20.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.1.1.md) released April/3/2024 - [v20.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.1.1.md) released April/3/2024
- [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.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.1.0.md) released March/5/2024
@ -116,4 +118,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/v21.0.0...dashpay:v21.0.2 [set-of-changes]: https://github.com/dashpay/dash/compare/v21.0.2...dashpay:v21.1.0

View File

@ -0,0 +1,119 @@
# Dash Core version v21.0.2
This is a new patch release, bringing an important bugfix, as well as docker build improvements.
This release is **strongly encouraged** for all masternodes.
This release is optional but recommended for all other 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 < v21.0.0
Downgrading to a version older than v21.0.0 may not be supported due to changes
if you are using descriptor wallets.
### 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
Transaction Retrieval Bug
-------------------------
Resolved a bug that prevented some clients (incl. Dash mobile wallets) from receiving transactions before they are mined
due to partial misclassification as block-only connections. Kudos to @HashEngineering and @knst for finding and
investigating this issue.
Docker Images now include SBOM
------------------------------
The [docker images](https://hub.docker.com/r/dashpay/dashd) should now provide SBOM and provenance.
SBOM and provenenance provide additional information about the build process and exact dependencies included.
See this [blog post](https://www.docker.com/blog/generate-sboms-with-buildkit/) by Docker for more information.
# v21.0.2 Change log
See detailed [set of changes][set-of-changes].
# Credits
Thanks to everyone who directly contributed to this release:
- Konstantin Akimov
- PastaPastaPasta
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:
- [v21.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-21.0.0.md) released Jul/25/2024
- [v20.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-20.1.1.md) released April/3/2024
- [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.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/v21.0.0...dashpay:v21.0.2

View File

@ -805,7 +805,7 @@ public:
consensus.DIP0003EnforcementHeight = 500; consensus.DIP0003EnforcementHeight = 500;
consensus.DIP0003EnforcementHash = uint256(); consensus.DIP0003EnforcementHash = uint256();
consensus.DIP0008Height = 432; consensus.DIP0008Height = 432;
consensus.BRRHeight = 2500; // see block_reward_reallocation_tests consensus.BRRHeight = 1000; // see block_reward_reallocation_tests
consensus.DIP0020Height = 300; consensus.DIP0020Height = 300;
consensus.DIP0024Height = 900; consensus.DIP0024Height = 900;
consensus.DIP0024QuorumsHeight = 900; consensus.DIP0024QuorumsHeight = 900;

View File

@ -93,7 +93,7 @@ void CEHFSignalsHandler::trySignEHFSignal(int bit, const CBlockIndex* const pind
const uint256 msgHash = mnhfPayload.PrepareTx().GetHash(); const uint256 msgHash = mnhfPayload.PrepareTx().GetHash();
WITH_LOCK(cs, ids.insert(requestId)); WITH_LOCK(cs, ids.insert(requestId));
sigman.AsyncSignIfMember(llmqType, shareman, requestId, msgHash); sigman.AsyncSignIfMember(llmqType, shareman, requestId, msgHash, quorum->qc->quorumHash, false, true);
} }
void CEHFSignalsHandler::HandleNewRecoveredSig(const CRecoveredSig& recoveredSig) void CEHFSignalsHandler::HandleNewRecoveredSig(const CRecoveredSig& recoveredSig)

View File

@ -1201,6 +1201,8 @@ void CInstantSendManager::RemoveNonLockedTx(const uint256& txid, bool retryChild
retryChildrenCount++; retryChildrenCount++;
} }
} }
// don't try to lock it anymore
WITH_LOCK(cs_pendingRetry, pendingRetryTxs.erase(txid));
if (info.tx) { if (info.tx) {
for (const auto& in : info.tx->vin) { for (const auto& in : info.tx->vin) {

View File

@ -876,7 +876,9 @@ void CSigningManager::UnregisterRecoveredSigsListener(CRecoveredSigsListener* l)
recoveredSigsListeners.erase(itRem, recoveredSigsListeners.end()); recoveredSigsListeners.erase(itRem, recoveredSigsListeners.end());
} }
bool CSigningManager::AsyncSignIfMember(Consensus::LLMQType llmqType, CSigSharesManager& shareman, const uint256& id, const uint256& msgHash, const uint256& quorumHash, bool allowReSign) bool CSigningManager::AsyncSignIfMember(Consensus::LLMQType llmqType, CSigSharesManager& shareman, const uint256& id,
const uint256& msgHash, const uint256& quorumHash, bool allowReSign,
bool allowDiffMsgHashSigning)
{ {
if (m_mn_activeman == nullptr) return false; if (m_mn_activeman == nullptr) return false;
if (m_mn_activeman->GetProTxHash().IsNull()) return false; if (m_mn_activeman->GetProTxHash().IsNull()) return false;
@ -911,9 +913,15 @@ bool CSigningManager::AsyncSignIfMember(Consensus::LLMQType llmqType, CSigShares
uint256 prevMsgHash; uint256 prevMsgHash;
db.GetVoteForId(llmqType, id, prevMsgHash); db.GetVoteForId(llmqType, id, prevMsgHash);
if (msgHash != prevMsgHash) { if (msgHash != prevMsgHash) {
LogPrintf("CSigningManager::%s -- already voted for id=%s and msgHash=%s. Not voting on conflicting msgHash=%s\n", __func__, if (allowDiffMsgHashSigning) {
id.ToString(), prevMsgHash.ToString(), msgHash.ToString()); LogPrintf("CSigningManager::%s -- already voted for id=%s and msgHash=%s. Signing for different msgHash=%s\n",
return false; __func__, id.ToString(), prevMsgHash.ToString(), msgHash.ToString());
hasVoted = false;
} else {
LogPrintf("CSigningManager::%s -- already voted for id=%s and msgHash=%s. Not voting on conflicting msgHash=%s\n",
__func__, id.ToString(), prevMsgHash.ToString(), msgHash.ToString());
return false;
}
} else if (allowReSign) { } else if (allowReSign) {
LogPrint(BCLog::LLMQ, "CSigningManager::%s -- already voted for id=%s and msgHash=%s. Resigning!\n", __func__, LogPrint(BCLog::LLMQ, "CSigningManager::%s -- already voted for id=%s and msgHash=%s. Resigning!\n", __func__,
id.ToString(), prevMsgHash.ToString()); id.ToString(), prevMsgHash.ToString());

View File

@ -218,7 +218,9 @@ public:
void RegisterRecoveredSigsListener(CRecoveredSigsListener* l); void RegisterRecoveredSigsListener(CRecoveredSigsListener* l);
void UnregisterRecoveredSigsListener(CRecoveredSigsListener* l); void UnregisterRecoveredSigsListener(CRecoveredSigsListener* l);
bool AsyncSignIfMember(Consensus::LLMQType llmqType, CSigSharesManager& shareman, const uint256& id, const uint256& msgHash, const uint256& quorumHash = uint256(), bool allowReSign = false); bool AsyncSignIfMember(Consensus::LLMQType llmqType, CSigSharesManager& shareman, const uint256& id,
const uint256& msgHash, const uint256& quorumHash = uint256(), bool allowReSign = false,
bool allowDiffMsgHashSigning = false);
bool HasRecoveredSig(Consensus::LLMQType llmqType, const uint256& id, const uint256& msgHash) const; bool HasRecoveredSig(Consensus::LLMQType llmqType, const uint256& id, const uint256& msgHash) const;
bool HasRecoveredSigForId(Consensus::LLMQType llmqType, const uint256& id) const; bool HasRecoveredSigForId(Consensus::LLMQType llmqType, const uint256& id) const;
bool HasRecoveredSigForSession(const uint256& signHash) const; bool HasRecoveredSigForSession(const uint256& signHash) const;

View File

@ -184,7 +184,7 @@ BOOST_FIXTURE_TEST_CASE(block_reward_reallocation, TestChainBRRBeforeActivationS
// Creating blocks by different ways // Creating blocks by different ways
const auto pblocktemplate = BlockAssembler(m_node.chainman->ActiveChainstate(), m_node, *m_node.mempool, Params()).CreateNewBlock(coinbasePubKey); const auto pblocktemplate = BlockAssembler(m_node.chainman->ActiveChainstate(), m_node, *m_node.mempool, Params()).CreateNewBlock(coinbasePubKey);
} }
for ([[maybe_unused]] auto _ : irange::range(1999)) { for ([[maybe_unused]] auto _ : irange::range(499)) {
CreateAndProcessBlock({}, coinbaseKey); CreateAndProcessBlock({}, coinbaseKey);
LOCK(cs_main); LOCK(cs_main);
dmnman.UpdatedBlockTip(m_node.chainman->ActiveChain().Tip()); dmnman.UpdatedBlockTip(m_node.chainman->ActiveChain().Tip());
@ -227,9 +227,9 @@ BOOST_FIXTURE_TEST_CASE(block_reward_reallocation, TestChainBRRBeforeActivationS
const CAmount block_subsidy = GetBlockSubsidyInner(tip->nBits, tip->nHeight, consensus_params, isV20Active); const CAmount block_subsidy = GetBlockSubsidyInner(tip->nBits, tip->nHeight, consensus_params, isV20Active);
const CAmount masternode_payment = GetMasternodePayment(tip->nHeight, block_subsidy, isV20Active); const CAmount masternode_payment = GetMasternodePayment(tip->nHeight, block_subsidy, isV20Active);
const auto pblocktemplate = BlockAssembler(m_node.chainman->ActiveChainstate(), m_node, *m_node.mempool, Params()).CreateNewBlock(coinbasePubKey); const auto pblocktemplate = BlockAssembler(m_node.chainman->ActiveChainstate(), m_node, *m_node.mempool, Params()).CreateNewBlock(coinbasePubKey);
BOOST_CHECK_EQUAL(pblocktemplate->block.vtx[0]->GetValueOut(), 122209530); BOOST_CHECK_EQUAL(pblocktemplate->block.vtx[0]->GetValueOut(), 28847249686);
BOOST_CHECK_EQUAL(pblocktemplate->voutMasternodePayments[0].nValue, masternode_payment); BOOST_CHECK_EQUAL(pblocktemplate->voutMasternodePayments[0].nValue, masternode_payment);
BOOST_CHECK_EQUAL(pblocktemplate->voutMasternodePayments[0].nValue, 61104762); // 0.4999999755 BOOST_CHECK_EQUAL(pblocktemplate->voutMasternodePayments[0].nValue, 14423624841); // 0.4999999999
} }
// Reallocation should kick-in with the superblock mined at height = 2010, // Reallocation should kick-in with the superblock mined at height = 2010,
@ -258,15 +258,15 @@ BOOST_FIXTURE_TEST_CASE(block_reward_reallocation, TestChainBRRBeforeActivationS
const CAmount block_subsidy = GetBlockSubsidyInner(tip->nBits, tip->nHeight, consensus_params, isV20Active); const CAmount block_subsidy = GetBlockSubsidyInner(tip->nBits, tip->nHeight, consensus_params, isV20Active);
const CAmount block_subsidy_sb = GetSuperblockSubsidyInner(tip->nBits, tip->nHeight, consensus_params, isV20Active); const CAmount block_subsidy_sb = GetSuperblockSubsidyInner(tip->nBits, tip->nHeight, consensus_params, isV20Active);
CAmount block_subsidy_potential = block_subsidy + block_subsidy_sb; CAmount block_subsidy_potential = block_subsidy + block_subsidy_sb;
BOOST_CHECK_EQUAL(block_subsidy_potential, 84437941); BOOST_CHECK_EQUAL(block_subsidy_potential, 177167660);
CAmount expected_block_reward = block_subsidy_potential - block_subsidy_potential / 5; CAmount expected_block_reward = block_subsidy_potential - block_subsidy_potential / 5;
const CAmount masternode_payment = GetMasternodePayment(tip->nHeight, block_subsidy, isV20Active); const CAmount masternode_payment = GetMasternodePayment(tip->nHeight, block_subsidy, isV20Active);
const auto pblocktemplate = BlockAssembler(m_node.chainman->ActiveChainstate(), m_node, *m_node.mempool, Params()).CreateNewBlock(coinbasePubKey); const auto pblocktemplate = BlockAssembler(m_node.chainman->ActiveChainstate(), m_node, *m_node.mempool, Params()).CreateNewBlock(coinbasePubKey);
BOOST_CHECK_EQUAL(pblocktemplate->block.vtx[0]->GetValueOut(), expected_block_reward); BOOST_CHECK_EQUAL(pblocktemplate->block.vtx[0]->GetValueOut(), expected_block_reward);
BOOST_CHECK_EQUAL(pblocktemplate->block.vtx[0]->GetValueOut(), 67550353); BOOST_CHECK_EQUAL(pblocktemplate->block.vtx[0]->GetValueOut(), 141734128);
BOOST_CHECK_EQUAL(pblocktemplate->voutMasternodePayments[0].nValue, masternode_payment); BOOST_CHECK_EQUAL(pblocktemplate->voutMasternodePayments[0].nValue, masternode_payment);
BOOST_CHECK_EQUAL(pblocktemplate->voutMasternodePayments[0].nValue, 50662764); // 0.75 BOOST_CHECK_EQUAL(pblocktemplate->voutMasternodePayments[0].nValue, 106300596); // 0.75
} }
BOOST_CHECK(!DeploymentActiveAfter(m_node.chainman->ActiveChain().Tip(), consensus_params, Consensus::DEPLOYMENT_MN_RR)); BOOST_CHECK(!DeploymentActiveAfter(m_node.chainman->ActiveChain().Tip(), consensus_params, Consensus::DEPLOYMENT_MN_RR));
@ -313,8 +313,8 @@ BOOST_FIXTURE_TEST_CASE(block_reward_reallocation, TestChainBRRBeforeActivationS
const auto pblocktemplate = BlockAssembler(m_node.chainman->ActiveChainstate(), m_node, *m_node.mempool, Params()).CreateNewBlock(coinbasePubKey); const auto pblocktemplate = BlockAssembler(m_node.chainman->ActiveChainstate(), m_node, *m_node.mempool, Params()).CreateNewBlock(coinbasePubKey);
CAmount block_subsidy_potential = block_subsidy + block_subsidy_sb; CAmount block_subsidy_potential = block_subsidy + block_subsidy_sb;
BOOST_CHECK_EQUAL(tip->nHeight, 3858); BOOST_CHECK_EQUAL(tip->nHeight, 2358);
BOOST_CHECK_EQUAL(block_subsidy_potential, 78406660); BOOST_CHECK_EQUAL(block_subsidy_potential, 164512828);
// Treasury is 20% since MNRewardReallocation // Treasury is 20% since MNRewardReallocation
CAmount expected_block_reward = block_subsidy_potential - block_subsidy_potential / 5; CAmount expected_block_reward = block_subsidy_potential - block_subsidy_potential / 5;
// Since MNRewardReallocation, MN reward share is 75% of the block reward // Since MNRewardReallocation, MN reward share is 75% of the block reward

View File

@ -11,7 +11,7 @@
*/ */
static const int PROTOCOL_VERSION = 70232; static const int PROTOCOL_VERSION = 70233;
//! initial proto version, to be increased after version/verack negotiation //! initial proto version, to be increased after version/verack negotiation
static const int INIT_PROTO_VERSION = 209; static const int INIT_PROTO_VERSION = 209;
@ -20,7 +20,7 @@ static const int INIT_PROTO_VERSION = 209;
static const int MIN_PEER_PROTO_VERSION = 70215; static const int MIN_PEER_PROTO_VERSION = 70215;
//! minimum proto version of masternode to accept in DKGs //! minimum proto version of masternode to accept in DKGs
static const int MIN_MASTERNODE_PROTO_VERSION = 70232; static const int MIN_MASTERNODE_PROTO_VERSION = 70233;
//! protocol version is included in MNAUTH starting with this version //! protocol version is included in MNAUTH starting with this version
static const int MNAUTH_NODE_VER_VERSION = 70218; static const int MNAUTH_NODE_VER_VERSION = 70218;

View File

@ -152,7 +152,7 @@ class BlockchainTest(BitcoinTestFramework):
'dip0008': { 'type': 'buried', 'active': False, 'height': 432}, 'dip0008': { 'type': 'buried', 'active': False, 'height': 432},
'dip0020': { 'type': 'buried', 'active': False, 'height': 300}, 'dip0020': { 'type': 'buried', 'active': False, 'height': 300},
'dip0024': { 'type': 'buried', 'active': False, 'height': 900}, 'dip0024': { 'type': 'buried', 'active': False, 'height': 900},
'realloc': { 'type': 'buried', 'active': False, 'height': 2500}, 'realloc': { 'type': 'buried', 'active': False, 'height': 1000},
'v19': { 'type': 'buried', 'active': False, 'height': 900}, 'v19': { 'type': 'buried', 'active': False, 'height': 900},
'v20': { 'v20': {
'type': 'bip9', 'type': 'bip9',