Bitcoin: Mixed Signs of A Fee Market
Six months ago in a previous post I showed that 45% of transactions have an output of less that $1, and estimated that they would get squeezed out first as blocks filled. It's time to review that prediction, and also to see several things:
- Are fees rising?
- Are fees detached from magic (default) numbers of satoshi?
- Are low value transactions getting squeezed out?
- Are transactions starting to shrink in response to fee pressure?
Here are some scenarios: low-value transactions might be vanishing even if nothing else changes, because people's expectations ("free global microtransactions!" are changing). Fees might be rising but still on magic numbers, because miners and nodes increased their relayfee due to spam attacks (most commonly, the rate was increased from 1000 satoshi per kb to 5000 satoshi per kb). Finally, we'd eventually expect wallets which produce large transactions (eg. using uncompressed signatures) to lose popularity, and wallets to get smarter about transaction generation (particularly once Segregated Witness makes it fairly easy).
Fees For The Last 2 Years
The full 4 year graph is very noisy, so I only plotted the mean txfee/kb for each day for the last two years, in Satoshi and USD (thanks to the Coindesk BPI data for the conversion):
Conclusion: Too noisy to be conclusive: they seem to be rising recently, but some of that reflects the exchange rate changes.
Are Fees on Magic Boundaries?
Wallets should be estimating fees: in a real fee market they'd need to.
Dumb wallets pay a fixed fee per kb: eg. the bitcoin-core wallet pays 1,000 (now 5,000) satoshi per kb by default; even if the transaction is 300 bytes, it will pay 5,000 satoshi. Some wallets use (slightly more sensible) scaling-by-size, so they'd pay 1,500 satoshi. So if a transaction fee ends in "000", or the scaled transaction fee does (+/- 2) we can categorize them as "fixed fee". We assume others are using a variable fee (about 0.6% will be erroneously marked as fixed):
This graph is a bit dense, so we thin it by grouping into weeks:
Conclusion: Wallets are starting to adapt to fee pressure, though the majority are still using a fixed fee.
Low Value Transactions For Last 4 Years
We categorize 4 distinct types of transactions: ones which have an output below 25c, ones which have an output between 25c and $1, ones which have an output between $1 and $5, and ones which have no output below $5, and graph the trends for each for the last four years:
Conclusion: 25c transactions are flat (ignoring those spam attack spikes). < $1 and <$5 are growing, but most growth is coming from transactions >= $5.
Transaction Size For Last 4 Years
Here are the transaction sizes for the last 4 years:
Conclusion: There seems to be a slight decline in transaction sizes, but it's not clear the cause, and it might be just noise.
Conclusion
There are signs of a nascent fee market, but it's still very early. I'd expect something conclusive in the next 6 months.
The majority of fees should be variable, and they're not: wallets remain poor, but users will migrate as blocks fill and more transactions get stuck.
A fee rate of over 10c per kb (2.5c per median transaction) hasn't suppressed 25c transactions: perhaps it's not high enough yet, or perhaps wallets aren't making the relative fees clear enough (eg. my Trezor gives fees in BTC, as well as only offering fixed fee rates).
The slight dip in mean transaction sizes and lack of growth in 25c transactions to may point to early market pressure, however.
Six months ago I showed that 45% of transactions were less than a dollar. In the last six months that has declined to 38%. I previously estimated that we would want larger blocks within two years, and need them within three. That still seems a reasonable estimate.
Data
I used bitcoin-iterate and a really crappy Makefile to generate CSVs with the data. You can see the result on github or go straight to downloading the Gnumeric spreadsheet with the graphs.
Disclaimer: I Work For Blockstream
On lightning. Not on drawing pretty graphs. But I wanted to see the data...