5 #ifndef BITCOIN_KERNEL_MEMPOOL_ENTRY_H 6 #define BITCOIN_KERNEL_MEMPOOL_ENTRY_H 42 bool operator()(
const std::reference_wrapper<T>& a,
const std::reference_wrapper<T>& b)
const 44 return a.get().GetTx().GetHash() < b.get().GetTx().GetHash();
49 return a->GetTx().GetHash() < b->GetTx().GetHash();
70 typedef std::set<CTxMemPoolEntryRef, CompareIteratorByHash>
Parents;
71 typedef std::set<CTxMemPoolEntryRef, CompareIteratorByHash>
Children;
111 bool spends_coinbase,
145 std::chrono::seconds
GetTime()
const {
return std::chrono::seconds{
nTime}; }
241 const int64_t vsize,
const unsigned int height,
242 const bool mempool_limit_bypassed,
const bool submitted_in_package,
243 const bool chainstate_is_current,
244 const bool has_no_mempool_parents)
245 :
info{tx,
fee, vsize, height},
252 #endif // BITCOIN_KERNEL_MEMPOOL_ENTRY_H std::shared_ptr< const CTransaction > CTransactionRef
CAmount GetModFeesWithAncestors() const
CTxMemPoolEntry(const CTxMemPoolEntry &)=default
const bool spendsCoinbase
keep track of transactions that spend a coinbase
void UpdateDescendantState(int32_t modifySize, CAmount modifyFee, int64_t modifyCount)
int32_t GetTxWeight() const
CAmount nModFeesWithDescendants
... and total fees (all including us)
void UpdateModifiedFee(CAmount fee_diff)
CAmount m_modified_fee
Used for determining the priority of the transaction for mining in a block.
int32_t GetTxSize() const
Children & GetMemPoolChildren() const
const int32_t nTxWeight
... and avoid recomputing tx weight (also used for GetTxSize())
ExplicitCopyTag()=default
const uint64_t entry_sequence
Sequence number used to determine whether this transaction is too recent for relay.
const bool m_submitted_in_package
const unsigned int entryHeight
Chain height when entering the mempool.
CAmount GetModFeesWithDescendants() const
const Children & GetMemPoolChildrenConst() const
CTxMemPoolEntry & operator=(const CTxMemPoolEntry &)=delete
bool GetSpendsCoinbase() const
int64_t GetVirtualTransactionSize(int64_t nWeight, int64_t nSigOpCost, unsigned int bytes_per_sigop)
Compute the virtual transaction size (weight reinterpreted as bytes).
const int64_t nTime
Local time when entering the mempool.
CTxMemPoolEntry::CTxMemPoolEntryRef CTxMemPoolEntryRef
static int32_t GetTransactionWeight(const CTransaction &tx)
CAmount GetModifiedFee() const
bool operator()(const std::reference_wrapper< T > &a, const std::reference_wrapper< T > &b) const
static constexpr ExplicitCopyTag ExplicitCopy
bool operator()(const T &a, const T &b) const
const int64_t m_virtual_transaction_size
The virtual transaction size.
CTxMemPoolEntry stores data about the corresponding transaction, as well as data about all in-mempool...
int64_t nSizeWithAncestors
int64_t CAmount
Amount in satoshis (Can be negative)
Parents & GetMemPoolParents() const
int64_t nSigOpCostWithAncestors
std::set< CTxMemPoolEntryRef, CompareIteratorByHash > Parents
const bool m_chainstate_is_current
int64_t m_count_with_descendants
number of descendant transactions
size_t DynamicMemoryUsage() const
unsigned int GetHeight() const
CTxMemPoolEntry(ExplicitCopyTag, const CTxMemPoolEntry &entry)
RemovedMempoolTransactionInfo(const CTxMemPoolEntry &entry)
const CAmount & GetFee() const
CTransactionRef GetSharedTx() const
TransactionInfo(const CTransactionRef &tx, const CAmount &fee, const int64_t vsize, const unsigned int height)
CAmount nModFeesWithAncestors
std::chrono::seconds GetTime() const
int64_t m_count_with_ancestors
uint64_t GetCountWithDescendants() const
const size_t nUsageSize
... and total memory usage
uint64_t GetSequence() const
NewMempoolTransactionInfo(const CTransactionRef &tx, const CAmount &fee, const int64_t vsize, const unsigned int height, const bool mempool_limit_bypassed, const bool submitted_in_package, const bool chainstate_is_current, const bool has_no_mempool_parents)
CTxMemPoolEntry(const CTransactionRef &tx, CAmount fee, int64_t time, unsigned int entry_height, uint64_t entry_sequence, bool spends_coinbase, int64_t sigops_cost, LockPoints lp)
int64_t GetSigOpCostWithAncestors() const
const int64_t sigOpCost
Total sigop cost.
uint64_t GetCountWithAncestors() const
const bool m_has_no_mempool_parents
T SaturatingAdd(const T i, const T j) noexcept
unsigned int nBytesPerSigOp
void UpdateLockPoints(const LockPoints &lp) const
const bool m_mempool_limit_bypassed
void UpdateAncestorState(int32_t modifySize, CAmount modifyFee, int64_t modifyCount, int64_t modifySigOps)
int64_t nSizeWithDescendants
... and size
The block chain is a tree shaped structure starting with the genesis block at the root...
LockPoints lockPoints
Track the height and time at which tx was final.
const CTransaction & GetTx() const
std::reference_wrapper< const CTxMemPoolEntry > CTxMemPoolEntryRef
std::set< CTxMemPoolEntryRef, CompareIteratorByHash > Children
const CTransactionRef m_tx
int64_t GetSigOpCost() const
Epoch::Marker m_epoch_marker
epoch when last touched, useful for graph algorithms
const CAmount nFee
Cached to avoid expensive parent-transaction lookups.
static size_t RecursiveDynamicUsage(const CScript &script)
The basic transaction that is broadcasted on the network and contained in blocks. ...
const LockPoints & GetLockPoints() const
const Parents & GetMemPoolParentsConst() const
CBlockIndex * maxInputBlock
const unsigned int txHeight
size_t idx_randomized
Index in mempool's txns_randomized.
int64_t GetSizeWithDescendants() const
int64_t GetSizeWithAncestors() const