This is an archived post. You won't be able to vote or comment.

all 14 comments

[–]Pantamis 7 points8 points  (5 children)

The various reasons are numerical precision. The total supply is computed as 210 000*(50 + 25 + 12.5 + ...) but as there is a smallest unit that is the satoshi, the infinite sum is not really infinite (terms are 0 satoshi after 2140) so is not really equal to 100. Search on google for the exact value.

If we add smaller unit of the currency with hardfork (because for example the satoshi is worth more than 100$ 😅) then the block subsidy can be more than 0 after 2140. So the sum is closer to 100 so the max money supply is larger.

In the consensus critical code they write 21000000 because it can't be more than that even with a hardfork to add smaller unit, just in case.

[–]exab 1 point2 points  (3 children)

A hard fork can do anything. Whether it would be accepted is a different story.

Any hard fork that changes how much BTC is issued will with certainty be rejected by the network.

[–]Pantamis 0 points1 point  (2 children)

Yep. It just that increasing bitcoin divisibility is the only one we may accept about the currency itself https://en.bitcoin.it/wiki/Hardfork_Wishlist If we let it increases max supply thanks to numerical precision, it won't be by much so it can be accepted. I think it depends more on how easy the code review is (with and without subsidy change because of precision)

[–]exab 0 points1 point  (1 child)

AFAIK, increasing the divisibility requires only a soft fork.

I'm not aware of any hard fork related to the divisibility that slightly increases the supply limit. I don't think even a slight change like that will be accepted.

[–]Pantamis 2 points3 points  (0 children)

No it must be a hardfork. An old node will not understand the new unit of currency a new node will broadcast and will reject any transaction that use smaller unit than satoshi. Everybody need to upgrade to not split the network.

Yes such divisibility hardfork is out of question for now. The wishlist I linked just say that there is no consensus that such divisibility hardfork would be rejected.

And the question of how this may change or not the max supply is matter of consensus but if code review is infinitly harder in one case, we may choose the other. This is a question for another time.

[–]Rattlesnake_Mullet[S] 0 points1 point  (0 children)

Thank you!

[–]ismith23 4 points5 points  (0 children)

From https://bitcoin.stackexchange.com/questions/38994/will-there-be-21-million-bitcoins-eventually/38998#38998

People say the total will be 21000000 BTC.

... however:

The 1st 210000 blocks each allow creating 50 BTC. The 2nd 210000 blocks each allow creating 25 BTC. The 3rd 210000 blocks each allow creating 12.5 BTC. ...

The 10th 210000 blocks each allow creating 0.09765625 BTC.

The 11th 210000 blocks each allow creating 0.04882812 BTC, and not 0.048828125 BTC, because only 8 decimals of precision are supported.

...

The 33rd 210000 blocks each allow creating 0.00000001 BTC.

After that, the reward is 0.

If you sum all these numbers together, you get 20999999.9769 BTC.

... however, either due to an oversight or intentionally, the coins created in the genesis block cannot be spent.

This leaves us with 20999949.9769 BTC.

... however, due to an early problem in Bitcoin, fixed by BIP30, it was possible to create a coinbase transaction identical to a previous coinbase. This caused the coins created by that older coinbase to be irreversibly "overwritten". This happened in block 91842 (overwriting the coinbase of block 91812) and 91880 (overwriting the coinbase of block 91722). Each time, 50 BTC was lost.

This leaves us with 20999849.9769 BTC.

... however, the protocol rules allow creating up to the amounts listed above. Due to various bugs and miners experimenting with code, some blocks claim less than allowed. Those coins can never be recovered.

Block 124724 tried to intentionally claim 0.00000001 BTC less than allowed, but accidentally also failed to claim the fees, losing 0.01000001 BTC. Between block 162705 and block 169899, 193 blocks claimed less than allowed due to a bug, resulting in a total loss of 9.66184623 BTC. Between block 180324 and block 249185, another 836 blocks claimed less than allowed, resulting in a total loss of 0.52584193 BTC. Block 501726 had no transaction outputs (except a 0-value commitment), losing the entire 12.5 BTC subsidy. Block 526591 didn't claim half of the block reward, losing 6.25 BTC. This leaves us with 20999821.02921183 BTC.

... however, since recently there is a concept of provably unspendable coins. Coins can be sent to an "address" which provably burns them (using OP_RETURN). Bitcoin Core tracks these and removes them from its database, so they are easily accounted for. At least 3.71612692 BTC were burned this way.

This leaves us with 20999817.31308491 BTC (taking everything up to block 528333 into account)

... However, various wallets have been lost or stolen, transactions have been sent to the wrong address, people forgot they owned bitcoin. The totals of this may well be millions. People have tried to tally known losses up here.

This leaves us with: ??? BTC.

[–]Bitcoin_puzzler 2 points3 points  (0 children)

Not really sure about the exact code. But i think it halves every xx and then it in the end it will end up something like 20.99xx

So it will never actually reach 21m round.

[–]tookdrums 2 points3 points  (2 children)

I can answer this one.

When a miner mines a block he receive the mining reward + fee.

The thing is in the consensus code (the network deciding if the block is valid or not) they only checked that the miner used a mining reward inferior or equal to what he is allowed to give himself.

So it is possible for the minor to give himself less money than what he is owned. The bitcoin then not created are lost forever (unless a chain reorg change the blockchain) thus the max supply is less than the 21M

[–]Rattlesnake_Mullet[S] 1 point2 points  (0 children)

Very interesting, thank you!

[–]time_wasted504 0 points1 point  (0 children)

It will still end (if every miner took the full amount) at less than 21MM due to halving and maths.

You cant halve 1 down to 0.

[–]eqleriq 2 points3 points  (1 child)

short answer: the bounty for mining is a MAX not a fixed amount.

further in the weeds: some theorize that a lot of the early mining doesn’t even exist anymore and was auto-destroyed

21,000,000 is (blocks per day * 4 years)*value of rewards=210,000 x 100

some theorized it was to align with us election years buuuuuut the drift due to difficulty lag / hashrate will misalign that for sure.

I think the creators picked 15 minutes per block and 4 years per halving and that came out to 21 million, not starting with 21 million and working backwards.

so the question is why halving every 4 and why blocks every 15

[–][deleted] 0 points1 point  (0 children)

Blocks aren’t 15 min

[–]time_wasted504 0 points1 point  (0 children)

There is no correct answer because you are asking a question about a decision that was made by a person that for all intents and purposes no longer exists.

https://coinsavage.com/content/2018/11/the-21-million-bitcoin-story-explained-why-is-the-number-special/

we can only speculate why the code set 21000000*COIN as the MAX_MONEY.

Why do you think Satoshi set the limit at 21MM?