At Blockchain, we strive to make digital currency safe and easy for everyone to use. Part of that goal is providing effective miners’ fee recommendations for every transaction our users make. Bitcoin has recently reached its peak capacity, with a consistent queue of tens of megabytes of transactions waiting to be confirmed. As bitcoin interest and activity continues to grow (and we can expect this trend to continue), we’ve made two important changes to our wallet:
- The introduction of a new fee recommendation algorithm aimed at being more reactive to changing network conditions and providing a better, more consistent experience for our users.
- A new ‘Priority’ option which aims to have your transaction included in a block within 60 minutes. This feature is currently available via our Web and Android wallets and will be included in our upcoming iOS release; available the week of June 19th.
How Fee Recommendations Work
In Bitcoin, transaction fees are used to incentivize miners to confirm transactions by including them in a block which is then appended to the previous blocks, creating a ‘block chain’. Rational miners will select transactions paying a higher fee per byte. ‘Fee per byte’ is represented in satoshis/B (‘sat/B’ for short) and can be seen when viewing a transaction on our explorer:
Recommending a fee that will achieve a confirmation within a specific time window would require knowing what fee per byte future transactions will pay and therefore is not possible to do reliably. There are many approaches to fee recommendations. Bitcoind, for example, tracks how long past transactions took to confirm and how much they paid in order to determine a fee level which will confirm a transaction in a given number of blocks most of the time. This gives conservative estimates but does not react quickly to changing network conditions (which can be very dynamic) and often results in users either paying too much or too little.
In looking at trends of mempool size growth, it’s apparent the mempool can experience rapid and unpredictable increases in size. Therefore it is important that our fee recommendations adjust rapidly as transactions using slow-to-update fee recommendation algorithms that are not overly conservative (expensive) can experience dramatic increases in confirmation time.
Our approach observes recent network activity to determine the rate of growth for each fee level. This gives us a picture of how much the network is paying for blockspace and in what proportions. Using that data and a snapshot of bytes in the mempool at every fee level, we extrapolate mempool state into the near future to find a fee level that puts a transaction at the right place in the unconfirmed queue for a targeted confirmation range. This produces fee recommendations that adapt more quickly to abrupt changes in network conditions and results in a more consistent user experience.
We plan on continuing to improve our fee recommendations in the future.
Visualizing Mempool Activity
Our algorithm requires that we capture mempool state data over time in order to determine fee level growth in bytes per second. As a result, we’re able to produce visualizations depicting mempool activity over time:
In addition to plotting bytes per fee level, we also include in the chart our ‘regular’ and ‘priority’ fee level recommendations for any given moment in time (seen as vertical lines in red and blue). This new chart is available here.
We hope this tool provides people with a better understanding of how the mempool and fees work. Our current fee recommendations are also available via our API.
Priority Fee Option
As pictured below, the new Priority fee option can be found in our web and Android wallets today. If you’re on iOS, stay tuned for our upcoming release which will include this priority fee update.
Feeling intrigued? Visit our careers page to view our open positions and help us build an open, accessible and fair financial future.