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:
parent
fe1b3b5b7b
commit
0e48a2466c
@ -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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user