Original: Liu Jiaolian
A piece of flying flowers reduces the spring, and the wind blows thousands of points, which makes people sad. Let's watch the flowers that are about to fade away, and don't be tired of the wine that enters your lips.
In the crypto market in May, BTC (Bitcoin) hesitated at 60,000 dollars, and the flowers fell red as spring went away. There was not much excitement, but wandering by the lake, looking at the green water and green mountains, the heart is peaceful, and the position is far-reaching.
BTC is the root of the crypto industry. The upper limit of 21 million in total is the foundation of BTC. Everything starts from this magical number. But why is it such a number?
Jiaolian wrote in the article "Why is there only 21 million Bitcoins at most? " on December 5, 2020 》, the calculation method of this number was introduced. In short, it is as follows:
1. 50 BTC per block
2. Every 210,000 blocks, the output is halved
Using the geometric progression to sum, it can be easily calculated that the final total output of BTC is: (50 + 25 + 12.5 + 6.25 + 3.125 + ...) x 210,000 = 21 million.
Furthermore, the difficulty of "mining" is adjusted so that a new block is generated approximately every 10 minutes, that is, 6 new blocks per hour, and 210,000 blocks is about 4 years in the human world.
This is the origin of the 4-year halving cycle of Bitcoin production.
However, this is just a elaboration of established facts. First, it lacks some detailed investigation; second, it does not really reveal why the inventor of Bitcoin, Satoshi Nakamoto, chose and designed such a number.
Let's talk about the details first.
First, 21 million is not 21 million, but 2,099,999,997,690,000. Yes, the latter number is 100 million times larger than 21 million, that is, about 2100 trillion. Inside the Bitcoin system, it is all this trillion-level integer.
When we "display" BTC as 8 decimal places above this integer, it becomes 2 0,99 9,99 9.97 690 000. Here I use a space to indicate the thousandth division point when it is an integer above. We can see at a glance that Satoshi's choice of 8 decimal places is actually a bit strange, because this will cause the comma separation point of the 8-digit decimal BTC integer part to be inconsistent with the comma separation point of the real integer in the system.
8 decimal places, that is, one in 100 million, is not very Western. As we all know, English uses thousandths to separate numbers, so the units of counting are thousand, million, billion, and trillion. There is no unit of "hundred million" in English. The Chinese counting method is slightly different. It is divided by 4 digits, that is, ten thousandths, and there are ten thousand, hundred million, and trillion.
2100 trillion divided by ten thousandths is like this: 2099 9999 9769 0000; 21 million with 8 decimals is like this: 2099 9999.9769 0000. There are 4 bars, 4 digits in each bar, and no confusion. So it seems that 8 decimal places, 1 in 100 million, well, this is very oriental.
Secondly, the reason why 2100 trillion is 2,099,999,997,690,000 instead of the exact 2,100,000,000,000,000 is also because of the precision limit of 8 decimal places.
The geometric sequence (50 + 25 + 12.5 + 6.25 + 3.125 + ...) mentioned above is not a true infinite sequence, but when it is reduced to 0.0000 0001, it will return to zero after being halved. Therefore, this is a truncated finite sequence, and its sum is less than the sum of the infinite sequence, 100. Therefore, after multiplying by 210,000, the final result will also be slightly less than 21 million.
Third, pay attention to the description of the first point. The 8 decimal places and the decimal point are just a "display" design. There is only the trillion-level integer inside the system.
Since it is just a "display", the decimal point can be moved at will. Now it is at the 8th decimal place, and it can also be at the 5th or 4th decimal place in the future.
For example, 20,999,999,976.90000 (5 decimal places), or 2099 9999 9769.0000 (4 decimal places).
So, when 1 Bitcoin with 8 decimal places is shifted to 5 decimal places, it will be displayed as 1000, and when it is shifted to 4 decimal places, it will be displayed as 10000. Correspondingly, the original 0.001 or 0.0001 BTC will now be displayed as 1.
This idea of shifting is not invented by Jiaolian, but the real idea of Satoshi Nakamoto. In a letter to Mike Hearn on April 12, 2009[1], Satoshi Nakamoto wrote: "My choice for the number of coins and distribution schedule was an educated guess. It was a difficult choice, because once the network is going it's locked in and we're stuck with it. I wanted to pick something that would make prices similar to existing currencies, but without knowing the future, that's very hard. I ended up picking something in the middle. If Bitcoin remains a small niche, it'll be worth less per unit than existing currencies. If you imagine it being used for some fraction of world commerce, then there's only going to be 21 million coins for the whole world, so it would be worth much more per unit. Values are 64-bit integers with 8 decimal places, so 1 coin is represented internally as "My choice of the number of coins and the issuance schedule was very deliberate. It was a hard choice because once the network is up and running it's locked in and we're stuck with it. I wanted to pick a (number) that would keep the price close to existing currencies, but that's hard to do without knowing the future. In the end I chose something in the middle. If Bitcoin remains a niche currency, then its unit value will be lower than existing currencies. If you imagine Bitcoin being used for some part of world commerce, then there are only 21 million Bitcoins in the world, so its unit value will be higher." Coin values are 64-bit integers with 8 decimal places, so 1 coin is represented internally as 100000000. If typical prices get smaller, there is enough granularity. For example, if 0.001 is worth 1 EUR, it might be easier to see and use it by changing where the decimal point is displayed, so if you have 1 Bitcoin, it is now displayed as 1000, while 0.001 is displayed as 1. ” Some people say that for common 64-bit computers, if we use 64-bit binary numbers to represent both integers and decimals (also known as floating-point numbers), then the safest approach is to limit integers to the upper limit of the integer part of floating-point numbers. Friends who know a little about computer principles know that there are no decimals inside computers, only digits of 0 and 1. The so-called 64-bit integer refers to a binary integer composed of 64 0s or 1s. The corresponding decimal number is 2^64 = 18446744073709551616. This number is much larger than 210 trillion. However, if you want the computer to be able to process floating-point numbers, you have to split a part of the 64 bits to express the decimal part, and leave 1 bit to indicate the positive and negative signs. This became the IEEE 754 floating-point encoding standard. The standard defines that double-precision floating-point numbers are encoded in 64-bit binary as follows: src="https://img.jinse.cn/7223875_image3.png">
In this way, the integer part can only use 53 bits, that is, the maximum is no more than 2^53 = 9007199254740992. If you want to easily test whether the result is an integer, it is best not to exceed 2^51 = 2251799813685248. In this way, you can choose 22 (quadrillion), but 22 is not a "triangular number", so Satoshi Nakamoto chose 21 (quadrillion).
According to this, many people believe that Satoshi Nakamoto's choice of 2100 trillion greatly facilitates various programming languages to handle calculations related to the number of bitcoins.
"I thought about 100 BTC and 42 million, but 42 million seemed high.
"I wanted typical amounts to be in a familiar range. If you're tossing around 100000 units, it doesn't feel scarce. The brain is better able to work with numbers from 0.01 to 1000.
"If it gets really big, the decimal can move two places and cents become the new coins."
"It seems that Satoshi Nakamoto set the time parameters first, and then adjusted the block output and total amount, and thought about what number was more appropriate.
According to Satoshi Nakamoto, the number of BTC in most people's hands should be between 0.01 and 1000. Don't make a 6- or 7-digit coin at will, as that will lack a sense of scarcity.
The above is the ins and outs of the total number of 21 million coins.