From 47b6826c3f1a90ce3cdbbb518586dd5b9fef2be3 Mon Sep 17 00:00:00 2001 From: pasta Date: Tue, 8 Jul 2025 19:56:42 -0500 Subject: [PATCH 1/7] Merge #6744: fix: remove useless but alarming log record about spent information 53a3415d0714e3b72088301aedc76fd7192f57ae fix: remove useless but alarming log record about spent information (Konstantin Akimov) Pull request description: ## Issue being fixed or feature implemented https://github.com/dashpay/dash/issues/6539 https://github.com/dashpay/dash/issues/6651 These log records are useless because RPC can be called remotely for non-existing tx: 2025-04-28T12:53:35Z ERROR: Unable to get spend information ## What was done? Just removed error log for it. ## How Has This Been Tested? Call RPC for non-existing transaction: getspentinfo '{"txid":"0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9", "index":0}' ## Breaking Changes N/A Changes are only log-related ## 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 53a3415d0714e3b72088301aedc76fd7192f57ae UdjinM6: utACK 53a3415d0714e3b72088301aedc76fd7192f57ae Tree-SHA512: c671d41c17efd18c82d16e83104a62b1f736f599e1fe78ef021a45c112010c8898f0d00837599208238773751fb9f308f9eae41991ec02d6f73564f96f34cf5f --- src/rpc/index_util.cpp | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/rpc/index_util.cpp b/src/rpc/index_util.cpp index 30ca50caa10c..b17effb354e1 100644 --- a/src/rpc/index_util.cpp +++ b/src/rpc/index_util.cpp @@ -26,11 +26,7 @@ bool GetAddressIndex(CBlockTreeDB& block_tree_db, const uint160& addressHash, co AssertLockHeld(::cs_main); EnsureAddressIndexAvailable(); - if (!block_tree_db.ReadAddressIndex(addressHash, type, addressIndex, start, end)) { - return error("Unable to get txids for address"); - } - - return true; + return block_tree_db.ReadAddressIndex(addressHash, type, addressIndex, start, end); } bool GetAddressUnspentIndex(CBlockTreeDB& block_tree_db, const uint160& addressHash, const AddressType type, @@ -40,7 +36,7 @@ bool GetAddressUnspentIndex(CBlockTreeDB& block_tree_db, const uint160& addressH EnsureAddressIndexAvailable(); if (!block_tree_db.ReadAddressUnspentIndex(addressHash, type, unspentOutputs)) - return error("Unable to get txids for address"); + return false; if (height_sort) { std::sort(unspentOutputs.begin(), unspentOutputs.end(), @@ -60,7 +56,7 @@ bool GetMempoolAddressDeltaIndex(const CTxMemPool& mempool, EnsureAddressIndexAvailable(); if (!mempool.getAddressIndex(addressDeltaIndex, addressDeltaEntries)) - return error("Unable to get address delta information"); + return false; if (timestamp_sort) { std::sort(addressDeltaEntries.begin(), addressDeltaEntries.end(), @@ -84,10 +80,7 @@ bool GetSpentIndex(CBlockTreeDB& block_tree_db, const CTxMemPool& mempool, const if (mempool.getSpentIndex(key, value)) return true; - if (!block_tree_db.ReadSpentIndex(key, value)) - return error("Unable to get spend information"); - - return true; + return block_tree_db.ReadSpentIndex(key, value); } bool GetTimestampIndex(CBlockTreeDB& block_tree_db, const uint32_t high, const uint32_t low, @@ -99,8 +92,5 @@ bool GetTimestampIndex(CBlockTreeDB& block_tree_db, const uint32_t high, const u throw JSONRPCError(RPC_INVALID_REQUEST, "Timestamp index is disabled. You should run Dash Core with -timestampindex (requires reindex)"); } - if (!block_tree_db.ReadTimestampIndex(high, low, hashes)) - return error("Unable to get hashes for timestamps"); - - return true; + return block_tree_db.ReadTimestampIndex(high, low, hashes); } From 9eda78569c3a9e7dbbbe6aa025c662a28b12e92b Mon Sep 17 00:00:00 2001 From: pasta Date: Fri, 4 Jul 2025 16:02:04 -0500 Subject: [PATCH 2/7] Merge #6740: feat: improve logging of non-existing destinations for masternode payment e9f292d4f0736c130e3f14ae31ee699be9fe90ad feat: improve logging of non-existing destinations for masternode payment (Konstantin Akimov) Pull request description: ## Issue being fixed or feature implemented In case if destination is invalid for cbtx, the logs are missing ## What was done? Improved logs for case if invalid destination ## How Has This Been Tested? N/A ## 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: UdjinM6: utACK e9f292d4f0736c130e3f14ae31ee699be9fe90ad kwvg: utACK e9f292d4f0736c130e3f14ae31ee699be9fe90ad Tree-SHA512: 990aadceff00bd964dbe9b8da292779ac15bba347688b655a64250c257b137511afdc6301010459c5d6287f3464922fffb5745789633dd690778e8c770d8095c --- src/masternode/payments.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/masternode/payments.cpp b/src/masternode/payments.cpp index b90dc4193616..d3e0f0086ae1 100644 --- a/src/masternode/payments.cpp +++ b/src/masternode/payments.cpp @@ -124,10 +124,14 @@ CAmount PlatformShare(const CAmount reward) for (const auto& txout : voutMasternodePayments) { bool found = ranges::any_of(txNew.vout, [&txout](const auto& txout2) {return txout == txout2;}); if (!found) { - CTxDestination dest; - if (!ExtractDestination(txout.scriptPubKey, dest)) - assert(false); - LogPrintf("CMNPaymentsProcessor::%s -- ERROR! Failed to find expected payee %s in block at height %s\n", __func__, EncodeDestination(dest), nBlockHeight); + std::string str_payout; + if (CTxDestination dest; ExtractDestination(txout.scriptPubKey, dest)) { + str_payout = EncodeDestination(dest); + } else { + str_payout = HexStr(txout.scriptPubKey); + } + LogPrintf("CMNPaymentsProcessor::%s -- ERROR! Failed to find expected payee %s in block at height %s\n", + __func__, str_payout, nBlockHeight); return false; } } From 4173e3c541c1d8a1e942c95e5c3fd7b3b309c9c1 Mon Sep 17 00:00:00 2001 From: pasta Date: Sun, 6 Jul 2025 15:28:25 -0500 Subject: [PATCH 3/7] Merge #6739: docs: Fix broken links from translation instructions and a typo b58d77a60f74c90ed9d2bce4cd48c7e97dd5a85a Fix broken links from translation instructions and a typo (Jorge Maldonado Ventura) Pull request description: It fixes broken links from the translation instructions and a typo. ## Issue being fixed or feature implemented - Contributors won't be shown a broken link ## What was done? Just replace the links and fix the typo. ## How Has This Been Tested? I checked that the new links work fine. ## 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 - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: UdjinM6: utACK b58d77a60f74c90ed9d2bce4cd48c7e97dd5a85a Tree-SHA512: e8609605a326dd3f780eea0213dec949d4b163469c6171ce8336fcdbcc282932491b7cc36f40d2aa198c6ba25ace6ddba1fb2fd5fca0de396831d29f96eac6b5 --- README.md | 2 +- doc/translation_process.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c30cb6d7482c..64fc65c742ee 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ Translations ------------ Changes to translations as well as new translations can be submitted to -[Dash Core's Transifex page](https://www.transifex.com/projects/p/dash/). +[Dash Core's Transifex page](https://explore.transifex.com/dash/dash/). Translations are periodically pulled from Transifex and merged into the git repository. See the [translation process](doc/translation_process.md) for details on how this works. diff --git a/doc/translation_process.md b/doc/translation_process.md index 3a85b99d0eba..529dada5fe32 100644 --- a/doc/translation_process.md +++ b/doc/translation_process.md @@ -8,7 +8,7 @@ Transifex is setup to monitor the GitHub repo for updates, and when code contain Multiple language support is critical in assisting Dash’s global adoption, and growth. One of Dash’s greatest strengths is cross-border money transfers, any help making that easier is greatly appreciated. -See the [Transifex Dash project](https://www.transifex.com/projects/p/dash/) to assist in translations. You should also join the translation mailing list for announcements - see details below. +See the [Transifex Dash project](https://explore.transifex.com/dash/dash/) to assist in translations. You should also join the translation mailing list for announcements - see details below. ### Writing code with translations We use automated scripts to help extract translations in both Qt, and non-Qt source files. It is rarely necessary to manually edit the files in `src/qt/locale/`. The translation source files must adhere to the following format: @@ -40,12 +40,12 @@ git commit ### Creating a Transifex account -Visit the [Transifex Signup](https://www.transifex.com/signup/) page to create an account. Take note of your username and password, as they will be required to configure the command-line tool. +Visit the [Transifex Signup](https://app.transifex.com/signup/) page to create an account. Take note of your username and password, as they will be required to configure the command-line tool. -You can find the Dash translation project at [https://www.transifex.com/projects/p/dash/](https://www.transifex.com/projects/p/dash/). +You can find the Dash translation project at . ### Installing the Transifex client command-line tool -The client it used to fetch updated translations. If you are having problems, or need more details, see [http://docs.transifex.com/developer/client/setup](http://docs.transifex.com/developer/client/setup) +The client is used to fetch updated translations. If you are having problems, or need more details, see . **For Linux and Mac** @@ -65,7 +65,7 @@ username = USERNAME **For Windows** -Please see [http://docs.transifex.com/developer/client/setup#windows](http://docs.transifex.com/developer/client/setup#windows) for details on installation. +Please see for details on installation. The Transifex Dash project config file is included as part of the repo. It can be found at `.tx/config`, however you shouldn’t need to change anything. @@ -105,4 +105,4 @@ To create a new language template, you will need to edit the languages manifest **Note:** that the language translation file **must end in `.qm`** (the compiled extension), and not `.ts`. ### Questions and general assistance -Check official forum at [https://www.dash.org/forum/topic/dash-worldwide-collaboration.88/](https://www.dash.org/forum/topic/dash-worldwide-collaboration.88/). +Check official forum at . From 1db850a1666e82739191dea411c24f18d5ba0211 Mon Sep 17 00:00:00 2001 From: pasta Date: Mon, 28 Apr 2025 11:31:30 -0500 Subject: [PATCH 4/7] Merge #6632: perf: versionbits avoid calculation which is not used b622989463f1b6c666b2de1ebbbbbc3af0c9cb54 perf: optimize version bit calculation (Konstantin Akimov) Pull request description: ## Issue being fixed or feature implemented It seems as there's O(N^2) for some certain situations when calling `invalidateblock`. See perf result during adding / removing blocks to chain: image ## What was done? Call `calculateStartHeight` only if its result is going to be used. ## How Has This Been Tested? ``` $ getblockcount 2255311 $ getblockhash 2250000 00000000000000062539a6cd3adece4a10598e729ef571bfded9d4b704af69f0 $ invalidateblock 00000000000000062539a6cd3adece4a10598e729ef571bfded9d4b704af69f0 null ``` With changes in PR it takes 1minute, without them - 3 minutes. image Mainnet re-indexed with no issues. ## 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 _(for repository code-owners and collaborators only)_ ACKs for top commit: UdjinM6: light ACK b622989463f1b6c666b2de1ebbbbbc3af0c9cb54 PastaPastaPasta: utACK b622989463f1b6c666b2de1ebbbbbc3af0c9cb54 Tree-SHA512: a165b96f8f1a1e2efa64e223639822c9690c0cfbc3c185925826b62ef9a2e92adb4e5913f6c904363fe2ef19e384674d4ab16f082c2a4b9c574ec4ea63747ce9 --- src/versionbits.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/versionbits.cpp b/src/versionbits.cpp index 939cbb825aac..540d19d10614 100644 --- a/src/versionbits.cpp +++ b/src/versionbits.cpp @@ -73,6 +73,9 @@ ThresholdState AbstractThresholdConditionChecker::GetStateFor(const CBlockIndex* assert(cache.count(pindexPrev)); ThresholdState state = cache[pindexPrev]; + // we should avoid heavy calculation of nStartHeight below if there's nothing to compute + if (vToCompute.empty()) return state; + int nStartHeight = calculateStartHeight(pindexPrev, state, nPeriod, cache); // Now walk forward and compute the state of descendants of pindexPrev From 3345046573e672f095f109939c936cc123461366 Mon Sep 17 00:00:00 2001 From: pasta Date: Tue, 8 Jul 2025 20:47:16 -0500 Subject: [PATCH 5/7] chore: update chainparams for v22.1.3 release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update mainnet nMinimumChainWork and defaultAssumeValid to block 2301632 - Update testnet nMinimumChainWork and defaultAssumeValid to block 1254997 - Both blocks are chainlocked and use matching chainwork values 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/chainparams.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 5b28f79dec1b..2ebb46e1da13 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -219,10 +219,10 @@ class CMainParams : public CChainParams { consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true; // The best chain should have at least this much work. - consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000a39050764808db046f5c"); // 2216986 + consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000aa587876325b0a1080c8"); // 2301632 // By default assume that the signatures in ancestors of this block are valid. - consensus.defaultAssumeValid = uint256S("0x0000000000000010b1135dc743f27f6fc8a138c6420a9d963fc676f96c2048f4"); // 2216986 + consensus.defaultAssumeValid = uint256S("0x000000000000000630fdfb37764bc6df460d301effa5e0fd4e8ef9ba821f36da"); // 2301632 /** * The message start string is designed to be unlikely to occur in normal data. @@ -417,10 +417,10 @@ class CTestNetParams : public CChainParams { consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true; // The best chain should have at least this much work. - consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000000031f769ba78b4bee"); // 1189000 + consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000000003472e1b8bd6a3b7"); // 1254997 // By default assume that the signatures in ancestors of this block are valid. - consensus.defaultAssumeValid = uint256S("0x000001690314036dfbbecbdf382b230ead8e9c584241290a51f9f05a87a9cf7e"); // 1189000 + consensus.defaultAssumeValid = uint256S("0x000001d20827f1394354452ba2e836de387e4fbf2d1d35b3281adbb14adf89a1"); // 1254997 pchMessageStart[0] = 0xce; pchMessageStart[1] = 0xe2; From 95c2a0e5a5df11ca7b897aaf0a8d52d928addf17 Mon Sep 17 00:00:00 2001 From: pasta Date: Tue, 8 Jul 2025 20:48:06 -0500 Subject: [PATCH 6/7] chore: bump version to v22.1.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates CLIENT_VERSION_BUILD from 2 to 3 in configure.ac 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index c380db5afb0d..f80ed845cea6 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, 22) define(_CLIENT_VERSION_MINOR, 1) -define(_CLIENT_VERSION_BUILD, 2) +define(_CLIENT_VERSION_BUILD, 3) define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2025) define(_COPYRIGHT_HOLDERS,[The %s developers]) From 9ec8e669da0ea2b3e2d6b74cf0c2b3a7db1daf2e Mon Sep 17 00:00:00 2001 From: pasta Date: Tue, 8 Jul 2025 20:50:29 -0500 Subject: [PATCH 7/7] docs: add v22.1.3 release notes and archive v22.1.2 --- doc/release-notes.md | 43 ++---- .../dash/release-notes-22.1.2.md | 138 ++++++++++++++++++ 2 files changed, 153 insertions(+), 28 deletions(-) create mode 100644 doc/release-notes/dash/release-notes-22.1.2.md diff --git a/doc/release-notes.md b/doc/release-notes.md index e7b615d54811..77795582bc0f 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,4 +1,4 @@ -# Dash Core version v22.1.2 +# Dash Core version v22.1.3 This is a new minor version release, bringing various bugfixes and performance improvements. This release is **optional** for all nodes, although recommended. @@ -26,39 +26,27 @@ likely require a reindex. # Release Notes -Quorum Rotation Improvements ----------------------------- +Bug Fixes +---------- -- Optimized `quorum rotationinfo` RPC and `GETQUORUMROTATIONINFO` P2P message by constructing diffs progressively from oldest to newest, reducing redundancy and improving efficiency (dash#6622). -- Fixed incorrect `baseBlockHash` handling, eliminating unnecessary quorum changes in responses and improving result accuracy and compactness (dash#6625). +- Fixed crash when processing invalid masternode payment destinations, replacing unsafe assertion with proper error handling (dash#6740). -Deployment and CI Fixes ------------------------ +RPC and Logging Improvements +---------------------------- -- Pinned QEMU version to avoid segmentation faults during container builds (dash#6586). +- Fixed misleading error logs that were triggered by legitimate RPC queries for non-existent transaction data, reducing log noise and preventing false alarms (dash#6744). Performance Improvements ------------------------ -- Improved the performance of deterministic masternode list management, significantly speeding up RPC calls such as `protx diff` (dash#6581). - -Coinjoin Tests Stability ------------------------- - -- Resolved potential deadlock in `coinjoin_tests.cpp` by ensuring wallet transaction scans occur outside critical wallet lock scope (dash#6593). - -Minor Build and Test Fixes --------------------------- - -- Fixed assertion edge case for coinbase transactions (cbtx) in simplified masternode list diff outputs, specifically affecting debug builds (dash#6585). -- Updated copyright notices to 2025 in COPYING file and Debian packaging metadata (dash#6599). +- Optimized versionbits calculation to avoid unnecessary computations during block operations, significantly improving performance during blockchain reorganizations (dash#6632). -P2P Changes ------------ +Documentation Updates +--------------------- -- `cycleHash` field in `isdlock` message will now represent a DKG cycle starting block of the signing quorum instead of a DKG cycle starting block corresponding to the current chain height. While this is fully backwards compatible with older versions of Dash Core, other implementations might not be expecting this, so the P2P protocol version was bumped to 70237. (#6608) +- Updated translation documentation with current Transifex links and fixed typos to help contributors properly access translation resources (dash#6739). -# v22.1.2 Change log +# v22.1.3 Change log See detailed [set of changes][set-of-changes]. @@ -66,11 +54,9 @@ See detailed [set of changes][set-of-changes]. Thanks to everyone who directly contributed to this release: -- Kittywhiskers Van Gogh +- Jorge Maldonado Ventura - Konstantin Akimov -- Odysseas Gabrielides - PastaPastaPasta -- UdjinM6 As well as everyone that submitted issues, reviewed pull requests and helped debug the release candidates. @@ -79,6 +65,7 @@ debug the release candidates. These releases are considered obsolete. Old release notes can be found here: +- [v22.1.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-22.1.2.md) released Apr/15/2025 - [v22.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-22.1.1.md) released Feb/17/2025 - [v22.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-22.1.0.md) released Feb/10/2025 - [v22.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-22.0.0.md) released Dec/12/2024 @@ -135,4 +122,4 @@ These releases 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/v22.1.1...dashpay:v22.1.2 +[set-of-changes]: https://github.com/dashpay/dash/compare/v22.1.2...dashpay:v22.1.3 \ No newline at end of file diff --git a/doc/release-notes/dash/release-notes-22.1.2.md b/doc/release-notes/dash/release-notes-22.1.2.md new file mode 100644 index 000000000000..e7b615d54811 --- /dev/null +++ b/doc/release-notes/dash/release-notes-22.1.2.md @@ -0,0 +1,138 @@ +# Dash Core version v22.1.2 + +This is a new minor version release, bringing various bugfixes and performance improvements. +This release is **optional** for all nodes, although recommended. + +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 < v22.0.0 + +Downgrading to a version older than v22.0.0 may not be supported, and will +likely require a reindex. + +# Release Notes + +Quorum Rotation Improvements +---------------------------- + +- Optimized `quorum rotationinfo` RPC and `GETQUORUMROTATIONINFO` P2P message by constructing diffs progressively from oldest to newest, reducing redundancy and improving efficiency (dash#6622). +- Fixed incorrect `baseBlockHash` handling, eliminating unnecessary quorum changes in responses and improving result accuracy and compactness (dash#6625). + +Deployment and CI Fixes +----------------------- + +- Pinned QEMU version to avoid segmentation faults during container builds (dash#6586). + +Performance Improvements +------------------------ + +- Improved the performance of deterministic masternode list management, significantly speeding up RPC calls such as `protx diff` (dash#6581). + +Coinjoin Tests Stability +------------------------ + +- Resolved potential deadlock in `coinjoin_tests.cpp` by ensuring wallet transaction scans occur outside critical wallet lock scope (dash#6593). + +Minor Build and Test Fixes +-------------------------- + +- Fixed assertion edge case for coinbase transactions (cbtx) in simplified masternode list diff outputs, specifically affecting debug builds (dash#6585). +- Updated copyright notices to 2025 in COPYING file and Debian packaging metadata (dash#6599). + +P2P Changes +----------- + +- `cycleHash` field in `isdlock` message will now represent a DKG cycle starting block of the signing quorum instead of a DKG cycle starting block corresponding to the current chain height. While this is fully backwards compatible with older versions of Dash Core, other implementations might not be expecting this, so the P2P protocol version was bumped to 70237. (#6608) + +# v22.1.2 Change log + +See detailed [set of changes][set-of-changes]. + +# Credits + +Thanks to everyone who directly contributed to this release: + +- Kittywhiskers Van Gogh +- Konstantin Akimov +- Odysseas Gabrielides +- PastaPastaPasta +- UdjinM6 + +As well as everyone that submitted issues, reviewed pull requests and helped +debug the release candidates. + +# Older releases + +These releases are considered obsolete. Old release notes can be found here: + +- [v22.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-22.1.1.md) released Feb/17/2025 +- [v22.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-22.1.0.md) released Feb/10/2025 +- [v22.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-22.0.0.md) released Dec/12/2024 +- [v21.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-21.1.1.md) released Oct/22/2024 +- [v21.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-21.1.0.md) released Aug/8/2024 +- [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 +- [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/v22.1.1...dashpay:v22.1.2