RPC: getblockstats might not return the effective percentile fee rate #31140

issue ismaelsadeeq openend this issue on October 23, 2024
  1. ismaelsadeeq commented at 3:15 pm on October 23, 2024: member

    One of the responses from the getblockstats RPC is feerate_percentiles, which returns the following:

    0"feerate_percentiles": [    (json array, optional) Feerates at the 10th, 25th, 50th, 75th, and 90th percentile weight unit (in satoshis per virtual byte)
    1  n,                         (numeric) The 10th percentile feerate
    2  n,                         (numeric) The 25th percentile feerate
    3  n,                         (numeric) The 50th percentile feerate
    4  n,                         (numeric) The 75th percentile feerate
    5  n                          (numeric) The 90th percentile feerate
    6]
    

    Currently, the implementation simply appends the fee rates of all transactions in a block along with their corresponding weights to a vector, and then returns the percentile fee rates. https://github.com/bitcoin/bitcoin/blob/ffe4261cb0669b1e1a926638e0498ae5b63f3599/src/rpc/blockchain.cpp#L2027-L2030

    However, the fee rate of a transaction at a given percentile may not reflect its effective fee rate, as it could be fee-bumped by some descendant transactions.

    To address this, transactions within a block that are not independent should first be linearized using an ancestor-based linearization algorithm, for example using MiniMiner. This approach would be similar to what’s done in #30079.

    Note: MiniMiner will change alot due to #30289, which introduces a new form of linearization. While I assume linearization will still be supported in MiniMiner for mempool transactions, I’m unsure about support for linearizing non-mempool transactions.

    A more efficient approach would be to persist previous block package data. With this approach, I don’t see any reason to support linearizing non-mempool transactions in MiniMiner for now. While this would increase resource usage, I believe the trade-off is justified when compared to the complexity of linearizing clusters on the fly.

    Having this package data available from disk would be very helpful for both this issue and #30079.

  2. laanwj added the label RPC/REST/ZMQ on Oct 24, 2024


ismaelsadeeq

Labels
RPC/REST/ZMQ


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: 2024-12-23 09:12 UTC

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