Ignore transactions added to mempool during a reorg for fee estimation purposes.

This commit is contained in:
Alex Morcos 2017-09-12 12:40:06 -04:00
parent 04f78ab5b9
commit bf64c3cb34

View file

@ -857,11 +857,12 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
} }
pool.RemoveStaged(allConflicting, false, MemPoolRemovalReason::REPLACED); pool.RemoveStaged(allConflicting, false, MemPoolRemovalReason::REPLACED);
// This transaction should only count for fee estimation if it isn't a // This transaction should only count for fee estimation if:
// BIP 125 replacement transaction (may not be widely supported), the // - it isn't a BIP 125 replacement transaction (may not be widely supported)
// node is not behind, and the transaction is not dependent on any other // - it's not being readded during a reorg which bypasses typical mempool fee limits
// transactions in the mempool. // - the node is not behind
bool validForFeeEstimation = !fReplacementTransaction && IsCurrentForFeeEstimation() && pool.HasNoInputsOf(tx); // - the transaction is not dependent on any other transactions in the mempool
bool validForFeeEstimation = !fReplacementTransaction && !bypass_limits && IsCurrentForFeeEstimation() && pool.HasNoInputsOf(tx);
// Store transaction in memory // Store transaction in memory
pool.addUnchecked(hash, entry, setAncestors, validForFeeEstimation); pool.addUnchecked(hash, entry, setAncestors, validForFeeEstimation);