From fd46c4ccdac59f94db9266322f3a808dd12516b3 Mon Sep 17 00:00:00 2001 From: pasta Date: Tue, 2 Apr 2024 09:37:58 -0500 Subject: [PATCH 1/6] Merge #5962: fix: deadlock over cs_main and contributionsCacheCs in dkssessionmgr ded1b5a3dfa311f7a1c89cf401d38eadb2642f93 fix: deadlock over cs_main and contributionsCacheCs in dkssessionmgr (Konstantin Akimov) Pull request description: ## Issue being fixed or feature implemented **It fixes rpc failure: "Work queue depth exceeded"** As I checked on running `dashd` in deadlock condition: Thread 78 is a thread that keep `cs_main`: ``` #14 0x0000aaaad1f8d604 in BuildSimplifiedMNListDiff () at evo/simplifiedmns.cpp:364 ``` but it is locked by `contributionsCacheCs` ``` #8 llmq::CDKGSessionManager::GetVerifiedContributions () at llmq/dkgsessionmgr.cpp:392 ``` On other hand, `contributionsCacheCs` is blocked by Thread 59 ``` #17 0x0000aaaad1ba1940 in llmq::CDKGSessionManager::GetVerifiedContributions () at llmq/dkgsessionmgr.cpp:393 ``` and it makes circuit lock by waiting `cs_main` in ``` #9 ReadBlockFromDisk () at node/blockstorage.cpp:75 ``` See https://github.com/dashpay/dash-issues/issues/69 for more details Seems introduced there: dashpay/dash#3911 ## What was done? Deadlock is removed by reducing scope of mutex ## How Has This Been Tested? I reviewed 2 different servers which have status `work queue exceeded`, both have same deadlock, so, this patch should fix this issue. Once this fix is merged, we can test it on testnet. ## Breaking Changes N/A ## Checklist: - [x] I have performed a self-review of my own code - [x] 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 Top commit has no ACKs. Tree-SHA512: 4fe5c03c464ee6934fb927b897f007b65a8995723196edaffdae067edee7067da151130d4c4bac47d3418fdad5c8e130682f42d7ef9c044380a8c8fff78ee008 --- src/llmq/dkgsessionmgr.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/llmq/dkgsessionmgr.cpp b/src/llmq/dkgsessionmgr.cpp index 7b81f8c092..47a1af1f89 100644 --- a/src/llmq/dkgsessionmgr.cpp +++ b/src/llmq/dkgsessionmgr.cpp @@ -389,7 +389,6 @@ void CDKGSessionManager::WriteEncryptedContributions(Consensus::LLMQType llmqTyp bool CDKGSessionManager::GetVerifiedContributions(Consensus::LLMQType llmqType, const CBlockIndex* pQuorumBaseBlockIndex, const std::vector& validMembers, std::vector& memberIndexesRet, std::vector& vvecsRet, std::vector& skContributionsRet) const { - LOCK(contributionsCacheCs); auto members = utils::GetAllQuorumMembers(llmqType, pQuorumBaseBlockIndex); memberIndexesRet.clear(); @@ -398,6 +397,9 @@ bool CDKGSessionManager::GetVerifiedContributions(Consensus::LLMQType llmqType, memberIndexesRet.reserve(members.size()); vvecsRet.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())) { if (validMembers[i]) { const uint256& proTxHash = members[i]->proTxHash; From 1637fa5a9ea61dc9fb395f8da958e99745358cd9 Mon Sep 17 00:00:00 2001 From: pasta Date: Wed, 3 Apr 2024 11:11:54 -0500 Subject: [PATCH 2/6] Merge #5968: docs: add v20.0.4 release notes 7f57516d04235b65dd7d5b5a4d39d372a2ffcce3 docs: add v20.0.4 release notes (pasta) Pull request description: ## Issue being fixed or feature implemented We didn't archive v20.0.4 release notes somehow in #5910 ## What was done? Archive 20.0.4 release notes ## 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: d703dedf1aad2afb5eb8af291f89e38fa2dfb4185ef9e25194c273bb9f04ae8075ea87318552b468b1a487b39b95cf1dee794d3d3c5b8a863dbfd6d458ee8e72 --- .../dash/release-notes-20.0.4.md | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 doc/release-notes/dash/release-notes-20.0.4.md diff --git a/doc/release-notes/dash/release-notes-20.0.4.md b/doc/release-notes/dash/release-notes-20.0.4.md new file mode 100644 index 0000000000..d0175797a7 --- /dev/null +++ b/doc/release-notes/dash/release-notes-20.0.4.md @@ -0,0 +1,143 @@ +# Dash Core version v20.0.4 + +Release is now available from: + + + +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: + + + + +# 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 From 2bde1ddca448544a621c672864cc60849d4d6d2d Mon Sep 17 00:00:00 2001 From: pasta Date: Tue, 12 Mar 2024 15:18:24 -0500 Subject: [PATCH 3/6] Merge #5927: fix: check if message can be handled before attempting to deserialize afbae06520645b6a2a87bbef32234e1e6b1790a7 fix: check if message can be handled before attempting to deserialize (thephez) Pull request description: ## Issue being fixed or feature implemented Currently `message-capture-parser.py` crashes when encountering certain messages (e.g. mnauth). This at least makes it possible to run the script without crashing. There may be better options for solving this. ## What was done? Check if the dictionary is going to return `None` before we attempt to do something further with it. Hide whitespace changes to see the few lines that were added: https://github.com/dashpay/dash/pull/5927/files?diff=unified&w=1 ## How Has This Been Tested? Running script locally ## Breaking Changes N/A ## 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 - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ Top commit has no ACKs. Tree-SHA512: 041af57afcfd1d93487fd41d34a50e3a99f7fa129563dfe1e1cf2498974c8e658bd6acb9c810887c841160074056ba999e9b6607ac9336b98b9d42806682c607 --- contrib/message-capture/message-capture-parser.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/contrib/message-capture/message-capture-parser.py b/contrib/message-capture/message-capture-parser.py index 33759ee713..b416c11302 100755 --- a/contrib/message-capture/message-capture-parser.py +++ b/contrib/message-capture/message-capture-parser.py @@ -122,8 +122,8 @@ def process_file(path: str, messages: List[Any], recv: bool, progress_bar: Optio msg_ser = BytesIO(f_in.read(length)) # Determine message type - if msgtype not in MESSAGEMAP: - # Unrecognized message type + if msgtype not in MESSAGEMAP or MESSAGEMAP[msgtype] is None: + # Unrecognized or unhandled message type try: msgtype_tmp = msgtype.decode() 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 except UnicodeDecodeError: msg_dict["msgtype"] = "UNREADABLE" + err_str = "Unrecognized" if msgtype not in MESSAGEMAP else "Unhandled" 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) - 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 # Deserialize the message From e58c7c443c068b3b92b4f932e6444e66838c7a77 Mon Sep 17 00:00:00 2001 From: pasta Date: Wed, 3 Apr 2024 13:03:54 -0500 Subject: [PATCH 4/6] Merge #5970: guix: exclude debug symbols for apple from list of hashes due to its non-determinism a29f82670b96380a0f148a9bea223e603802e47b guix: exclude debug symbols for apple from list of hash sums due to its undeterminism (Konstantin Akimov) Pull request description: ## Issue being fixed or feature implemented Debug symbols for apples are non-deterministic. Due to that all list of hash sums differ between build. It causes to impossible to merge all GPG signatures to one file *.asc, because different files are signed. For example these hash lists: https://github.com/dashpay/guix.sigs/blob/master/20.1.0/knst/all.SHA256SUMS#L6 and https://github.com/dashpay/guix.sigs/blob/master/20.1.0/thephez/all.SHA256SUMS#L6 are different: ``` ac87fd17eb19edcaa83b2cbf02e6d74ec12b1eaab50fc73789413bb04f1e04b5 dashcore-20.1.0-arm64-apple-darwin-debug.tar.gz e16eaa02e24cdf643b58831c96bf1494c02602651e977994c8317f752b4c3ae3 dashcore-20.1.0-arm64-apple-darwin-debug.tar.gz ``` ## What was done? It excludes the line with hash of apples's debug artefact from the final list. ## How Has This Been Tested? Run guix build and guix attest locally for 2 targets. There's output: ``` $ cat ~/projects/guix.sigs/20.1.0-317-ga29f82670b96/knst/noncodesigned.SHA256SUMS f20cee2e348a850d39f79a6f06ce8019aca577bf5da0e81a3eb1d06013c0d3d9 dashcore-20.1.0-317-ga29f82670b96.tar.gz e01c18b817793a7d71173c9b2d84b32d7bdc27e67fbd2ac35ad85457bed5b5c3 dashcore-20.1.0-317-ga29f82670b96-x86_64-apple-darwin-unsigned.dmg 0987f99859a4a7c5c1676a754f022f97dfe1dd8fdd8a35170e3144f43d317270 dashcore-20.1.0-317-ga29f82670b96-x86_64-apple-darwin-unsigned.tar.gz 2afdffd9e5b959dd1f54baadf2e8c7159147050ea032074b6d606945621e9a28 dashcore-20.1.0-317-ga29f82670b96-x86_64-apple-darwin.tar.gz 2f3af85fddb12cb6ff6f9c370b9bbb7b4893ed90748cefbb55fc4ce4d22cb3e9 dashcore-20.1.0-317-ga29f82670b96-x86_64-linux-gnu-debug.tar.gz 19daa1c8310d3097bf25713a551f2bcd59eccfa882b3b413db36591d6ec7c204 dashcore-20.1.0-317-ga29f82670b96-x86_64-linux-gnu.tar.gz ``` linux's debug is still here, apple's debug is not here as expected ## Breaking Changes N/A ## Checklist: - [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 ACKs for top commit: PastaPastaPasta: utACK a29f826 Tree-SHA512: d3b85ffea440b1b1d13b19373a9928e2881120747363844d4a9293d19afd986b98f096f3cdeee46acc93ca213200be44cadd867c3c77b9be55b7b81ecfcc156d --- contrib/guix/guix-attest | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/guix/guix-attest b/contrib/guix/guix-attest index 7c71ff3508..a64b659fe7 100755 --- a/contrib/guix/guix-attest +++ b/contrib/guix/guix-attest @@ -192,6 +192,7 @@ mkdir -p "$outsigdir" if (( ${#noncodesigned_fragments[@]} )); then cat "${noncodesigned_fragments[@]}" \ + | grep -v apple-darwin-debug.tar \ | sort -u \ | sort -k2 \ | basenameify_SHA256SUMS \ @@ -220,6 +221,7 @@ mkdir -p "$outsigdir" # Note: all.SHA256SUMS attests to all of $sha256sum_fragments, but is # not needed if there are no $codesigned_fragments cat "${sha256sum_fragments[@]}" \ + | grep -v apple-darwin-debug.tar \ | sort -u \ | sort -k2 \ | basenameify_SHA256SUMS \ From 83cac77335e69870f5d6cfa43fbc0a384eeb68f4 Mon Sep 17 00:00:00 2001 From: pasta Date: Wed, 3 Apr 2024 11:04:21 -0500 Subject: [PATCH 5/6] docs: add v20.1.1 release notes Co-authored-by: UdjinM6 Co-authored-by: thephez --- doc/release-notes.md | 104 +--------- .../dash/release-notes-20.1.0.md | 191 ++++++++++++++++++ 2 files changed, 199 insertions(+), 96 deletions(-) create mode 100644 doc/release-notes/dash/release-notes-20.1.0.md diff --git a/doc/release-notes.md b/doc/release-notes.md index c3c786cb1e..a2b7b9f3bb 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -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. @@ -28,96 +28,12 @@ reindex or re-sync the whole chain. # 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 -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. +A deadlock caused nodes to become non-responsive and RPC to report "Work depth queue exceeded". +Thanks to Konstantin Akimov (knst) who discovered the cause. This previously caused masternodes to become PoSe banned. -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=`: 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 what’s included in Bitcoin, please refer to their release notes. - -# v20.1.0 Change log +# v20.1.1 Change log 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: -- 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. @@ -141,6 +52,7 @@ debug the release candidates. 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.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 @@ -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.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 diff --git a/doc/release-notes/dash/release-notes-20.1.0.md b/doc/release-notes/dash/release-notes-20.1.0.md new file mode 100644 index 0000000000..c3c786cb1e --- /dev/null +++ b/doc/release-notes/dash/release-notes-20.1.0.md @@ -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: + + + + +# 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=`: 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 what’s 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 From b96b20283d3d0ba34cbc6cd52bde242aa54538b8 Mon Sep 17 00:00:00 2001 From: pasta Date: Wed, 3 Apr 2024 12:26:30 -0500 Subject: [PATCH 6/6] chore: bump version to 20.1.1 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 011273ab07..405c084520 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ AC_PREREQ([2.69]) dnl Don't forget to push a corresponding tag when updating any of _CLIENT_VERSION_* numbers define(_CLIENT_VERSION_MAJOR, 20) define(_CLIENT_VERSION_MINOR, 1) -define(_CLIENT_VERSION_BUILD, 0) +define(_CLIENT_VERSION_BUILD, 1) define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2024) define(_COPYRIGHT_HOLDERS,[The %s developers])