From 4a7cb45aa798fa1b396f64f886b719251b1f0fef Mon Sep 17 00:00:00 2001 From: Ross Nicoll Date: Sun, 16 May 2021 10:53:02 +0100 Subject: [PATCH] Make assume valid minimum interval per-chain configurable Make assume valid minimum interval per-chain configurable as syncing 21,000 blocks in a regression test isn't an achievable goal. --- src/chainparams.cpp | 4 ++++ src/consensus/params.h | 2 ++ src/validation.cpp | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index e0c2203b1..68030d6ab 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -93,6 +93,7 @@ public: consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000001533efd8d716a517fe2c5008"); consensus.defaultAssumeValid = uint256S("0x0000000000000000000b9d2ec5a352ecba0592946514a92f14319dc2b367fc72"); // 654683 + consensus.nAssumeValidMinTime = 60 * 60 * 24 * 7 * 2; consensus.fShortEarlyCoinbase = true; @@ -208,6 +209,7 @@ public: consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000001db6ec4ac88cf2272c6"); consensus.defaultAssumeValid = uint256S("0x000000000000006433d1efec504c53ca332b64963c425395515b01977bd7b3b0"); // 1864000 + consensus.nAssumeValidMinTime = 60 * 60 * 24 * 7 * 2; consensus.fShortEarlyCoinbase = true; @@ -326,6 +328,7 @@ public: consensus.nPowTargetSpacing = 60; // 1 minute consensus.fPowAllowMinDifficultyBlocks = false; consensus.fPowNoRetargeting = false; + consensus.nAssumeValidMinTime = 60 * 60 * 24 * 7 * 2; consensus.nRuleChangeActivationThreshold = 1900; // 95% of 2000 consensus.nMinerConfirmationWindow = 2000; // nPowTargetTimespan / nPowTargetSpacing consensus.MinBIP9WarningHeight = 0; @@ -408,6 +411,7 @@ public: consensus.nMinimumChainWork = uint256{}; consensus.defaultAssumeValid = uint256{}; + consensus.nAssumeValidMinTime = 60 * 60 * 24 * 7 * 2 / 10; // One tenth of main/test networks consensus.fShortEarlyCoinbase = false; diff --git a/src/consensus/params.h b/src/consensus/params.h index 042d40dc7..370712d4d 100644 --- a/src/consensus/params.h +++ b/src/consensus/params.h @@ -83,6 +83,8 @@ struct Params { uint256 nMinimumChainWork; /** By default assume that the signatures in ancestors of this block are valid */ uint256 defaultAssumeValid; + /** Minimum interval an assumed valid block must be buried, to be valid. */ + int64_t nAssumeValidMinTime; /** * If true, witness commitments contain a payload equal to a Bitcoin Script solution diff --git a/src/validation.cpp b/src/validation.cpp index 5252d50d0..b0a805ef1 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2014,7 +2014,7 @@ bool CChainState::ConnectBlock(const CBlock& block, BlockValidationState& state, // artificially set the default assumed verified block further back. // The test against nMinimumChainWork prevents the skipping when denied access to any chain at // least as good as the expected chain. - fScriptChecks = (GetBlockProofEquivalentTime(*pindexBestHeader, *pindex, *pindexBestHeader, chainparams.GetConsensus()) <= 60 * 60 * 24 * 7 * 2); + fScriptChecks = (GetBlockProofEquivalentTime(*pindexBestHeader, *pindex, *pindexBestHeader, chainparams.GetConsensus()) <= chainparams.GetConsensus().nAssumeValidMinTime); } } }