3

We find that estimatesmartfee will not return results lower than 5 sats/vB, even though many transactions are completing at much lower fee rates.

Looking at the implementation of estimatesmartfee, it bounds the result to the higher of three values:

CFeeRate feeRate{fee_estimator.estimateSmartFee(conf_target, &feeCalc, conservative)};
if (feeRate != CFeeRate(0)) {
    CFeeRate min_mempool_feerate{mempool.GetMinFee()};
    CFeeRate min_relay_feerate{mempool.m_min_relay_feerate};
    feeRate = std::max({feeRate, min_mempool_feerate, min_relay_feerate});
    result.pushKV("feerate", ValueFromAmount(feeRate.GetFeePerK()));
} else {
    errors.push_back("Insufficient data or no feerate found");
    result.pushKV("errors", errors);
}
result.pushKV("blocks", feeCalc.returnedTarget); 

Therefore we need to ensure min_mempoool_feerate and min_relay_feerate are both below 5000 sat/vKB on the nodes used for estimation.

Does anyone know what else holds it this high?

1 Answers1

3

Turned out we had an override for minrelaytxfee in the config file:

# Mempool
minrelaytxfee=0.00005 
  • Hi Chris, thanks for returning to answer your own question! Welcome to Bitcoin Stack Exchange. – Murch Oct 17 '23 at 14:58