Skip to content

Commit 9c4e772

Browse files
Merge #6669: feat: define BIP 9 fork DEPLOYMENT_V23 for new version featureset
98749a7 feat: define BIP 9 fork `DEPLOYMENT_V23` for new version featureset (Kittywhiskers Van Gogh) Pull request description: ## Motivation Should handle the deployment needs for [dash#6662](#6662) and [dash#6665](#6665) as they're expected to be shipped in the same major version. ## Breaking Changes None expected. ## Checklist - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)** - [x] I have added or updated relevant unit/integration/functional/e2e tests - [x] I have made corresponding changes to the documentation **(note: N/A)** - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: UdjinM6: utACK 98749a7 PastaPastaPasta: utACK 98749a7 Tree-SHA512: b61302a0bcf236f06661a4a53f1d7b3ab0f65659c1c9ab2fcb782457a25eb1e6bdc942647dca6a4e22686e0c7cc83405e099e1fa790cf007d2bee3eedc456d5f
2 parents 06de2b0 + 98749a7 commit 9c4e772

File tree

5 files changed

+53
-0
lines changed

5 files changed

+53
-0
lines changed

src/chainparams.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,15 @@ class CMainParams : public CChainParams {
217217
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
218218
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
219219

220+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].bit = 12;
221+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nStartTime = 1751328000; // July 1, 2025
222+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nTimeout = 1782864000; // July 1, 2026
223+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nWindowSize = 4032;
224+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nThresholdStart = 3226; // 80% of 4032
225+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nThresholdMin = 2420; // 60% of 4032
226+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nFalloffCoeff = 5; // this corresponds to 10 periods
227+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].useEHF = true;
228+
220229
// The best chain should have at least this much work.
221230
consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000a39050764808db046f5c"); // 2216986
222231

@@ -414,6 +423,15 @@ class CTestNetParams : public CChainParams {
414423
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
415424
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
416425

426+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].bit = 12;
427+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nStartTime = 1751328000; // July 1, 2025
428+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
429+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nWindowSize = 100;
430+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nThresholdStart = 80; // 80% of 100
431+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nThresholdMin = 60; // 60% of 100
432+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nFalloffCoeff = 5; // this corresponds to 10 periods
433+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].useEHF = true;
434+
417435
// The best chain should have at least this much work.
418436
consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000000031f769ba78b4bee"); // 1189000
419437

@@ -586,6 +604,15 @@ class CDevNetParams : public CChainParams {
586604
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
587605
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
588606

607+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].bit = 12;
608+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nStartTime = 1751328000; // July 1, 2025
609+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
610+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nWindowSize = 120;
611+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nThresholdStart = 96; // 80% of 120
612+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nThresholdMin = 72; // 60% of 120
613+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nFalloffCoeff = 5; // this corresponds to 10 periods
614+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].useEHF = true;
615+
589616
// The best chain should have at least this much work.
590617
consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000000000000000000000");
591618

@@ -822,6 +849,15 @@ class CRegTestParams : public CChainParams {
822849
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
823850
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
824851

852+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].bit = 12;
853+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nStartTime = 0;
854+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
855+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nWindowSize = 350;
856+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nThresholdStart = 350 / 5 * 4; // 80% of window size
857+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nThresholdMin = 350 / 5 * 3; // 60% of window size
858+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].nFalloffCoeff = 5; // this corresponds to 10 periods
859+
consensus.vDeployments[Consensus::DEPLOYMENT_V23].useEHF = true;
860+
825861
// The best chain should have at least this much work.
826862
consensus.nMinimumChainWork = uint256S("0x00");
827863

src/consensus/params.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ constexpr bool ValidDeployment(BuriedDeployment dep) { return dep <= DEPLOYMENT_
4040
enum DeploymentPos : uint16_t {
4141
DEPLOYMENT_TESTDUMMY,
4242
DEPLOYMENT_WITHDRAWALS, // Deployment of Fix for quorum selection for withdrawals
43+
DEPLOYMENT_V23, // Deployment of doubling withdrawal limit, extended addresses
4344
// NOTE: Also add new deployments to VersionBitsDeploymentInfo in deploymentinfo.cpp
4445
MAX_VERSION_BITS_DEPLOYMENTS
4546
};

src/deploymentinfo.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ const struct VBDeploymentInfo VersionBitsDeploymentInfo[Consensus::MAX_VERSION_B
1515
/*.name =*/"withdrawals",
1616
/*.gbt_force =*/true,
1717
},
18+
{
19+
/*.name =*/"v23",
20+
/*.gbt_force =*/true,
21+
},
1822
};
1923

2024
std::string DeploymentName(Consensus::BuriedDeployment dep)

src/rpc/blockchain.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1543,6 +1543,7 @@ RPCHelpMan getblockchaininfo()
15431543
}
15441544
for (auto ehf_deploy : { /* sorted by activation block */
15451545
Consensus::DEPLOYMENT_WITHDRAWALS,
1546+
Consensus::DEPLOYMENT_V23,
15461547
Consensus::DEPLOYMENT_TESTDUMMY }) {
15471548
SoftForkDescPushBack(&tip, ehfSignals, softforks, consensusParams, ehf_deploy);
15481549
}

test/functional/rpc_blockchain.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,17 @@ def _test_getblockchaininfo(self):
225225
'ehf': True
226226
},
227227
'active': False},
228+
'v23': {
229+
'type': 'bip9',
230+
'bip9': {
231+
'status': 'defined',
232+
'start_time': 0,
233+
'timeout': 9223372036854775807, # "v23" does not have a timeout so is set to the max int64 value
234+
'since': 0,
235+
'min_activation_height': 0,
236+
'ehf': True
237+
},
238+
'active': False},
228239
'testdummy': {
229240
'type': 'bip9',
230241
'bip9': {

0 commit comments

Comments
 (0)