aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-10-23 13:34:57 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2015-10-23 13:35:06 +0200
commitfc7f0ee28caca472d527ecd208d7012a42d94ad9 (patch)
tree01f082ed10a080d02e6f9bd3999bcd181a9af511 /src/main.cpp
parent95a50390e1052a0a501eb446f87d63f58d95b7e7 (diff)
parent6af25b0f64cb67ba7db04dd49383f7aed42def1a (diff)
downloadbitcoin-fc7f0ee28caca472d527ecd208d7012a42d94ad9.tar.xz
Merge pull request #6707
6af25b0 Add BIP65 to getblockchaininfo softforks list (Peter Todd) ba1da90 Show softfork status in getblockchaininfo (Wladimir J. van der Laan) 70a427b CLTV: Add more tests to improve coverage (Esteban Ordano) c5a27f4 Add RPC tests for the CHECKLOCKTIMEVERIFY (BIP65) soft-fork (Peter Todd) 5e82e1c Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic (Peter Todd) 6ea5ca4 Enable CHECKLOCKTIMEVERIFY as a standard script verify flag (Peter Todd) 4fa7a04 Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65) (Peter Todd) 6ec08db Move LOCKTIME_THRESHOLD to src/script/script.h (Peter Todd) 684636b Make CScriptNum() take nMaxNumSize as an argument (Peter Todd)
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp
index f6deaa29b6..e57fdb8c83 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1853,11 +1853,18 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin
unsigned int flags = fStrictPayToScriptHash ? SCRIPT_VERIFY_P2SH : SCRIPT_VERIFY_NONE;
- // Start enforcing the DERSIG (BIP66) rules, for block.nVersion=3 blocks, when 75% of the network has upgraded:
+ // Start enforcing the DERSIG (BIP66) rules, for block.nVersion=3 blocks,
+ // when 75% of the network has upgraded:
if (block.nVersion >= 3 && IsSuperMajority(3, pindex->pprev, chainparams.GetConsensus().nMajorityEnforceBlockUpgrade, chainparams.GetConsensus())) {
flags |= SCRIPT_VERIFY_DERSIG;
}
+ // Start enforcing CHECKLOCKTIMEVERIFY, (BIP65) for block.nVersion=4
+ // blocks, when 75% of the network has upgraded:
+ if (block.nVersion >= 4 && IsSuperMajority(4, pindex->pprev, chainparams.GetConsensus().nMajorityEnforceBlockUpgrade, chainparams.GetConsensus())) {
+ flags |= SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY;
+ }
+
CBlockUndo blockundo;
CCheckQueueControl<CScriptCheck> control(fScriptChecks && nScriptCheckThreads ? &scriptcheckqueue : NULL);
@@ -2788,6 +2795,11 @@ bool ContextualCheckBlockHeader(const CBlockHeader& block, CValidationState& sta
return state.Invalid(error("%s : rejected nVersion=2 block", __func__),
REJECT_OBSOLETE, "bad-version");
+ // Reject block.nVersion=3 blocks when 95% (75% on testnet) of the network has upgraded:
+ if (block.nVersion < 4 && IsSuperMajority(4, pindexPrev, consensusParams.nMajorityRejectBlockOutdated, consensusParams))
+ return state.Invalid(error("%s : rejected nVersion=3 block", __func__),
+ REJECT_OBSOLETE, "bad-version");
+
return true;
}