diff options
author | Peter Todd <pete@petertodd.org> | 2014-09-29 03:44:25 -0400 |
---|---|---|
committer | Peter Todd <pete@petertodd.org> | 2015-06-21 23:56:28 -0400 |
commit | bc60b2b4b401f0adff5b8b9678903ff8feb5867b (patch) | |
tree | 07c94b39b1fa36c942112dff9085cd870acf3d1a /src/script/interpreter.h | |
parent | 48e9c57cf06352f890eac4285ae022d8746cf3fd (diff) |
Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65)
<nLockTime> CHECKLOCKTIMEVERIFY -> <nLockTime>
Fails if tx.nLockTime < nLockTime, allowing the funds in a txout to be
locked until some block height or block time in the future is reached.
Only the logic and unittests are implemented; this commit does not have
any actual soft-fork logic in it.
Thanks to Pieter Wuille for rebase.
Credit goes to Gregory Maxwell for the suggestion of comparing the
argument against the transaction nLockTime rather than the current
time/blockheight directly.
Diffstat (limited to 'src/script/interpreter.h')
-rw-r--r-- | src/script/interpreter.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/script/interpreter.h b/src/script/interpreter.h index fc64438f68..35d572f0ad 100644 --- a/src/script/interpreter.h +++ b/src/script/interpreter.h @@ -76,6 +76,11 @@ enum // (softfork safe, BIP62 rule 6) // Note: CLEANSTACK should never be used without P2SH. SCRIPT_VERIFY_CLEANSTACK = (1U << 8), + + // Verify CHECKLOCKTIMEVERIFY + // + // See BIP65 for details. + SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY = (1U << 9), }; uint256 SignatureHash(const CScript &scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType); @@ -88,6 +93,11 @@ public: return false; } + virtual bool CheckLockTime(const CScriptNum& nLockTime) const + { + return false; + } + virtual ~BaseSignatureChecker() {} }; @@ -103,6 +113,7 @@ protected: public: TransactionSignatureChecker(const CTransaction* txToIn, unsigned int nInIn) : txTo(txToIn), nIn(nInIn) {} bool CheckSig(const std::vector<unsigned char>& scriptSig, const std::vector<unsigned char>& vchPubKey, const CScript& scriptCode) const; + bool CheckLockTime(const CScriptNum& nLockTime) const; }; class MutableTransactionSignatureChecker : public TransactionSignatureChecker |