bitcoin core – estimatesmartfee ​​produces very different results

Around block 564815 (2019-02-26 23:40 UTC), the mempool was empty. I noticed that my two nodes give very different estimates of the transaction fees to use:

Node 1

  • Version: 17.1.0
  • Number of peers: 21
  • Synchronized for: about three weeks
  • Stunned: 3 GB



// see how many transactions are there in mempool
> bitcoin-cli getrawmempool | wc -l
4027

> bitcoin-cli estimatesmartfee ​​5 {
"Feerate": 0.00021195,
"Blocks": 5}

> bitcoin-cli estimatesmartfee ​​5 ECONOMICAL {
"Feerate": 0.00009715,
"Blocks": 5}

Node 2

  • Version: Bitcoin Core 17.0.0
  • Number of peers: 8
  • Synchronized for about 5 hours
  • Stunned: 3 GB



# see how many transactions are there in the mempool
> bitcoin-cli getrawmempool | wc -l
3999

> bitcoin-cli estimatesmartfee ​​5
{
"Feerate": 0.00008823,
"Blocks": 5
}

> bitcoin-cli estimatesmartfee ​​5 ECONOMIC
{
"Feerate": 0.00001000,
"Blocks": 5
}

The node that has only been synchronized for 5 hours and is less well connected seems to better estimate the fees than the one that has been synchronized for three weeks. Why the "best" knot the one that gives the worst price? Why are the cost estimates so different and what can be done to make them more accurate?