|
|
|
@ -799,10 +799,10 @@ bool CheckSequenceLocks(const CTransaction &tx, int flags)
@@ -799,10 +799,10 @@ bool CheckSequenceLocks(const CTransaction &tx, int flags)
|
|
|
|
|
index.pprev = tip; |
|
|
|
|
// CheckSequenceLocks() uses chainActive.Height()+1 to evaluate
|
|
|
|
|
// height based locks because when SequenceLocks() is called within
|
|
|
|
|
// CBlock::AcceptBlock(), the height of the block *being*
|
|
|
|
|
// evaluated is what is used. Thus if we want to know if a
|
|
|
|
|
// transaction can be part of the *next* block, we need to call
|
|
|
|
|
// SequenceLocks() with one more than chainActive.Height().
|
|
|
|
|
// ConnectBlock(), the height of the block *being*
|
|
|
|
|
// evaluated is what is used.
|
|
|
|
|
// Thus if we want to know if a transaction can be part of the
|
|
|
|
|
// *next* block, we need to use one more than chainActive.Height()
|
|
|
|
|
index.nHeight = tip->nHeight + 1; |
|
|
|
|
|
|
|
|
|
// pcoinsTip contains the UTXO set for chainActive.Tip()
|
|
|
|
@ -2240,7 +2240,7 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin
@@ -2240,7 +2240,7 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!SequenceLocks(tx, nLockTimeFlags, &prevheights, *pindex)) { |
|
|
|
|
return state.DoS(100, error("ConnectBlock(): contains a non-BIP68-final transaction", __func__), |
|
|
|
|
return state.DoS(100, error("%s: contains a non-BIP68-final transaction", __func__), |
|
|
|
|
REJECT_INVALID, "bad-txns-nonfinal"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|