Skip to content

Commit 00c7b93

Browse files
committed
BIP147
1 parent 8c6358b commit 00c7b93

File tree

6 files changed

+35
-4
lines changed

6 files changed

+35
-4
lines changed

src/chainparams.cpp

+18
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,13 @@ class CMainParams : public CChainParams
161161
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 1513591800; // Dec 18th 2017 10:10:00
162162
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 1545134400; // Dec 18th 2018 12:00:00
163163

164+
// Deployment of BIP147
165+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].bit = 2;
166+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].nStartTime = 1533945600; // Aug 11th, 2018
167+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].nTimeout = 1565481600; // Aug 11th, 2019
168+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].nWindowSize = 4032;
169+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].nThreshold = 3226; // 80% of 4032
170+
164171
// Deployment of InstantSend autolocks
165172
consensus.vDeployments[Consensus::DEPLOYMENT_ISAUTOLOCKS].bit = 4;
166173
consensus.vDeployments[Consensus::DEPLOYMENT_ISAUTOLOCKS].nStartTime = 1533945600; // Aug 11th, 2018
@@ -301,6 +308,13 @@ class CTestNetParams : public CChainParams
301308
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 1513591800; // Dec 18th 2017 10:10:00
302309
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 1545134400; // Dec 18th 2018 12:00:00
303310

311+
// Deployment of BIP147
312+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].bit = 2;
313+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].nStartTime = 1517792400; // Feb 5th, 2018
314+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].nTimeout = 1549328400; // Feb 5th, 2019
315+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].nWindowSize = 100;
316+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].nThreshold = 50; // 50% of 100
317+
304318
// Deployment of InstantSend autolocks
305319
consensus.vDeployments[Consensus::DEPLOYMENT_ISAUTOLOCKS].bit = 4;
306320
consensus.vDeployments[Consensus::DEPLOYMENT_ISAUTOLOCKS].nStartTime = 1532476800; // Jul 25th, 2018
@@ -439,6 +453,10 @@ class CRegTestParams : public CChainParams
439453
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 0;
440454
consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 999999999999ULL;
441455

456+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].bit = 2;
457+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].nStartTime = 0;
458+
consensus.vDeployments[Consensus::DEPLOYMENT_BIP147].nTimeout = 999999999999ULL;
459+
442460
consensus.vDeployments[Consensus::DEPLOYMENT_ISAUTOLOCKS].bit = 4;
443461
consensus.vDeployments[Consensus::DEPLOYMENT_ISAUTOLOCKS].nStartTime = 0;
444462
consensus.vDeployments[Consensus::DEPLOYMENT_ISAUTOLOCKS].nTimeout = 999999999999ULL;

src/consensus/params.h

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ namespace Consensus
1616
enum DeploymentPos {
1717
DEPLOYMENT_TESTDUMMY,
1818
DEPLOYMENT_CSV, // Deployment of BIP68, BIP112, and BIP113.
19+
DEPLOYMENT_BIP147, // Deployment of BIP147 (NULLDUMMY)
1920
DEPLOYMENT_ISAUTOLOCKS, // Deployment of automatic IS locks for simple transactions
2021
MAX_VERSION_BITS_DEPLOYMENTS // NOTE: Also add new deployments to VersionBitsDeploymentInfo in versionbits.cpp
2122
};

src/rpcblockchain.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1210,6 +1210,7 @@ UniValue getblockchaininfo(const JSONRPCRequest& request)
12101210
softforks.push_back(SoftForkDesc("bip66", 3, tip, consensusParams));
12111211
softforks.push_back(SoftForkDesc("bip65", 4, tip, consensusParams));
12121212
bip9_softforks.push_back(BIP9SoftForkDesc("csv", consensusParams, Consensus::DEPLOYMENT_CSV));
1213+
bip9_softforks.push_back(BIP9SoftForkDesc("bip147", consensusParams, Consensus::DEPLOYMENT_BIP147));
12131214
bip9_softforks.push_back(BIP9SoftForkDesc("autoix", consensusParams, Consensus::DEPLOYMENT_ISAUTOLOCKS));
12141215
obj.push_back(Pair("softforks", softforks));
12151216
obj.push_back(Pair("bip9_softforks", bip9_softforks));

src/script/dynamicconsensus.h

+6-4
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,15 @@ typedef enum dynamicconsensus_error_t {
4545

4646
/** Script verification flags */
4747
enum {
48-
dynamicconsensus_SCRIPT_FLAGS_VERIFY_NONE = 0,
49-
dynamicconsensus_SCRIPT_FLAGS_VERIFY_P2SH = (1U << 0), // evaluate P2SH (BIP16) subscripts
50-
dynamicconsensus_SCRIPT_FLAGS_VERIFY_DERSIG = (1U << 2), // enforce strict DER (BIP66) compliance
48+
dynamicconsensus_SCRIPT_FLAGS_VERIFY_NONE = 0,
49+
dynamicconsensus_SCRIPT_FLAGS_VERIFY_P2SH = (1U << 0), // evaluate P2SH (BIP16) subscripts
50+
dynamicconsensus_SCRIPT_FLAGS_VERIFY_DERSIG = (1U << 2), // enforce strict DER (BIP66) compliance
51+
dynamicconsensus_SCRIPT_FLAGS_VERIFY_NULLDUMMY = (1U << 4), // enforce NULLDUMMY (BIP147)
5152
dynamicconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY = (1U << 9), // enable CHECKLOCKTIMEVERIFY (BIP65)
5253
dynamicconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY = (1U << 10), // enable CHECKSEQUENCEVERIFY (BIP112)
5354
dynamicconsensus_SCRIPT_FLAGS_VERIFY_ALL = dynamicconsensus_SCRIPT_FLAGS_VERIFY_P2SH | dynamicconsensus_SCRIPT_FLAGS_VERIFY_DERSIG |
54-
dynamicconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY | dynamicconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY
55+
dynamicconsensus_SCRIPT_FLAGS_VERIFY_NULLDUMMY | dynamicconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY |
56+
dynamicconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY
5557
};
5658

5759
/// Returns 1 if the input nIn of the serialized transaction pointed to by

src/validation.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -2117,6 +2117,10 @@ static bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockInd
21172117
flags |= SCRIPT_VERIFY_CHECKSEQUENCEVERIFY;
21182118
nLockTimeFlags |= LOCKTIME_VERIFY_SEQUENCE;
21192119

2120+
if (VersionBitsState(pindex->pprev, chainparams.GetConsensus(), Consensus::DEPLOYMENT_BIP147, versionbitscache) == THRESHOLD_ACTIVE) {
2121+
flags |= SCRIPT_VERIFY_NULLDUMMY;
2122+
}
2123+
21202124
int64_t nTime2 = GetTimeMicros();
21212125
nTimeForks += nTime2 - nTime1;
21222126
LogPrint("bench", " - Fork checks: %.2fms [%.2fs]\n", 0.001 * (nTime2 - nTime1), nTimeForks * 0.000001);

src/versionbits.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ const struct BIP9DeploymentInfo VersionBitsDeploymentInfo[Consensus::MAX_VERSION
2020
/*.gbt_force =*/true,
2121
/*.check_dn_protocol =*/false,
2222
},
23+
{
24+
/*.name =*/ "bip147",
25+
/*.gbt_force =*/ true,
26+
/*.check_mn_protocol =*/ false,
27+
},
2328
{
2429
/*.name =*/ "autoix",
2530
/*.gbt_force =*/ true,

0 commit comments

Comments
 (0)