Changeset View
Changeset View
Standalone View
Standalone View
src/txmempool.cpp
Show First 20 Lines • Show All 1,173 Lines • ▼ Show 20 Lines | if (time > lastRollingFeeUpdate + 10) { | ||||
} else if (DynamicMemoryUsage() < sizelimit / 2) { | } else if (DynamicMemoryUsage() < sizelimit / 2) { | ||||
halflife /= 2; | halflife /= 2; | ||||
} | } | ||||
rollingMinimumFeeRate = | rollingMinimumFeeRate = | ||||
rollingMinimumFeeRate / | rollingMinimumFeeRate / | ||||
pow(2.0, (time - lastRollingFeeUpdate) / halflife); | pow(2.0, (time - lastRollingFeeUpdate) / halflife); | ||||
lastRollingFeeUpdate = time; | lastRollingFeeUpdate = time; | ||||
if (rollingMinimumFeeRate < | |||||
(double)incrementalRelayFee.GetFeePerK().GetSatoshis() / 2) { | |||||
rollingMinimumFeeRate = 0; | |||||
return CFeeRate(Amount(0)); | |||||
} | |||||
} | } | ||||
return std::max(CFeeRate(Amount(int64_t(rollingMinimumFeeRate))), | return CFeeRate(Amount(int64_t(rollingMinimumFeeRate))); | ||||
incrementalRelayFee); | |||||
} | } | ||||
void CTxMemPool::trackPackageRemoved(const CFeeRate &rate) { | void CTxMemPool::trackPackageRemoved(const CFeeRate &rate) { | ||||
AssertLockHeld(cs); | AssertLockHeld(cs); | ||||
if (rate.GetFeePerK().GetSatoshis() > rollingMinimumFeeRate) { | if (rate.GetFeePerK().GetSatoshis() > rollingMinimumFeeRate) { | ||||
rollingMinimumFeeRate = rate.GetFeePerK().GetSatoshis(); | rollingMinimumFeeRate = rate.GetFeePerK().GetSatoshis(); | ||||
blockSinceLastRollingFeeBump = false; | blockSinceLastRollingFeeBump = false; | ||||
} | } | ||||
Show All 11 Lines | while (!mapTx.empty() && DynamicMemoryUsage() > sizelimit) { | ||||
// We set the new mempool min fee to the feerate of the removed set, | // We set the new mempool min fee to the feerate of the removed set, | ||||
// plus the "minimum reasonable fee rate" (ie some value under which we | // plus the "minimum reasonable fee rate" (ie some value under which we | ||||
// consider txn to have 0 fee). This way, we don't allow txn to enter | // consider txn to have 0 fee). This way, we don't allow txn to enter | ||||
// mempool with feerate equal to txn which were removed with no block in | // mempool with feerate equal to txn which were removed with no block in | ||||
// between. | // between. | ||||
CFeeRate removed(it->GetModFeesWithDescendants(), | CFeeRate removed(it->GetModFeesWithDescendants(), | ||||
it->GetSizeWithDescendants()); | it->GetSizeWithDescendants()); | ||||
removed += incrementalRelayFee; | removed += DEFAULT_INCREMENTAL_RELAY_FEE; | ||||
deadalnix: This is not about relay anymore, so this should be renamed. | |||||
trackPackageRemoved(removed); | trackPackageRemoved(removed); | ||||
maxFeeRateRemoved = std::max(maxFeeRateRemoved, removed); | maxFeeRateRemoved = std::max(maxFeeRateRemoved, removed); | ||||
setEntries stage; | setEntries stage; | ||||
CalculateDescendants(mapTx.project<0>(it), stage); | CalculateDescendants(mapTx.project<0>(it), stage); | ||||
nTxnRemoved += stage.size(); | nTxnRemoved += stage.size(); | ||||
std::vector<CTransaction> txn; | std::vector<CTransaction> txn; | ||||
Show All 39 Lines |
This is not about relay anymore, so this should be renamed.