Notifies listeners of a transaction leaving mempool.
Declared in <validationinterface.h>
virtual
void
TransactionRemovedFromMempool(
CTransactionRef const& tx,
MemPoolRemovalReason reason,
uint64_t mempool_sequence);
This notification fires for transactions that are removed from the mempool for the following reasons:
EXPIRY (expired from mempool after -mempoolexpiry hours)
SIZELIMIT (removed in size limiting if the mempool exceeds -maxmempool megabytes)
REORG (removed during a reorg)
CONFLICT (removed because it conflicts with in-block transaction)
REPLACED (removed due to RBF replacement)
This does not fire for transactions that are removed from the mempool because they have been included in a block. Any client that is interested in transactions removed from the mempool for inclusion in a block can learn about those transactions from the MempoolTransactionsRemovedForBlock notification.
Transactions that are removed from the mempool because they conflict with a transaction in the new block will have TransactionRemovedFromMempool events fired before the BlockConnected event is fired. If multiple blocks are connected in one step, then the ordering could be:
TransactionRemovedFromMempool(tx1 from block A)
TransactionRemovedFromMempool(tx2 from block A)
TransactionRemovedFromMempool(tx1 from block B)
TransactionRemovedFromMempool(tx2 from block B)
BlockConnected(A)
BlockConnected(B)
Called on a background thread.
| Name | Description |
|---|---|
| tx | The transaction removed from the mempool. |
| reason | Why the transaction was removed. |
| mempool_sequence | Mempool sequence number at the time of the removal. |