mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-20 15:19:07 +01:00
CValidationInterface, mempool: add new callback to CValidationInterface
This commit adds a new callback `MempoolTransactionsRemovedForBlock` which notify its listeners of the transactions that are removed from the mempool because a new block is connected, along with the block height the transactions were removed. The transactions are in `RemovedMempoolTransactionInfo` format. `CTransactionRef`, base fee, virtual size, and height which the transaction was added to the mempool are all members of the struct called `RemovedMempoolTransactionInfo`. A struct `NewMempoolTransactionInfo`, which has fields similar to `RemovedMempoolTransactionInfo`, will be added in a later commit, create a struct `TransactionInfo` with all similar fields. They can both have a member with type `TransactionInfo`.
This commit is contained in:
@@ -178,4 +178,34 @@ public:
|
||||
|
||||
using CTxMemPoolEntryRef = CTxMemPoolEntry::CTxMemPoolEntryRef;
|
||||
|
||||
struct TransactionInfo {
|
||||
const CTransactionRef m_tx;
|
||||
/* The fee the transaction paid */
|
||||
const CAmount m_fee;
|
||||
/**
|
||||
* The virtual transaction size.
|
||||
*
|
||||
* This is a policy field which considers the sigop cost of the
|
||||
* transaction as well as its weight, and reinterprets it as bytes.
|
||||
*
|
||||
* It is the primary metric by which the mining algorithm selects
|
||||
* transactions.
|
||||
*/
|
||||
const int64_t m_virtual_transaction_size;
|
||||
/* The block height the transaction entered the mempool */
|
||||
const unsigned int txHeight;
|
||||
|
||||
TransactionInfo(const CTransactionRef& tx, const CAmount& fee, const int64_t vsize, const unsigned int height)
|
||||
: m_tx{tx},
|
||||
m_fee{fee},
|
||||
m_virtual_transaction_size{vsize},
|
||||
txHeight{height} {}
|
||||
};
|
||||
|
||||
struct RemovedMempoolTransactionInfo {
|
||||
TransactionInfo info;
|
||||
explicit RemovedMempoolTransactionInfo(const CTxMemPoolEntry& entry)
|
||||
: info{entry.GetSharedTx(), entry.GetFee(), entry.GetTxSize(), entry.GetHeight()} {}
|
||||
};
|
||||
|
||||
#endif // BITCOIN_KERNEL_MEMPOOL_ENTRY_H
|
||||
|
||||
Reference in New Issue
Block a user