Skip to content

Commit 1ce7ede

Browse files
committed
Merge #9288: Fix a bug if the min fee is 0 for FeeFilterRounder
f8d43b8 Avoid rollingMinimumFeeRate never being able to decay below half (Alex Morcos) eab8e1b fix a bug if the min fee is 0 for FeeFilterRounder (Alex Morcos)
2 parents 869781c + f8d43b8 commit 1ce7ede

File tree

3 files changed

+4
-3
lines changed

3 files changed

+4
-3
lines changed

src/policy/fees.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ void CBlockPolicyEstimator::removeTx(uint256 hash)
299299
CBlockPolicyEstimator::CBlockPolicyEstimator(const CFeeRate& _minRelayFee)
300300
: nBestSeenHeight(0)
301301
{
302+
static_assert(MIN_FEERATE > 0, "Min feerate must be nonzero");
302303
minTrackedFee = _minRelayFee < CFeeRate(MIN_FEERATE) ? CFeeRate(MIN_FEERATE) : _minRelayFee;
303304
std::vector<double> vfeelist;
304305
for (double bucketBoundary = minTrackedFee.GetFeePerK(); bucketBoundary <= MAX_FEERATE; bucketBoundary *= FEE_SPACING) {
@@ -485,7 +486,7 @@ void CBlockPolicyEstimator::Read(CAutoFile& filein, int nFileVersion)
485486

486487
FeeFilterRounder::FeeFilterRounder(const CFeeRate& minIncrementalFee)
487488
{
488-
CAmount minFeeLimit = minIncrementalFee.GetFeePerK() / 2;
489+
CAmount minFeeLimit = std::max(CAmount(1), minIncrementalFee.GetFeePerK() / 2);
489490
feeset.insert(0);
490491
for (double bucketBoundary = minFeeLimit; bucketBoundary <= MAX_FEERATE; bucketBoundary *= FEE_SPACING) {
491492
feeset.insert(bucketBoundary);

src/policy/fees.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ static const double MIN_SUCCESS_PCT = .95;
179179
static const double SUFFICIENT_FEETXS = 1;
180180

181181
// Minimum and Maximum values for tracking feerates
182-
static const double MIN_FEERATE = 10;
182+
static constexpr double MIN_FEERATE = 10;
183183
static const double MAX_FEERATE = 1e7;
184184
static const double INF_FEERATE = MAX_MONEY;
185185
static const double INF_PRIORITY = 1e9 * MAX_MONEY;

src/txmempool.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1077,7 +1077,7 @@ CFeeRate CTxMemPool::GetMinFee(size_t sizelimit) const {
10771077
rollingMinimumFeeRate = rollingMinimumFeeRate / pow(2.0, (time - lastRollingFeeUpdate) / halflife);
10781078
lastRollingFeeUpdate = time;
10791079

1080-
if (rollingMinimumFeeRate < minReasonableRelayFee.GetFeePerK() / 2) {
1080+
if (rollingMinimumFeeRate < (double)minReasonableRelayFee.GetFeePerK() / 2) {
10811081
rollingMinimumFeeRate = 0;
10821082
return CFeeRate(0);
10831083
}

0 commit comments

Comments
 (0)