Skip to content

Commit

Permalink
Merge bitcoin/bitcoin#31156: test: Don't enforce BIP94 on regtest unl…
Browse files Browse the repository at this point in the history
…ess specified by arg

e60cecc doc: add release note for 31156 (Martin Zumsande)
fc7dfb3 test: Don't enforce BIP94 on regtest unless specified by arg (Martin Zumsande)

Pull request description:

  The added arg `-test=bip94` is only used in a functional test for BIP94. This is done because the default regtest consensus rules should follow mainnet, not testnet.

  Fixes #31137.

ACKs for top commit:
  achow101:
    ACK e60cecc
  tdb3:
    cr and light test ACK e60cecc
  rkrux:
    tACK e60cecc
  BrandonOdiwuor:
    utACK e60cecc
  laanwj:
    Code review ACK e60cecc

Tree-SHA512: ca2f322f89d8808dfc3565fe020d2615cfcc110e188a02128ad7108fef51c735b33d55b5e6a70c505d78f7291f3c635dc7dfbcd78be1348d4d6e483883be4216
  • Loading branch information
achow101 committed Oct 30, 2024
2 parents 02be3dc + e60cecc commit 4a31f8c
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 1 deletion.
4 changes: 4 additions & 0 deletions doc/release-notes-31156.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Test
------

The BIP94 timewarp attack mitigation (designed for testnet4) is no longer active on the regtest network. (#31156)
1 change: 1 addition & 0 deletions src/chainparams.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ void ReadSigNetArgs(const ArgsManager& args, CChainParams::SigNetOptions& option
void ReadRegTestArgs(const ArgsManager& args, CChainParams::RegTestOptions& options)
{
if (auto value = args.GetBoolArg("-fastprune")) options.fastprune = *value;
if (HasTestOption(args, "bip94")) options.enforce_bip94 = true;

for (const std::string& arg : args.GetArgs("-testactivationheight")) {
const auto found{arg.find('@')};
Expand Down
1 change: 1 addition & 0 deletions src/common/args.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -709,6 +709,7 @@ std::string HelpMessageOpt(const std::string &option, const std::string &message

const std::vector<std::string> TEST_OPTIONS_DOC{
"addrman (use deterministic addrman)",
"bip94 (enforce BIP94 consensus rules)",
};

bool HasTestOption(const ArgsManager& args, const std::string& test_option)
Expand Down
2 changes: 1 addition & 1 deletion src/kernel/chainparams.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,7 @@ class CRegTestParams : public CChainParams
consensus.nPowTargetTimespan = 24 * 60 * 60; // one day
consensus.nPowTargetSpacing = 10 * 60;
consensus.fPowAllowMinDifficultyBlocks = true;
consensus.enforce_BIP94 = true;
consensus.enforce_BIP94 = opts.enforce_bip94;
consensus.fPowNoRetargeting = true;
consensus.nRuleChangeActivationThreshold = 108; // 75% for testchains
consensus.nMinerConfirmationWindow = 144; // Faster than normal for regtest (144 instead of 2016)
Expand Down
1 change: 1 addition & 0 deletions src/kernel/chainparams.h
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ class CChainParams
std::unordered_map<Consensus::DeploymentPos, VersionBitsParameters> version_bits_parameters{};
std::unordered_map<Consensus::BuriedDeployment, int> activation_heights{};
bool fastprune{false};
bool enforce_bip94{false};
};

static std::unique_ptr<const CChainParams> RegTest(const RegTestOptions& options);
Expand Down
1 change: 1 addition & 0 deletions test/functional/mining_basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ def test_blockmintxfee_parameter(self):
def test_timewarp(self):
self.log.info("Test timewarp attack mitigation (BIP94)")
node = self.nodes[0]
self.restart_node(0, extra_args=['-test=bip94'])

self.log.info("Mine until the last block of the retarget period")
blockchain_info = self.nodes[0].getblockchaininfo()
Expand Down

0 comments on commit 4a31f8c

Please sign in to comment.