From d0d466947904ab5e71d130b85ca3879ff7e95ccf Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Tue, 9 Jan 2024 16:56:44 +0300 Subject: [PATCH 1/8] build: Disable miner for Windows binaries built via Guix (#5801) ## Issue being fixed or feature implemented We had this in Gitian https://github.com/dashpay/dash/blob/master/contrib/gitian-descriptors/gitian-win.yml#L38. We also had it for macos https://github.com/dashpay/dash/blob/master/contrib/gitian-descriptors/gitian-osx.yml#L42 but it looks like it's no longer an issue there (or at least I did not see anyone complaining about it). ## What was done? tweak `CONFIGFLAGS` for `mingw` host ## 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 _(for repository code-owners and collaborators only)_ --- contrib/guix/libexec/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/guix/libexec/build.sh b/contrib/guix/libexec/build.sh index a85d9bc921d16..0755764869b88 100644 --- a/contrib/guix/libexec/build.sh +++ b/contrib/guix/libexec/build.sh @@ -237,6 +237,7 @@ mkdir -p "$OUTDIR" CONFIGFLAGS+=" --enable-reduce-exports --disable-bench --disable-gui-tests --disable-fuzz-binary" case "$HOST" in *linux*) CONFIGFLAGS+=" --disable-threadlocal" ;; + *mingw*) CONFIGFLAGS+=" --disable-miner" ;; esac # CFLAGS From 4ebdaf69bcd08316d79d46e2c61623d3201a1ea4 Mon Sep 17 00:00:00 2001 From: Konstantin Akimov Date: Sun, 7 Jan 2024 08:28:47 +0700 Subject: [PATCH 2/8] fix: withdrawal (asset unlock) txes to use Platform Quorum on RegTest (#5800) ## Issue being fixed or feature implemented Asset Unlock tx uses platform's quorum on devnets, testnet, mainnet, but still quorum type "Test (100)" on Reg Tests That's part II PR, prior work is here: https://github.com/dashpay/dash/pull/5618 ## What was done? - Removed `consensus.llmqTypeAssetLocks` which has been kept only for RegTest - use `consensus.llmqTypePlatform` instead. - Functional test `feature_asset_locks.py` uses `llmq_type_test = 106` instead `llmq_type_test = 100` for asset unlock tx - there's 4 MNs + 3 evo nodes instead 3 MNs as before: evo nodes requires to have IS to be active ## How Has This Been Tested? Run unit/functional tests ## Breaking Changes Asset Unlock tx uses correct quorum "106 llmq_test_platform" on reg test instead "100 llmq_test" ## Checklist: - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [x] 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 --- src/chainparams.cpp | 5 --- src/consensus/params.h | 1 - src/evo/assetlocktx.cpp | 2 +- test/functional/feature_asset_locks.py | 45 +++++++++++++++---- .../test_framework/test_framework.py | 1 + 5 files changed, 39 insertions(+), 15 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 9e485057de75e..05eb2738c516e 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -284,7 +284,6 @@ class CMainParams : public CChainParams { consensus.llmqTypeDIP0024InstantSend = Consensus::LLMQType::LLMQ_60_75; consensus.llmqTypePlatform = Consensus::LLMQType::LLMQ_100_67; consensus.llmqTypeMnhf = Consensus::LLMQType::LLMQ_400_85; - consensus.llmqTypeAssetLocks = consensus.llmqTypePlatform; fDefaultConsistencyChecks = false; fRequireStandard = true; @@ -477,7 +476,6 @@ class CTestNetParams : public CChainParams { consensus.llmqTypeDIP0024InstantSend = Consensus::LLMQType::LLMQ_60_75; consensus.llmqTypePlatform = Consensus::LLMQType::LLMQ_25_67; consensus.llmqTypeMnhf = Consensus::LLMQType::LLMQ_50_60; - consensus.llmqTypeAssetLocks = consensus.llmqTypePlatform; fDefaultConsistencyChecks = false; fRequireStandard = false; @@ -653,7 +651,6 @@ class CDevNetParams : public CChainParams { consensus.llmqTypeDIP0024InstantSend = Consensus::LLMQType::LLMQ_DEVNET_DIP0024; consensus.llmqTypePlatform = Consensus::LLMQType::LLMQ_DEVNET_PLATFORM; consensus.llmqTypeMnhf = Consensus::LLMQType::LLMQ_DEVNET; - consensus.llmqTypeAssetLocks = consensus.llmqTypePlatform; UpdateDevnetLLMQChainLocksFromArgs(args); UpdateDevnetLLMQInstantSendFromArgs(args); @@ -735,7 +732,6 @@ class CDevNetParams : public CChainParams { void UpdateDevnetLLMQPlatform(Consensus::LLMQType llmqType) { consensus.llmqTypePlatform = llmqType; - consensus.llmqTypeAssetLocks = llmqType; } /** @@ -940,7 +936,6 @@ class CRegTestParams : public CChainParams { consensus.llmqTypeDIP0024InstantSend = Consensus::LLMQType::LLMQ_TEST_DIP0024; consensus.llmqTypePlatform = Consensus::LLMQType::LLMQ_TEST_PLATFORM; consensus.llmqTypeMnhf = Consensus::LLMQType::LLMQ_TEST; - consensus.llmqTypeAssetLocks = Consensus::LLMQType::LLMQ_TEST; UpdateLLMQTestParametersFromArgs(args, Consensus::LLMQType::LLMQ_TEST); UpdateLLMQTestParametersFromArgs(args, Consensus::LLMQType::LLMQ_TEST_INSTANTSEND); diff --git a/src/consensus/params.h b/src/consensus/params.h index 5962b2028e0d6..2162993049721 100644 --- a/src/consensus/params.h +++ b/src/consensus/params.h @@ -163,7 +163,6 @@ struct Params { LLMQType llmqTypeDIP0024InstantSend{LLMQType::LLMQ_NONE}; LLMQType llmqTypePlatform{LLMQType::LLMQ_NONE}; LLMQType llmqTypeMnhf{LLMQType::LLMQ_NONE}; - LLMQType llmqTypeAssetLocks{LLMQType::LLMQ_NONE}; int DeploymentHeight(BuriedDeployment dep) const { diff --git a/src/evo/assetlocktx.cpp b/src/evo/assetlocktx.cpp index caf7a3e5fd493..03480ca9948a9 100644 --- a/src/evo/assetlocktx.cpp +++ b/src/evo/assetlocktx.cpp @@ -114,7 +114,7 @@ bool CAssetUnlockPayload::VerifySig(const uint256& msgHash, gsl::not_nullScanQuorums(llmqType, pindexTip, 2); diff --git a/test/functional/feature_asset_locks.py b/test/functional/feature_asset_locks.py index 465a363f2ae88..a96c071f507e8 100755 --- a/test/functional/feature_asset_locks.py +++ b/test/functional/feature_asset_locks.py @@ -45,13 +45,13 @@ hex_str_to_bytes, ) -llmq_type_test = 100 +llmq_type_test = 106 # LLMQType::LLMQ_TEST_PLATFORM tiny_amount = int(Decimal("0.0007") * COIN) blocks_in_one_day = 576 class AssetLocksTest(DashTestFramework): def set_test_params(self): - self.set_dash_test_params(5, 3) + self.set_dash_test_params(6, 4, evo_count=3) def skip_test_if_missing_module(self): self.skip_if_no_wallet() @@ -98,7 +98,9 @@ def create_assetunlock(self, index, withdrawal, pubkey=None, fee=tiny_amount): request_id = hash256(request_id_buf)[::-1].hex() height = node_wallet.getblockcount() + self.log.info(f"Creating asset unlock: {llmq_type_test} {request_id}") quorumHash = mninfo[0].node.quorum("selectquorum", llmq_type_test, request_id)["quorumHash"] + self.log.info(f"Used quorum hash: {quorumHash}") unlockTx_payload = CAssetUnlockTx( version = 1, index = index, @@ -235,8 +237,35 @@ def run_test(self): node = self.nodes[1] self.set_sporks() - self.activate_v20() + self.activate_v19(expected_activation_height=900) + self.log.info("Activated v19 at height:" + str(node.getblockcount())) + + # TODO: need to refactor this part to common code + # enabling instantsend -> 3 rotating quorums -> new 103 quorum + # with following dynamically adding evo nodes one-by-one seems + # as little too much complex for functional test (each which use Evo nodes) + self.nodes[0].sporkupdate("SPORK_2_INSTANTSEND_ENABLED", 0) + self.wait_for_sporks_same() + + self.move_to_next_cycle() + self.log.info("Cycle H height:" + str(self.nodes[0].getblockcount())) + self.move_to_next_cycle() + self.log.info("Cycle H+C height:" + str(self.nodes[0].getblockcount())) + self.move_to_next_cycle() + self.log.info("Cycle H+2C height:" + str(self.nodes[0].getblockcount())) + + self.mine_cycle_quorum(llmq_type_name='llmq_test_dip0024', llmq_type=103) + + for i in range(3): + self.dynamically_add_masternode(evo=True) + node.generate(8) + self.sync_blocks() + + self.set_sporks() + self.activate_v20() + node.generate(1) + self.sync_all() self.mempool_size = 0 key = ECKey() @@ -253,13 +282,13 @@ def run_test(self): coin = coins.pop() asset_lock_tx = self.create_assetlock(coin, locked_1, pubkey) + self.check_mempool_result(tx=asset_lock_tx, result_expected={'allowed': True}) self.validate_credit_pool_balance(0) txid_in_block = self.send_tx(asset_lock_tx) assert "assetLockTx" in node.getrawtransaction(txid_in_block, 1) self.validate_credit_pool_balance(0) node.generate(1) - assert_equal(self.get_credit_pool_balance(node=node_wallet), 0) assert_equal(self.get_credit_pool_balance(node=node), locked_1) self.log.info("Generate a number of blocks to ensure this is the longest chain for later in the test when we reconsiderblock") node.generate(12) @@ -295,7 +324,7 @@ def run_test(self): self.create_and_check_block([extra_lock_tx], expected_error = 'bad-cbtx-assetlocked-amount') self.log.info("Mine a quorum...") - self.mine_quorum() + self.mine_quorum(llmq_type_name='llmq_test_platform', llmq_type=106, expected_connections=2, expected_members=3, expected_contributions=3, expected_complaints=0, expected_justifications=0, expected_commitments=3 ) self.validate_credit_pool_balance(locked_1) @@ -345,7 +374,7 @@ def run_test(self): reason = "double copy") self.log.info("Mining next quorum to check tx 'asset_unlock_tx_late' is still valid...") - self.mine_quorum() + self.mine_quorum(llmq_type_name="llmq_test_platform", llmq_type=106) self.log.info("Checking credit pool amount is same...") self.validate_credit_pool_balance(locked_1 - 1 * COIN) self.check_mempool_result(tx=asset_unlock_tx_late, result_expected={'allowed': True}) @@ -365,7 +394,7 @@ def run_test(self): result_expected={'allowed': False, 'reject-reason' : 'bad-assetunlock-too-late'}) self.log.info("Checking that two quorums later it is too late because quorum is not active...") - self.mine_quorum() + self.mine_quorum(llmq_type_name="llmq_test_platform", llmq_type=106) self.log.info("Expecting new reject-reason...") self.check_mempool_result(tx=asset_unlock_tx_too_late, result_expected={'allowed': False, 'reject-reason' : 'bad-assetunlock-not-active-quorum'}) @@ -423,7 +452,7 @@ def run_test(self): self.log.info("Fast forward to the next day to reset all current unlock limits...") self.slowly_generate_batch(blocks_in_one_day + 1) - self.mine_quorum() + self.mine_quorum(llmq_type_name="llmq_test_platform", llmq_type=106) total = self.get_credit_pool_balance() while total <= 10_900 * COIN: diff --git a/test/functional/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py index c390078abb5df..e92a13da2e649 100755 --- a/test/functional/test_framework/test_framework.py +++ b/test/functional/test_framework/test_framework.py @@ -1155,6 +1155,7 @@ def create_simple_node(self): for i in range(0, idx): self.connect_nodes(i, idx) + # TODO: to let creating Evo Nodes without instant-send available def dynamically_add_masternode(self, evo=False, rnd=None, should_be_rejected=False): mn_idx = len(self.nodes) From acd3ce7783cf9ab2feb68594a26c5795eeb9d805 Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Sun, 7 Jan 2024 04:27:26 +0300 Subject: [PATCH 3/8] fix: ignore triggers from the past when voting (#5798) ## Issue being fixed or feature implemented we should not vote on triggers from the past ## What was done? ## 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 _(for repository code-owners and collaborators only)_ --- src/governance/governance.cpp | 5 +++++ test/functional/feature_governance.py | 23 ++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/governance/governance.cpp b/src/governance/governance.cpp index 25dff9e48e6f8..def0bc1b5b923 100644 --- a/src/governance/governance.cpp +++ b/src/governance/governance.cpp @@ -738,6 +738,11 @@ void CGovernanceManager::VoteGovernanceTriggers(const std::optionalGetGovernanceObject(*this)->GetHash(); + if (trigger->GetBlockHeight() <= nCachedBlockHeight) { + // ignore triggers from the past + LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s Not voting NO-FUNDING for outdated trigger:%s\n", __func__, trigger_hash.ToString()); + continue; + } if (trigger_hash == votedFundingYesTriggerHash) { // Skip actual trigger LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s Not voting NO-FUNDING for trigger:%s, we voted yes for it already\n", __func__, trigger_hash.ToString()); diff --git a/test/functional/feature_governance.py b/test/functional/feature_governance.py index 3b076aa960dc7..0169896694a60 100755 --- a/test/functional/feature_governance.py +++ b/test/functional/feature_governance.py @@ -303,13 +303,34 @@ def sync_gov(node): self.check_superblockbudget(True) self.check_superblock() + # Move a few block past the recent superblock height and make sure we have no new votes + for _ in range(5): + with self.nodes[1].assert_debug_log("", [f"Voting NO-FUNDING for trigger:{winning_trigger_hash} success"]): + self.nodes[0].generate(1) + self.bump_mocktime(1) + self.sync_blocks() + # Votes on both triggers should NOT change + assert_equal(self.nodes[0].gobject("list", "valid", "triggers")[winning_trigger_hash]['NoCount'], 1) + assert_equal(self.nodes[0].gobject("list", "valid", "triggers")[isolated_trigger_hash]['NoCount'], self.mn_count - 1) + + block_count = self.nodes[0].getblockcount() + n = sb_cycle - block_count % sb_cycle + + # Move remaining n blocks until the next Superblock + for i in range(n): + self.nodes[0].generate(1) + self.bump_mocktime(1) + self.sync_blocks() + assert_equal(self.nodes[0].getblockcount(), 260) + assert_equal(self.nodes[0].getblockchaininfo()["softforks"]["v20"]["bip9"]["status"], "active") + # Mine and check a couple more superblocks for i in range(2): for _ in range(20): self.nodes[0].generate(1) self.bump_mocktime(1) self.sync_blocks() - assert_equal(self.nodes[0].getblockcount(), 240 + (i + 1) * 20) + assert_equal(self.nodes[0].getblockcount(), 260 + (i + 1) * 20) assert_equal(self.nodes[0].getblockchaininfo()["softforks"]["v20"]["bip9"]["status"], "active") self.check_superblockbudget(True) self.check_superblock() From eab0656075c17cd6c2de8e61c09ae095acf04a4e Mon Sep 17 00:00:00 2001 From: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com> Date: Sat, 6 Jan 2024 19:26:52 -0600 Subject: [PATCH 4/8] Merge pull request #5797 from knst/builder-keys chore: update builder keys for pasta, udjin --- contrib/builder-keys/pasta.pgp | 74 ++++++++++----- contrib/builder-keys/udjinm6.pgp | 151 +++++++++++++++++++++++++------ 2 files changed, 174 insertions(+), 51 deletions(-) diff --git a/contrib/builder-keys/pasta.pgp b/contrib/builder-keys/pasta.pgp index f53bcec2bfa69..018162fd70a30 100644 --- a/contrib/builder-keys/pasta.pgp +++ b/contrib/builder-keys/pasta.pgp @@ -24,29 +24,53 @@ lcEDLINaz1xuHAtAxqTQKMYCP1xtd5rhGOe1FkGfVYEJX97+JgMGa8+2nD5+A6wG 0+JaJllqzfXY1VhNoVmfS/hFPQ+t/84jNSGR5Kn956C5MvTK65VumH+NRE59kpt1 nsIQNKu/v6fZUnbRtCFC05BSwIjoTzFvKXycJkCVjdSYARWkagki4bbFC1WZQuA9 BOF5TOUAYt6zaEBfAJgjeRT71Mr03eNExXaLm9k/hmvapGpmtJQhLY6NKPm/ctyf -IaEz/bkCDQRdVC8lARAAu64IaLWAvMStxVsC/+NnwBBxYPef4Iq5gB5P1NgkmkD+ -tyohWVnzdN/hwVDX3BAXevF8M+y6MouUA9IxJRt2W9PK06ArTdwhFpiam2NAO5OO -UhuJ1F8eAhRQ5VvI8MbVttZKSk3LiCmXGSj5UUXEFKS1B7WztZVwqG6YswoAPwbN -erZuwYbH2gfa9LK+av1cdZ8tnDaVmZWL8z1xSCyfRa/UAtZht/CEoTvAwXJ6CxVU -BngIlqVnK0KvOrNzol2m5x4NgPcdtdDlrTQE+SpqTKjyroRe27D+atiO6pFG/TOT -kx4TWXR07YTeZQJT/fntV409daIxEgShD0md7nJ7rVYy8u+9Z4JLlt2mtnsUKHez -o1Axrlri05cewPVYQLuJND/5e2X9UzSTpY3NubQAtkD1PpM5JeCbslT9PcMnRuUy -dZbhn7ieW0b57uWpOpE11s2eIJ5ixSci4mSJE9kW+IcCic/PPoD1Rh2CvFTBPl/b -sw6Bzw64LMflPjgWkR7NVQb1DETfXo5C2A/QU6Z/o7O4JaAeAoGki/sCmeAi5W+F -1kcjPk/L/TXM6ZccMytVQOECYBOYVUxZ2VbhknKOcSFQcpk8bj2xsD1xX2EYhkXc -CQkvutIgHGz/dt6dtvcaaL85krWD/y8h68TTFjQXK0+g8gcpexfqTMcLnF7pqEEA -EQEAAYkCPAQYAQgAJhYhBClZA2Lsh4qB/TwgK1JSe+2r6HmEBQJdVC8lAhsMBQkD -w8drAAoJEFJSe+2r6HmEDzEP/A8H3JkeSa/03kWvudFloVbGbfvP+XkKvGnAZPGH -z3ne/SV2tcXljNgU15xHvLktI4GluEfJxRPUqvUal1zOR9hqpas0vX8gsf0r0d3o -m2DHCyMY8GscfDF05Y8fqf0nU5/oLDlwwp11IyW8BDLSwwANsTLZ1ysukfYc4hoo -pU71/wdAl85fae7I2QRduImWlMADfUtc9Orfb1tAhPtaCJVZj5vgfUNSZOTUJ73R -GbdL3Z2dc42lO3mRMyDkPdykkq0EgOo6zZLuHZQFhxTzWIWeUT8vWNjpkdTeRHLv -v3cwPRx1k1atrM+pE9YkhCg0EOMTcmN+FMekgnU+ee0cibn5wWOvE05zwRKYROx3 -4va2U6TUU6KkV3fFuq3qqkXaiMFauhI1lSFGgccg7BCNMhbBpOBkfGI3croFGSm2 -pTydJ87/+P9C9ecOZSqCE7Zt5IfDs/xV7DjxBK99Z5+RGxtsIpNlxpsUvlMSsxUN -hOWyiCKr6NIOfOzdLYDkhHcKMqWGmc1zC3HHHuZvX5u6orTyYXWqc8X5p3Kh7Qjf -/ChtN2P6SCOUQquEvpiY5J1TdmQSuoqHzg3ZrN+7EOKdnUH7y1KB7iTvgQ07lcHn -AMbkFDcpQA+tAMd99LVNSXh8urXhJ/AtxaJbNbCSvpkOGB4WHLy/V+JdomFC9Pb3 -oPei -=42dS +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 +u+HE6D2rqvc0CA1wAreY5+lD96PbmOAjnA== +=lPi0 -----END PGP PUBLIC KEY BLOCK----- diff --git a/contrib/builder-keys/udjinm6.pgp b/contrib/builder-keys/udjinm6.pgp index 3a1fdbd4610ab..4deb906cd28c0 100644 --- a/contrib/builder-keys/udjinm6.pgp +++ b/contrib/builder-keys/udjinm6.pgp @@ -1,5 +1,4 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Comment: GPGTools - https://gpgtools.org mQINBFUkMgoBEAD5lFzlr4fIR3CKlsgx1KXLNR+1+IIe3AT8YloMq3rlvylOTgGl j1PTeQL0eHH+fD3ukSHHiZC7FcY2aC3vTPCd16+OO+ii/Nfx6vAyve2RiTA4brKi @@ -24,29 +23,129 @@ yh9Zp89d2J/C+okWdwOU/fvl+vIdXaDudgxXCYEq/xiVpj1mkNFgoPo0Fk3PetFh PI9FwbAL6Izy7lE3CZZ8jCSzC8dvH2tOmc7dn9QMtj+0jvYBxyCAU6EWtfdZodL5 lTt7H1zoggYcvdhNAEYcClunZVyDvd/hwroQxQXy5qkNVXzJOs+emUMQFOMZKX52 eKl52Gp+UV91VAqmlf5N+60G8wDDhsHj62v+G1HtPFNNNZZYIYlbn/jx+AmjVbED -f4cVdhXOw/rUQoAJNrMghUyymBlrWKCg9fRVatVGuQINBFUkMgoBEACigJW8hY3w -TXIj+HOSaGIg7PxjcJgIdfU72SvTw3JiEPIp++mL6cosPTvle3wnchP/Tfj6fJ1T -L/h2ERBNeCrGVWTIYtqC5K7WtTe56sChzXIIdDhPzze8hlJ3avd4awoAzYU6XwQD -G9bQLFZY107ipcSoIPtnm85wkkfVn1O9tNvJDQaDGrNWfqK5F6ZJztgTnFlD/DUo -a6MQXV4NiNpPsPcxjZi61jrCvqaghVmN8RDm8st3uOzHGIgGGF2NyH29kEmmuEcw -0Dve8ikHD1lGG6ZmxAgCKsbGc6P8wgmU8eXNM7D47iqQsWWP6GMfCuaKZtHHXDed -VbDpdmChpqR3fpcsHOobmli/rkhbKXbIWrn4byCWf53grH+z+XWWqIlHfNUbxDGq -LOGSDG+RQWUiqgBcE2wD7t8NFIVtiTwpjTqYRXp0jWwi4898arWf5aTMuu4vsSWO -5L9UTW0l1nWSK9psCzAyfHarWnMAPwNO/Zcv83uoju8jQEkHu/IHe/0QndbTvezy -t8cmi7NpUdXx4fDyszwcRynqC48gjNzR9SRRjrWpxabm8Ac8ldjUoRvFs8JCJk/5 -6C6oTjPwhGPFugnTGm4aE1Iwz0RdfBFZ0pSpFY+5Pidoe7e/z/wspXDIaxda+bVL -OVHuPNtNnWBaDXzbDeG/HY0pNdR4zK8t0QARAQABiQIlBBgBCgAPBQJVJDIKAhsM -BQkHhh+AAAoJEINZK9FADVjZdAYP/1CF9bCRyGTLmKXFGv34hwbKlswS2Uuwyt9K -RJPX6rWmIx9KfGokTc+cnlODyrkKV0bpS9eVScuXlV59Y91EtyCWIQ6y29FW0vw2 -qI4v43gz5wPeIMOFRlutTwnnDodp3PRoWKmjduXokIG/N4ZknJ42AREheEQJFLSG -Yx/jcCVPFMXDXe0UDrqZI+HiagMb2asmDFYAELu/GtBc1zMtJBwvoYt2cQm3AqI6 -S1aQLRVGp3crqdg0cJ1X0+VrjfcWbf8XljK6LuobssaIgEoKR5nNMhbOTYfMwFn2 -4vx6MgQ3ihuOgOLazGB/rSdSXNqx5525rmFInkgPUMfpWqRQqDMJi52Z6itQxlmY -igg7ZyyZOYSKbB7GDevO3cBw6EjwPXlcWp0mb99sjhAQESEXA7bC4YW4dIEE+1zI -shA6M3oA2cO0ee2gTyY4nUDF7QAp0psPV6FANfpDjQ5/hvq+JHWJ+Arj0LszQZEd -VpxkfJjO/+r0KOjQoBeABaEMuPTJmC9qV5bm8BFKNR6kx6ZsExYhkC8d9WGqX+aS -07ElEHpmuuc/bw9y/45HBO8ZijIJZ+zlM6IojCOcjx1WFSEW9eAW+FyF+B6EJbVA -PGrsb1tnDgItwV3m5HoEvNU3yrTPfIgsFFXKPe/BvRLroNNN1493gu8oxKEuroFO -8/LeBIb/ -=q31t +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 +=nhGw -----END PGP PUBLIC KEY BLOCK----- From 3796c4b616d9fe6c8cba281d3141433a0c0309b1 Mon Sep 17 00:00:00 2001 From: Konstantin Akimov Date: Thu, 11 Jan 2024 01:12:41 +0700 Subject: [PATCH 5/8] chore: drop version from README.md which is not really useful (#5811) ## What was done? drop version from README.md which is not really useful. And we will care about one less thing during each release ## 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 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 75dc9e847a858..e259b725187f0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Dash Core staging tree 18.0 +Dash Core staging tree =========================== |CI|master|develop| From cbef7f211691e2ccff0b5cfd19acf344edb459cc Mon Sep 17 00:00:00 2001 From: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com> Date: Thu, 11 Jan 2024 09:38:43 -0600 Subject: [PATCH 6/8] =?UTF-8?q?feat:=20use=20a=20self-signed=20windows=20c?= =?UTF-8?q?ode=20signing=20certificate=20instead=20of=20e=E2=80=A6=20(#581?= =?UTF-8?q?4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 ## Issue being fixed or feature implemented Implement a new code-singing certificate for windows. Previously we used a certificate issued by DigiCert, however that certificate recently expired. A renewed certificate would cost roughly $200/year at the cheapest CAs and $370/year with DigiCert. EV certificates are relatively novel types of certificates that start out with positive reputation, reducing smart screen popups for users. EV certificates start at $270/year. As a result we had (/have) 4 options: 1. Get a new code signing certificate from a trusted CA - - Pro: Certificate gains reputation over time in smart screen and binaries are signed - - Pro: Shows "Verified Publisher" and "Dash Core Group Inc" on install - - Con: Costs, feels manipulative to pay at least $600 simply for someone to sign a certificate 2. Get a new EV code signing certificate - - Pro: Certificate starts with good reputation and gains reputation over time - - Con: Even greater costs for a signature that says that we are from Dash Core Group 3. Continue signing with the expired certificate - - Con: This is, it has been discovered, a terrible idea and these binaries are treated worse than unsigned binaries 4. Deliver unsigned windows binaries - - Pro: Binary will gain reputation over time as users download it - - Pro: Easy, is what it says on the tin - - Con: Binaries are completely unsigned, could be tampering or corruption issues that go undetected - - Con: Will visibly state "Unknown Publisher" 5. Deliver self-signed windows binaries - - Pro: Binary will gain reputation over time as users download it - - Pro: *Possibility* that certificate will gain reputation over time as users download binaries signed by it. It may also be that only certificates issued by a CA will gain reputation over time. - - Pro: Binaries are still signed - - Pro: Users have the option to import certificate into keychain to remove "Unknown Publisher" - - Pro: In limited testing, install is sometimes is treated better than unsigned, otherwise is treated the same - - Con: may appear sketchy, as Root CA is not a trusted Root CA - - Con: will display "Unknown Publisher" to most users - - Con: greater potential uncertainty around future changes to treatment of self signing systems Based on the above discussion and testing, the best route currently is option 5; that is what this PR implements. In the future it may make sense to move towards a codesigning certificate issued by a trusted CA. The root certificate authority has the following information ![image](https://github.com/dashpay/dash/assets/6443210/66a90588-9bd9-4fe5-902c-04e8d1e47b6f) with a sha256 fingerprint of `46 84 FF 27 11 D7 C8 C5 BB FA D1 55 41 B3 F0 43 77 97 AC 67 4C 32 19 AE B4 E7 15 11 1F BB 42 A0` The code signing certificate is issued by the root CA, has a common name of "Dash Core Windows Signing" and a sha256 fingerprint of `1A 09 54 6E D3 81 E9 FC AD 62 44 32 35 40 39 FF 5F A7 30 0E 5E 03 C4 E0 96 5A 62 AA 19 2B 79 EE`. This certificate is only authorized for the purpose of code signing. ## What was done? ## How Has This Been Tested? Multiple users installing binaries of type 1,3,4 and 5. ## Breaking Changes This new windows signing certificate should be documented in the release notes. ## 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)_ -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEKVkDYuyHioH9PCArUlJ77avoeYQFAmWfAbUACgkQUlJ77avo eYTSCBAAuDEoWABdonIMs/4RaYP+DGTULltRu9CHBAqYuksXrl/4iV0r17DPSWWW L/5vLNAUTI47Tsa7R45ZPb0hR8VPMBkvxTQipKBYK7vZpwefcR4VOprEBJJ0Bl3g ZHtAVjZbcANEIAW3SlaiOgWbxWGKfDyM7gN3aNfoidMFBefbcYKEttuAGCnktWRI Y3eLMGPCpxOVB0O1nLU+pzwixAWXOeVChiK31ecFfQrF3JmUc12yiFUI+OJTogg4 0G2GMIQYHiVwclj8hSWT/yZfjcyxXdLYqkmH4Nr5mye39hRI2aUQEkmkYOy8pjcB ykKLg8JpUg/zg6GSuS6mFJnd5NHq5iSBxSRHPfR8xij1xFpmdgAaNCw4/6j9PEXB l8cfuJ7hgX3yX09L4p2E4t7MYpM8igaenAIWAK37hmKs1WADBmaj/nf6ThKhjvzI 2GR0FOzm6Is36KYvdUQJDE0g70g31SvGy+qjlcK49MtX6BvecYt+dg8AaNZ5FIn7 d1kFI4NXM6JX2WdiHMenz5d+oFYRS/P1sXjQ1wtl9HSkiZQQkEBbgiWXfh+EXjpW fNc8cej2LLCNZlhVcpffF8UaINsMTZVQsEGWGInjSi5eCs/YNrqL8XDdC/8mmZCu cNvp0QBtQ+4lpbUSdhFUdgic0MRCsdeHuYIBfvPJN9tl8McbknA= =kL6E -----END PGP SIGNATURE----- --- contrib/windeploy/win-codesign.cert | 103 +++++++--------------------- 1 file changed, 25 insertions(+), 78 deletions(-) diff --git a/contrib/windeploy/win-codesign.cert b/contrib/windeploy/win-codesign.cert index d022284b3150b..b38a7880e96f8 100644 --- a/contrib/windeploy/win-codesign.cert +++ b/contrib/windeploy/win-codesign.cert @@ -1,82 +1,29 @@ -----BEGIN CERTIFICATE----- -MIIFNTCCBB2gAwIBAgIQC8hE/HYFbdaSbMDoQg3bdDANBgkqhkiG9w0BAQsFADBy -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQg -SUQgQ29kZSBTaWduaW5nIENBMB4XDTIwMDgxMzAwMDAwMFoXDTIzMDgxODEyMDAw -MFowcjELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNj -b3R0c2RhbGUxHTAbBgNVBAoTFERhc2ggQ29yZSBHcm91cCBJbmMuMR0wGwYDVQQD -ExREYXNoIENvcmUgR3JvdXAgSW5jLjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBAJ5yx72CIbnZYYovXBg3YctSF7NEOeWqM6SDnwpLjCMXt8HKdKyte8/r -xxNxkwAvenF34gkzyJD9wRggbrNmtgg/zaT3xa0RUC9y7uxvBRHJ9nSskbRV5Ljp -v+KTBiekJ/M95Xt0rGYLT76OE2QvWv7fS15JJ7h0F+ReFRvUFlj2HqewTCwYqu0c -OIKhHs8I4EEHzMkIfVEEKlzpIfGwndRPmMxrq/6RXpQlrTo9tIA10KiyhQx1sNRu -bkWjXEw1SBK63F4Xj8ZaIdlDj3vwEE16Ltk2Nr+eX68gDwyCe9TQ2D7O4rrFEh8f -nEp7hcY7BoLc95COYKtWhj8mnC0obBECAwEAAaOCAcUwggHBMB8GA1UdIwQYMBaA -FFrEuXsqCqOl6nEDwGD5LfZldQ5YMB0GA1UdDgQWBBRVtnOXT2wps7EH/GWYwlg9 -XLnMxDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYDVR0f -BHAwbjA1oDOgMYYvaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJl -ZC1jcy1nMS5jcmwwNaAzoDGGL2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEy -LWFzc3VyZWQtY3MtZzEuY3JsMEwGA1UdIARFMEMwNwYJYIZIAYb9bAMBMCowKAYI -KwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQQB -MIGEBggrBgEFBQcBAQR4MHYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2lj -ZXJ0LmNvbTBOBggrBgEFBQcwAoZCaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29t -L0RpZ2lDZXJ0U0hBMkFzc3VyZWRJRENvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB -/wQCMAAwDQYJKoZIhvcNAQELBQADggEBAJ/3uaSW1E3Cp17UlHk6K9NrSYmq6h4x -0FQYvcPc4lYZincDZKElDkClncYAl+FHVLJ2qBBuBF1PU96/PnG5iwROC707jJEs -p8SlHfMIiiKMq/HIMAekVNBUnbnUxFZJTEX20p9kEIBBu9A1JJ6a1tYtp7fh+INr -lLi3f0P8JNGUgWog+a/n+Icd/3tJ6fsOnrG8jCa11OGjpMegpvPvSh5YzembF0CC -WS6tOu6DbMcceQ6pFniD5MTwiF6Ye6cSLBCwD2SUyzganIZgz5m7XXX/xfjBkLbL -SQw/P5F1pHZCyyY+evH9Fjm7YAqwfpkVMJDp/XMaht2dxuhyCn70wgk= +MIICMjCCAbigAwIBAgIULx0qs9qjM500eqn6THPK0KrYDI4wCgYIKoZIzj0EAwIw +YDELMAkGA1UEBhMCVVMxHTAbBgNVBAoMFERhc2ggQ29yZSBHcm91cCBJbmMuMREw +DwYDVQQDDAhkYXNoLm9yZzEfMB0GCSqGSIb3DQEJARYQaW5mb3NlY0BkYXNoLm9y +ZzAeFw0yNDAxMDkyMjMwMzFaFw0yNzAxMDgyMjMwMzFaMCQxIjAgBgNVBAMMGURh +c2ggQ29yZSBXaW5kb3dzIFNpZ25pbmcwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATT +Y9lr0wAD43uUey32F2QOeyCohNg470gWCl2tBgZwg73EKjz1FX/vPcFfdq3C7JiU +mRkYkkVZyvcOebMVOkDbxpH5lEZRAr3f0yDc0UytDlJi2032RnZoRl5d3e9Xv4ej +bzBtMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMD +MB0GA1UdDgQWBBR+bbN2rRZFkoX3xuTOPRSse9AWwzAfBgNVHSMEGDAWgBSIe1dn +E+OEffr+P5AdH0enMXtqizAKBggqhkjOPQQDAgNoADBlAjEA+AO2SVgxzDmPENHl +CS/784XSRC2MBlCwlsIdD8Jti3MNCpvmJiLpuE6HHsKOFxWPAjBlyqgJXyiM30/8 +AU0qiBlnU9LhmYu1vKbfXweuAve83XVDScaGLPuqqXFp3KTNnjs= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkqhkiG9w0BAQsFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAwWjByMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBT -aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8O -Ea9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq -8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRp -wsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6scKKrzn/p -fMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3 -jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg0A9kczye -n6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV -HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYIKwYBBQUHAQEEbTBr -MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUH -MAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ -RFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj -ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6 -Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww -TwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v -d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsq -CqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgP -MA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2qB1dHC06GsTvMGHX -fgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4QpO4/cY5jDhNLrddf -RHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8Al -EeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/DmZAwlCEIysjaKJAL+ -L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8 -B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHv ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -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 +4XDDnlfcKom9Z5npK05shbgE2fAGpg== -----END CERTIFICATE----- From 722206c1256ebd70daa891ce94370f3a4596059f Mon Sep 17 00:00:00 2001 From: Konstantin Akimov Date: Wed, 10 Jan 2024 20:38:38 +0700 Subject: [PATCH 7/8] docs: release notes for 20.0.4 and archiving old one --- doc/release-notes.md | 31 ++-- .../dash/release-notes-20.0.3.md | 138 ++++++++++++++++++ 2 files changed, 156 insertions(+), 13 deletions(-) create mode 100644 doc/release-notes/dash/release-notes-20.0.3.md diff --git a/doc/release-notes.md b/doc/release-notes.md index 9f5b1a83f0535..d0175797a7fa8 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,4 +1,4 @@ -# Dash Core version v20.0.3 +# Dash Core version v20.0.4 Release is now available from: @@ -35,24 +35,29 @@ reindex or re-sync the whole chain. # Notable changes -## Masternode fix +## Build changes -The memory usage during the old quorum data cleanup mechanism was reduced. +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. -## Wallet fix +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. -A fix has been implemented for the reported decryption of wallets. +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. -## RPC changes +## Governance -In `getspecialtxes` `instantlock` and `chainlock` fields are reflecting actual values now. +Triggers from the past are now ignored when voting. -## Other changes +## Asset lock and unlock transactions -Implemented improvements in Github CI and build system for macOS. Fixed compilation issues on FreeBSD. +Use the correct quorum for signing withdrawal (asset unlock) txes on RegTest. - -# v20.0.3 Change log +# v20.0.4 Change log See detailed [set of changes][set-of-changes]. @@ -61,7 +66,6 @@ See detailed [set of changes][set-of-changes]. Thanks to everyone who directly contributed to this release: - Konstantin Akimov (knst) -- Odysseas Gabrielides (ogabrielides) - PastaPastaPasta - UdjinM6 @@ -90,6 +94,7 @@ 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 @@ -135,4 +140,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.2...dashpay:v20.0.3 +[set-of-changes]: https://github.com/dashpay/dash/compare/v20.0.3...dashpay:v20.0.4 diff --git a/doc/release-notes/dash/release-notes-20.0.3.md b/doc/release-notes/dash/release-notes-20.0.3.md new file mode 100644 index 0000000000000..9f5b1a83f0535 --- /dev/null +++ b/doc/release-notes/dash/release-notes-20.0.3.md @@ -0,0 +1,138 @@ +# Dash Core version v20.0.3 + +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 + +## Masternode fix + +The memory usage during the old quorum data cleanup mechanism was reduced. + +## Wallet fix + +A fix has been implemented for the reported decryption of wallets. + +## RPC changes + +In `getspecialtxes` `instantlock` and `chainlock` fields are reflecting actual values now. + +## Other changes + +Implemented improvements in Github CI and build system for macOS. Fixed compilation issues on FreeBSD. + + +# v20.0.3 Change log + +See detailed [set of changes][set-of-changes]. + +# Credits + +Thanks to everyone who directly contributed to this release: + +- Konstantin Akimov (knst) +- Odysseas Gabrielides (ogabrielides) +- 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.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.2...dashpay:v20.0.3 From 935ea8fed3207d6d9c2aac326d2e040ef74e2dae Mon Sep 17 00:00:00 2001 From: Konstantin Akimov Date: Wed, 10 Jan 2024 20:44:30 +0700 Subject: [PATCH 8/8] chore: bump version to 20.0.4 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 1231545a1408f..ba5c875b7894b 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ AC_PREREQ([2.69]) define(_CLIENT_VERSION_MAJOR, 20) define(_CLIENT_VERSION_MINOR, 0) -define(_CLIENT_VERSION_BUILD, 3) +define(_CLIENT_VERSION_BUILD, 4) define(_CLIENT_VERSION_RC, 0) define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2023)