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