Add interest based expiration to CTxMemPool::removeExpired

This fix will remove from the mempool tx that wouldn’t current be
accepted into the mempool. Useful when some old mempool entries keep
getting restored.
This commit is contained in:
jl777
2018-04-24 15:40:31 +03:00
parent 5feff3f466
commit dd20bebc5c

View File

@@ -261,15 +261,20 @@ void CTxMemPool::removeConflicts(const CTransaction &tx, std::list<CTransaction>
}
}
int32_t komodo_validate_interest(const CTransaction &tx,int32_t txheight,uint32_t nTime,int32_t dispflag);
void CTxMemPool::removeExpired(unsigned int nBlockHeight)
{
CBlockIndex *tipindex;
// Remove expired txs from the mempool
LOCK(cs);
list<CTransaction> transactionsToRemove;
for (indexed_transaction_set::const_iterator it = mapTx.begin(); it != mapTx.end(); it++)
{
const CTransaction& tx = it->GetTx();
if (IsExpiredTx(tx, nBlockHeight)) {
tipindex = chainActive.Tip();
if (IsExpiredTx(tx, nBlockHeight) || (tipindex != 0 && komodo_validate_interest(tx,tipindex->nHeight+1,tipindex->GetMedianTimePast() + 777,1)) < 0)
{
transactionsToRemove.push_back(tx);
}
}
@@ -280,6 +285,7 @@ void CTxMemPool::removeExpired(unsigned int nBlockHeight)
}
}
/**
* Called when a block is connected. Removes from mempool and updates the miner fee estimator.
*/