A fixed supply in a growing economy: the Bitcoin demonstration
The PaSta whitepaper argues that when a currency's supply is fixed and its economy grows, each transaction has to become a smaller slice of the supply. Bitcoin is the natural test case. This page rebuilds that chart from public chain data and corrects two things the original analysis skipped: newly minted coins, and what happened to the real size of a transaction.
Data through from the blockchain.com charts API (daily: price, confirmed transactions, estimated transaction volume with change outputs removed, coins in circulation, unique addresses, fees). Monthly medians of daily values from 2011. Generated , commit . Reproduce with the commands at the bottom.
1. The coarse model
Take a coin with a fixed supply. Each person wants to hold about the same real amount of money and makes about the same real purchases. If the number of people doubles, the same coins have to serve twice the real economy, so each coin must buy twice as much: price per coin doubles and the number of coins in a typical transaction halves. Price goes up with users; coins per transaction go down as one over users. That is all the model says.
Toy: fixed supply, users grow 1x to 100x
both axes logarithmic; everything relative to the start
2. Bitcoin, raw: price up, coins per transaction down
This is the whitepaper's chart. Price on top; below it the average transaction size in BTC, computed as estimated transaction volume divided by the number of transactions (estimated volume strips out change outputs, which would otherwise inflate every figure).
Bitcoin price, USD
monthly median, log scale
Average transaction size, BTC
estimated volume / transactions, log scale
3. Correction one: minted coins
Bitcoin's supply is not fixed yet. It roughly tripled over this period (M to M coins), so part of any fall in "BTC per transaction" is just each coin being a smaller share of a bigger pile. The clean quantity is the share of circulating supply moved per transaction. Adjusting makes the fall larger, not smaller, so the original chart understated the effect, as the whitepaper suspected.
Raw vs. supply-adjusted transaction size
both indexed to January 2011 = 1, log scale
4. Does the toy fit? Slice of supply against number of users
If the coarse model is right, the share of supply per transaction should fall as one over the number of users: a straight line of slope minus one on log-log axes. Using daily active addresses as the user count, that is what the early years show. After 2017 the relationship disappears, because active addresses stopped growing while the economy kept growing: block space ran out and activity moved to exchanges and off-chain systems.
Share of supply per transaction vs. active addresses
monthly medians, log-log
Elasticities by era (slope of log y on log x; minus one means exactly inverse)
5. Correction two: what a transaction was actually worth
The whitepaper reads the falling BTC size as transactions tracking purchasing power. If that were the whole story, the USD size of an average transaction would be roughly flat. It is not. It rose from tens of dollars to thousands. Coins per transaction fell about 40% as fast as the price rose (elasticity ), and the other 60% shows up as much larger real transactions (elasticity ). The fee chart says why: once block space became scarce, small payments were priced off the chain and the on-chain average came to reflect large transfers between exchanges and large holders.
Average transaction size, USD
monthly median, log scale
Fee per transaction, USD
monthly median, log scale
Table view: yearly medians
6. What this means for PaSta
Two caveats on the data itself. Only the mean transaction size is available for free; the median would be far less dominated by exchange and whale transfers and is worth buying or computing from a full node. And "estimated transaction volume" is a heuristic for removing change outputs, so the absolute levels are approximate even though the trends are robust.
7. Reproduce
git clone https://github.com/pastacoin/pastacoin && cd pastacoin python -m venv .venv && .venv/Scripts/pip install -e ".[dev,report]" .venv/Scripts/python -m pasta.analysis.bitcoin_report --figures figures # uses the committed data/bitcoin-daily.csv .venv/Scripts/python -m pasta.analysis.bitcoin_report --fetch --figures figures # refresh from blockchain.com first