mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-12 11:19:08 -05:00
MOVEONLY: TestLockPointValidity to txmempool
This commit is contained in:
parent
e521c5589e
commit
1b3a11e126
4 changed files with 24 additions and 23 deletions
|
@ -74,6 +74,24 @@ private:
|
||||||
const LockPoints& lp;
|
const LockPoints& lp;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool TestLockPointValidity(CChain& active_chain, const LockPoints* lp)
|
||||||
|
{
|
||||||
|
AssertLockHeld(cs_main);
|
||||||
|
assert(lp);
|
||||||
|
// If there are relative lock times then the maxInputBlock will be set
|
||||||
|
// If there are no relative lock times, the LockPoints don't depend on the chain
|
||||||
|
if (lp->maxInputBlock) {
|
||||||
|
// Check whether active_chain is an extension of the block at which the LockPoints
|
||||||
|
// calculation was valid. If not LockPoints are no longer valid
|
||||||
|
if (!active_chain.Contains(lp->maxInputBlock)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// LockPoints still valid
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
CTxMemPoolEntry::CTxMemPoolEntry(const CTransactionRef& tx, CAmount fee,
|
CTxMemPoolEntry::CTxMemPoolEntry(const CTransactionRef& tx, CAmount fee,
|
||||||
int64_t time, unsigned int entry_height,
|
int64_t time, unsigned int entry_height,
|
||||||
bool spends_coinbase, int64_t sigops_cost, LockPoints lp)
|
bool spends_coinbase, int64_t sigops_cost, LockPoints lp)
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <chain.h>
|
||||||
#include <coins.h>
|
#include <coins.h>
|
||||||
#include <consensus/amount.h>
|
#include <consensus/amount.h>
|
||||||
#include <indirectmap.h>
|
#include <indirectmap.h>
|
||||||
|
@ -49,6 +50,11 @@ struct LockPoints {
|
||||||
CBlockIndex* maxInputBlock{nullptr};
|
CBlockIndex* maxInputBlock{nullptr};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test whether the LockPoints height and time are still valid on the current chain
|
||||||
|
*/
|
||||||
|
bool TestLockPointValidity(CChain& active_chain, const LockPoints* lp) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
||||||
|
|
||||||
struct CompareIteratorByHash {
|
struct CompareIteratorByHash {
|
||||||
// SFINAE for T where T is either a pointer type (e.g., a txiter) or a reference_wrapper<T>
|
// SFINAE for T where T is either a pointer type (e.g., a txiter) or a reference_wrapper<T>
|
||||||
// (e.g. a wrapped CTxMemPoolEntry&)
|
// (e.g. a wrapped CTxMemPoolEntry&)
|
||||||
|
|
|
@ -212,24 +212,6 @@ bool CheckFinalTx(const CBlockIndex* active_chain_tip, const CTransaction &tx, i
|
||||||
return IsFinalTx(tx, nBlockHeight, nBlockTime);
|
return IsFinalTx(tx, nBlockHeight, nBlockTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TestLockPointValidity(CChain& active_chain, const LockPoints* lp)
|
|
||||||
{
|
|
||||||
AssertLockHeld(cs_main);
|
|
||||||
assert(lp);
|
|
||||||
// If there are relative lock times then the maxInputBlock will be set
|
|
||||||
// If there are no relative lock times, the LockPoints don't depend on the chain
|
|
||||||
if (lp->maxInputBlock) {
|
|
||||||
// Check whether active_chain is an extension of the block at which the LockPoints
|
|
||||||
// calculation was valid. If not LockPoints are no longer valid
|
|
||||||
if (!active_chain.Contains(lp->maxInputBlock)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// LockPoints still valid
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CheckSequenceLocks(CBlockIndex* tip,
|
bool CheckSequenceLocks(CBlockIndex* tip,
|
||||||
const CCoinsView& coins_view,
|
const CCoinsView& coins_view,
|
||||||
const CTransaction& tx,
|
const CTransaction& tx,
|
||||||
|
|
|
@ -249,11 +249,6 @@ PackageMempoolAcceptResult ProcessNewPackage(CChainState& active_chainstate, CTx
|
||||||
*/
|
*/
|
||||||
bool CheckFinalTx(const CBlockIndex* active_chain_tip, const CTransaction &tx, int flags = -1) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
bool CheckFinalTx(const CBlockIndex* active_chain_tip, const CTransaction &tx, int flags = -1) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
||||||
|
|
||||||
/**
|
|
||||||
* Test whether the LockPoints height and time are still valid on the current chain
|
|
||||||
*/
|
|
||||||
bool TestLockPointValidity(CChain& active_chain, const LockPoints* lp) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if transaction will be BIP68 final in the next block to be created on top of tip.
|
* Check if transaction will be BIP68 final in the next block to be created on top of tip.
|
||||||
* @param[in] tip Chain tip to check tx sequence locks against. For example,
|
* @param[in] tip Chain tip to check tx sequence locks against. For example,
|
||||||
|
|
Loading…
Add table
Reference in a new issue