HOW TO verify the total supply of bitcon AKA "Run The Numbers"
Do you know how many dollars/euros were printed?
Do you know how much gold was mined?
The answer to both questions is no. Some individuals in government may know something that allows them to make guesses, but the fact is that no one on the face of the earth can answer these questions with any accuracy.
Bitcoin is different
For the first time in human history, anyone has the freedom to discover the exact total supply of a global monetary asset, without the need to ask permission or rely on someone else. All that is required is an already synchronized node and about 5 minutes of your time.
How to
Verifying the total supply of all existing bitcoins is much easier than you might imagine. If you run your own node, you can do it whenever you want, as often as you want, and in total security since you only use your own hardware and open source software.
Let's assume you are on a Linux terminal, run:
$ bitcoin-cli gettxoutsetinfo
Depending on your hardware, it can take up to 5 minutes to get this output (sample):
{ "height": 824446, "bestblock": "0000000000000000000379c7aefeaf9657f68e46474a66f0063277f56cea4003", "txouts": 154157349, "bogosize": 11744309858, "hash_serialized_3": "632a3476126c1bd1ed0dc6d8c432edad4fae7266cb2679110c6e88594530b6c3", "total_amount": 19590074.24589448, "transactions": 106896960 }
This tells us that - out of a maximum total of 21 million bitcoins - 19,590,074.24589448 million are already in circulation (about 93%) as per
"total_amount"
The Numbers
So how did my node come to the conclusion that at the time I ran the
gettxoutsetinfo
command there were a total of 19,580,074.24589448 bitcoins in existence out of a known total of 21,000,000 ?Bitcoin has a fixed issuance schedule that decreases as each halving occurs (every 210,000 blocks or about four years). These periods are sometimes referred to as Epoch.
Here is a summary of the supply in all historical Epochs up until now.
Next halving is expected on or about April 2024
EPOCH | YEARS | BLOCK | REWARD | HALVING |
---|---|---|---|---|
5 | 2024-2008 | 840,000 | 3.125 | on or about Arp, 2024 (4th halving) |
4 | 2020-2024 | 630,000 | 6.250 | May 11, 2020 (3th halving) |
3 | 2016-2020 | 420,000 | 12.500 | Jul 9, 2016 (2nd halving) |
2 | 2012-2016 | 210,000 | 25.000 | Nov 28, 2012 (1st halving) |
1 | 2009-2012 | 1 | 50.000 | Jan 9, 2009 (genesis block) |
We now realized that we can calculate the expected amount of bitcoin at any block height.
824,446 = The block height at the time of execution of "gettxoutsetinfo" 629,999 = The height of the last block before the current Epoch 194,447 = (824,446 - 629,999) How many blocks have passed during the current Epoch
EPOCH | REWARD * BLOCKS | AMOUNT ISSUED |
---|---|---|
1 | 50 * 210,000 | 10,500,000 |
2 | 25 * 210,000 | 5,250,000 |
3 | 12.5 * 210,000 | 2,625,000 |
4 | 6.25 * 194,447 | 1,215,293.75 |
TOTAL BTC issued | 19,590,293.75 | |
total_amount | 19,590,074.24589448 | |
Difference | 219.50410552 |
However, my node calculated that at the height of block 824,446 there were actually 19,590,074.24589448
Are we missing some bitcoin?
Why would my node calculate that there are actually 219.50410552 fewer bitcoins in existence than the known issuance schedule suggests there should be?
There are a number of reasons that are outlined in great detail in this Fjhar article or you can read a shorter version in this response on Bitcoin Stack Exchange.
Here is a very brief summary...
- It is hard coded in the Bitcoin code that the genesis block reward cannot be spent and is not part of the UTXO set
- Duplicate TxID (transaction ID) as outlined in BIP30
- Coins "burned" in OP_RETURN messages.
- Miners do not claim the entire block reward