Skip to content

Commit

Permalink
Add interest based expiration to CTxMemPool::removeExpired
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
jl777 committed Apr 24, 2018
1 parent 5feff3f commit dd20beb
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/txmempool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Expand All @@ -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.
*/
Expand Down

0 comments on commit dd20beb

Please sign in to comment.