aboutsummaryrefslogtreecommitdiff
path: root/src/init.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2016-09-27 15:09:52 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2016-09-27 15:10:32 +0200
commita916677ace1c214f1c87f3a383cdc0d38dee8831 (patch)
treee66d2eb4787ec93c5fbcd207ccd1b84dfee42688 /src/init.cpp
parent254e990ce5c380d328da4db4646bd7fb4b37e864 (diff)
parent9dfa0c8d90177a12c3a3b1ac59c32727077d6803 (diff)
downloadbitcoin-a916677ace1c214f1c87f3a383cdc0d38dee8831.tar.xz
Merge #8815: Backports for 0.13.1
9dfa0c8 Implement NULLDUMMY softfork (Johnson Lau) cef633c Fix broken sendcmpct test in p2p-compactblocks.py (Suhas Daftuar) fb8706e Add p2p test for BIP 152 (compact blocks) (Suhas Daftuar) f6be478 Add support for compactblocks to mininode (Suhas Daftuar) 4295a7a Tests: refactor compact size serialization in mininode (Suhas Daftuar) ff893aa Implement SipHash in Python (Pieter Wuille) 198494c Allow changing BIP9 parameters on regtest (Suhas Daftuar) 23feab1 Remove maxuploadtargets recommended minimum (Jonas Schnelli) a5ec248 Remove createwitnessaddress (Johnson Lau) b394a96 Add basic test for IsStandard witness transaction blinding (instagibbs) 1672225 Do not store witness txn in rejection cache (Pieter Wuille)
Diffstat (limited to 'src/init.cpp')
-rw-r--r--src/init.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/init.cpp b/src/init.cpp
index 9b6eca2e1d..f2b13b627a 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -410,6 +410,7 @@ std::string HelpMessage(HelpMessageMode mode)
strUsage += HelpMessageOpt("-limitancestorsize=<n>", strprintf("Do not accept transactions whose size with all in-mempool ancestors exceeds <n> kilobytes (default: %u)", DEFAULT_ANCESTOR_SIZE_LIMIT));
strUsage += HelpMessageOpt("-limitdescendantcount=<n>", strprintf("Do not accept transactions if any ancestor would have <n> or more in-mempool descendants (default: %u)", DEFAULT_DESCENDANT_LIMIT));
strUsage += HelpMessageOpt("-limitdescendantsize=<n>", strprintf("Do not accept transactions if any ancestor would have more than <n> kilobytes of in-mempool descendants (default: %u).", DEFAULT_DESCENDANT_SIZE_LIMIT));
+ strUsage += HelpMessageOpt("-bip9params=deployment:start:end", "Use given start/end times for specified bip9 deployment (regtest-only)");
}
string debugCategories = "addrman, alert, bench, coindb, db, http, libevent, lock, mempool, mempoolrej, net, proxy, prune, rand, reindex, rpc, selectcoins, tor, zmq"; // Don't translate these and qt below
if (mode == HMM_BITCOIN_QT)
@@ -990,6 +991,41 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
fEnableReplacement = (std::find(vstrReplacementModes.begin(), vstrReplacementModes.end(), "fee") != vstrReplacementModes.end());
}
+ if (!mapMultiArgs["-bip9params"].empty()) {
+ // Allow overriding bip9 parameters for testing
+ if (!Params().MineBlocksOnDemand()) {
+ return InitError("BIP9 parameters may only be overridden on regtest.");
+ }
+ const vector<string>& deployments = mapMultiArgs["-bip9params"];
+ for (auto i : deployments) {
+ std::vector<std::string> vDeploymentParams;
+ boost::split(vDeploymentParams, i, boost::is_any_of(":"));
+ if (vDeploymentParams.size() != 3) {
+ return InitError("BIP9 parameters malformed, expecting deployment:start:end");
+ }
+ int64_t nStartTime, nTimeout;
+ if (!ParseInt64(vDeploymentParams[1], &nStartTime)) {
+ return InitError(strprintf("Invalid nStartTime (%s)", vDeploymentParams[1]));
+ }
+ if (!ParseInt64(vDeploymentParams[2], &nTimeout)) {
+ return InitError(strprintf("Invalid nTimeout (%s)", vDeploymentParams[2]));
+ }
+ bool found = false;
+ for (int i=0; i<(int)Consensus::MAX_VERSION_BITS_DEPLOYMENTS; ++i)
+ {
+ if (vDeploymentParams[0].compare(VersionBitsDeploymentInfo[i].name) == 0) {
+ UpdateRegtestBIP9Parameters(Consensus::DeploymentPos(i), nStartTime, nTimeout);
+ found = true;
+ LogPrintf("Setting BIP9 activation parameters for %s to start=%ld, timeout=%ld\n", vDeploymentParams[0], nStartTime, nTimeout);
+ break;
+ }
+ }
+ if (!found) {
+ return InitError(strprintf("Invalid deployment (%s)", vDeploymentParams[0]));
+ }
+ }
+ }
+
// ********************************************************* Step 4: application initialization: dir lock, daemonize, pidfile, debug log
// Initialize elliptic curve code