[RPC] estimatesmartfee Signet responding with unreasonable estimates #35507

issue portlandhodl opened this issue on June 10, 2026
  1. portlandhodl commented at 6:19 PM on June 10, 2026: none

    Is there an existing issue for this?

    • I have searched the existing issues

    Current behaviour

    Currently on signet at height 308319 is for both estimatesmartfee modes suggesting 1600+ sats/vByte then after 7+ blocks dropping to .1 sats/vByte. This is happening during a time when blocks are not full. This was caught with a secondary out of band sanity check on a psbt.

    <img width="236" height="230" alt="Image" src="https://github.com/user-attachments/assets/8f143743-d8ed-474f-b526-3e19d2357d96" />

    Expected behaviour

    Reasonable .1-1 sats/vByte fee results

    Steps to reproduce

    Run the estimatesmartfee rpc on signet in either estimate mode for confirmation block target of 1-6

    Relevant log output

    No response

    How did you obtain Bitcoin Core

    Compiled from source

    What version of Bitcoin Core are you using?

    v31

    Operating system and version

    Ubuntu 24.04

    Machine specifications

    No response

  2. portlandhodl renamed this:
    [RPC] Estimatesmartfee Signet giving out unsafe/high estimates
    [RPC] Estimatesmartfee Signet responding with unsafe/high and unreasonable estimates
    on Jun 10, 2026
  3. portlandhodl renamed this:
    [RPC] Estimatesmartfee Signet responding with unsafe/high and unreasonable estimates
    [RPC] Estimatesmartfee Signet responding with unreasonable estimates
    on Jun 10, 2026
  4. portlandhodl renamed this:
    [RPC] Estimatesmartfee Signet responding with unreasonable estimates
    [RPC] estimatesmartfee Signet responding with unreasonable estimates
    on Jun 10, 2026
  5. ismaelsadeeq commented at 12:00 AM on June 11, 2026: member

    Thanks for the report, @portlandhodl.

    I checked my benchmarks, I observed the same behaviour, and it's still happening.

    This is not anything bizarre :). The block policy fee estimator is reactive and based on confirmed mempool transactions.

    From the historical fee rates in blocks preceding 308319, you can see that some absurd fees were being paid, and those data points influenced the fee rate estimate recommendation significantly because of the sparse data points.

    <img width="1289" height="679" alt="Image" src="https://github.com/user-attachments/assets/a9a4f3c9-e6ea-4695-a814-01f5f3e03508" />

    This data is for confirmation targets (1,2). The spike started, as is evident in the block's actual fee range in grey, and the fee rate estimator picked it up, then started correcting itself to reflect the recent fee rate trend.

    This is more likely on signet because the data points are a bit sparse, but it is also likely to happen on mainnet as well.

    I have a parallel effort to make it active with respect to mempool uncormfirmed transaction and prevent the estimator from correcting to high fee rate estimates when the mempool is actually empty see #34075. It reduces the overestimation significantly.

  6. ajtowns commented at 4:55 AM on June 11, 2026: contributor

    Oh, the explanation might be something like this:

    • there's not that much traffic on signet, so there's not a big range of fees -- most of them are either 1-2 sat/vb, or absurdly high, eg 4834 sat/vb. And what few mid-range txs there are often use inquisition features, so don't appear in non-inquisition mempool's to participate in fee-rate estimates.
    • signet block sizes are artificially limited to 250kvB, so it doesn't take much to go from "everything in mempool confirms" to "some things get delayed"
    • when we do hit "some things get delayed", that quickly reaches the 2 sat/vb level, and the next thing in the "reliably confirmed" fee estimator's buckets are already at absurd fee levels, so that's what the estimator spits out

    I've changed the faucet refill transactions to have random feerates rather than estimated feerates, so that might give the estimator a bit more data to work from in future.

  7. ismaelsadeeq commented at 8:01 AM on June 11, 2026: member

    signet block sizes are artificially limited to 250kvB

    Unrelated question, but curious why?

    I've changed the faucet refill transactions to have random feerates rather than estimated feerates, so that might give the estimator a bit more data to work from in future.

    Won't hurt, but I think this is a bit of a tangent to real mainnet conditions, users do not use random fee rates for transactions; if they don't target ASAP confirmation, it usually has a target > 1,2. that should be more ideal than just random, if you do random you might select a very low fee rate below min relay fee or a very low fee that will take the refill tx some time to confirm. Randomizing the confirmation target seems more ideal.

  8. ajtowns commented at 2:37 PM on June 11, 2026: contributor

    signet block sizes are artificially limited to 250kvB

    Unrelated question, but curious why?

    So that you can get fee rate pressure without needing to create as many dummy transactions.

    I've changed the faucet refill transactions to have random feerates rather than estimated feerates, so that might give the estimator a bit more data to work from in future.

    Won't hurt, but I think this is a bit of a tangent to real mainnet conditions, users do not use random fee rates for transactions; if they don't target ASAP confirmation, it usually has a target > 1,2. that should be more ideal than just random, if you do random you might select a very low fee rate below min relay fee or a very low fee that will take the refill tx some time to confirm. Randomizing the confirmation target seems more ideal.

    Real mainnet conditions over the last 1000 blocks:

    • there were ~40 blocks where a feerate of 5 sat/vb wasn't enough to get you into the block
    • there were ~895 blocks where the top ~20 txs were paying more than 5 sat/vb

    That seems pretty random to me...

    Blocks and the mempool on mainnet generally don't have long periods where there's activity at feerates X and Z, but almost no activity at fee rate Y, where X < Y < Z. When that happens, I believe the estimator will just combine buckets until there's sufficient total activity across the combination, and then use the highest feerate. So mainnet's variety of observed feerates should help the estimator degrade gracefully, whereas I think signet's choppy observed feerates will cause the estimator to degrade equally choppily.

  9. ismaelsadeeq commented at 10:36 AM on June 16, 2026: member

    I've changed the faucet refill transactions to have random feerates rather than estimated feerates, so that might give the estimator a bit more data to work from in future.

    I checked the stats from 308345 to 309090, and this is still happening, I think

    <img width="1341" height="713" alt="Image" src="https://github.com/user-attachments/assets/976b0f60-7841-4086-95f4-f28f84c153a9" />

    Block Policy fee rate estimate recommendation at block height 309090 for confirmation target (1/2) was 452.9 sat/vB, while the signet mempool was almost empty. See the confirmed block at that height

  10. ajtowns commented at 9:13 PM on June 16, 2026: contributor

    Another possibility is that txs aren't making it into mined blocks, and are thus triggering the "txs at this feerate aren't getting confirmed reliably" logic. I'm seeing that happen occassionally, but can't see why (failing AlreadyHave() checks, possbily?). Maybe related to running semi-regular reorgs, and that mempool ancestor/descendant/cluster limits will cause evictions that might not be consistent between the mining nodes and the rest of the network?


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-06-20 23:51 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me