fees: reduce `MIN_BUCKET_FEERATE` to 100
What changed, and why it matters
This commit lowers the lowest fee-rate bucket used by Bitcoin Core's built-in transaction fee estimator from 1000 to 100. It is a follow-up to an earlier policy change that reduced the default minimum relay fee. The change keeps the estimator in sync with the new lower bound so users can still get reasonable fee estimates when the network is quiet. It is not a vulnerability fix and does not introduce a clear security flaw, though any change to fee-estimator constants can affect user-facing fee recommendations.
No immediate security action required. Reviewers should verify that `CURRENT_FEES_FILE_VERSION` was indeed bumped in the same release to avoid stale fee-estimate file incompatibilities, as the comment now requires.
Security signals we found
No memory safety, cryptographic, or consensus changes
No input validation or authorization changes
Constant-only change in fee-estimator configuration
Commit message does not describe security relevance
No CVE, advisory, or researcher attribution in commit or supplied references
Evidence from the diff
The patch updates MIN_BUCKET_FEERATE in src/policy/fees/block_policy_estimator.h from 1000 to 100 and revises the surrounding comment. The comment now states that this value should be updated whenever DEFAULT_MIN_RELAY_TX_FEE changes and that CURRENT_FEES_FILE_VERSION should be bumped at the same time. The change aligns the estimator’s lowest bucket with the v30 default minimum relay fee of 100. The commit message explicitly frames this as a policy synchronization, not a security issue.
Changed components
src/policy/fees/block_policy_estimator.hBitcoin Core fee estimation subsystemInspect captured patch +8 / −6
diff --git a/src/policy/fees/block_policy_estimator.h b/src/policy/fees/block_policy_estimator.h
index ed561d9a..4524911c 100644
--- a/src/policy/fees/block_policy_estimator.h
+++ b/src/policy/fees/block_policy_estimator.h
@@ -181,13 +181,15 @@ private:
static constexpr double SUFFICIENT_TXS_SHORT = 0.5;
/** Minimum and Maximum values for tracking feerates
- * The MIN_BUCKET_FEERATE should just be set to the lowest reasonable feerate we
- * might ever want to track. Historically this has been 1000 since it was
- * inheriting DEFAULT_MIN_RELAY_TX_FEE and changing it is disruptive as it
- * invalidates old estimates files. So leave it at 1000 unless it becomes
- * necessary to lower it, and then lower it substantially.
+ * The MIN_BUCKET_FEERATE should just be set to the lowest reasonable feerate.
+ * MIN_BUCKET_FEERATE has historically inherited DEFAULT_MIN_RELAY_TX_FEE.
+ * It is hardcoded because changing it is disruptive, as it invalidates existing fee
+ * estimate files.
+ *
+ * Whenever DEFAULT_MIN_RELAY_TX_FEE changes, this value should be updated
+ * accordingly. At the same time CURRENT_FEES_FILE_VERSION should be bumped.
*/
- static constexpr double MIN_BUCKET_FEERATE = 1000;
+ static constexpr double MIN_BUCKET_FEERATE = 100;
static constexpr double MAX_BUCKET_FEERATE = 1e7;
/** Spacing of FeeRate buckets
Why this scored 21/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.