1
0
mirror of https://github.com/bitcoin/bips.git synced 2025-05-12 12:03:29 +00:00

Update BIP68 implementation to match spec

This commit is contained in:
BtcDrak 2016-02-12 04:10:24 +00:00
parent fe1b3b5b7b
commit 0e48a2466c

View File

@ -65,9 +65,9 @@ enum {
* disables nLockTime. */ * disables nLockTime. */
static const uint32_t SEQUENCE_FINAL = 0xffffffff; static const uint32_t SEQUENCE_FINAL = 0xffffffff;
/* Below flags apply in the context of BIP 68*/
/* If this flag set, CTxIn::nSequence is NOT interpreted as a /* If this flag set, CTxIn::nSequence is NOT interpreted as a
* relative lock-time. Setting the most significant bit of a * relative lock-time. */
* sequence number disabled relative lock-time. */
static const uint32_t SEQUENCE_LOCKTIME_DISABLE_FLAG = (1 << 31); static const uint32_t SEQUENCE_LOCKTIME_DISABLE_FLAG = (1 << 31);
/* If CTxIn::nSequence encodes a relative lock-time and this flag /* If CTxIn::nSequence encodes a relative lock-time and this flag
@ -174,16 +174,17 @@ bool SequenceLocks(const CTransaction &tx, int flags, std::vector<int>* prevHeig
bool CheckSequenceLocks(const CTransaction &tx, int flags) bool CheckSequenceLocks(const CTransaction &tx, int flags)
{ {
AssertLockHeld(cs_main); AssertLockHeld(cs_main);
AssertLockHeld(mempool.cs);
CBlockIndex* tip = chainActive.Tip(); CBlockIndex* tip = chainActive.Tip();
CBlockIndex index; CBlockIndex index;
index.pprev = tip; index.pprev = tip;
// CheckSequenceLocks() uses chainActive.Height()+1 to evaluate // CheckSequenceLocks() uses chainActive.Height()+1 to evaluate
// height based locks because when SequenceLocks() is called within // height based locks because when SequenceLocks() is called within
// CBlock::AcceptBlock(), the height of the block *being* // ConnectBlock(), the height of the block *being*
// evaluated is what is used. Thus if we want to know if a // evaluated is what is used.
// transaction can be part of the *next* block, we need to call // Thus if we want to know if a transaction can be part of the
// SequenceLocks() with one more than chainActive.Height(). // *next* block, we need to use one more than chainActive.Height()
index.nHeight = tip->nHeight + 1; index.nHeight = tip->nHeight + 1;
// pcoinsTip contains the UTXO set for chainActive.Tip() // pcoinsTip contains the UTXO set for chainActive.Tip()