Skip to content

Commit d438c54

Browse files
PastaPastaPastaknst
authored andcommitted
Merge dashpay#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](dashpay#6662) and [dash#6665](dashpay#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
1 parent 3513d91 commit d438c54

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
@@ -218,6 +218,15 @@ class CMainParams : public CChainParams {
218218
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
219219
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
220220

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

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

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

@@ -589,6 +607,15 @@ class CDevNetParams : public CChainParams {
589607
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
590608
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
591609

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

@@ -826,6 +853,15 @@ class CRegTestParams : public CChainParams {
826853
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
827854
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
828855

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

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
@@ -1497,6 +1497,7 @@ RPCHelpMan getblockchaininfo()
14971497
}
14981498
for (auto ehf_deploy : { /* sorted by activation block */
14991499
Consensus::DEPLOYMENT_WITHDRAWALS,
1500+
Consensus::DEPLOYMENT_V23,
15001501
Consensus::DEPLOYMENT_TESTDUMMY }) {
15011502
SoftForkDescPushBack(&tip, ehfSignals, softforks, consensusParams, ehf_deploy);
15021503
}

test/functional/rpc_blockchain.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,17 @@ def _test_getblockchaininfo(self):
194194
'ehf': True
195195
},
196196
'active': False},
197+
'v23': {
198+
'type': 'bip9',
199+
'bip9': {
200+
'status': 'defined',
201+
'start_time': 0,
202+
'timeout': 9223372036854775807, # "v23" does not have a timeout so is set to the max int64 value
203+
'since': 0,
204+
'min_activation_height': 0,
205+
'ehf': True
206+
},
207+
'active': False},
197208
'testdummy': {
198209
'type': 'bip9',
199210
'bip9': {

0 commit comments

Comments
 (0)