原題:Liu Chuanchain
花のかけらは飛ぶが春、風は万点を漂うが悲しい。
目には花を、唇には酒を。
5月の暗号市場、6万ナイフのBTC(ビットコイン)はつまずき、春の花は赤く落ちる。非常に活気のあるものはありませんが、湖の周りをさまよい、緑の水と山を見て、心は静かで、位置は遠く離れている。
BTCは暗号業界のルートです。合計2100万というキャップがBTCの根源です。すべてはこのマジックナンバーから展開される。しかし、なぜそのような数字なのでしょうか?
ティーチングチェーンは、2020年12月5日の記事「なぜビットコインの上限は2100万枚になるのか?という記事で、この数字の計算について述べている。
1.1ブロックあたり50BTC
2.21万ブロックごとに、収量は半分になる
等価級数和を使うと、次のようになります。等価級数和を使用すると、最終的なBTCの総生産量を簡単に計算することができます: (50 + 25 + 12.5 + 6.25 + 3.125 + ...) x 210,000 = 2100万個である。
さらに、およそ10分ごとに新しいブロックが生成されるように「採掘」の難易度を調整すると、1時間に6個の新しいブロックが生成されるため、21万ブロックは地球上でおよそ4年になります。
これがビットコインの4年半減サイクルの由来です。
しかし、これは既成事実に対する単なるツッコミに過ぎない。もうひとつは、ビットコインの発明者であるサトシ・ナカモトが、なぜそのような数字を選び、デザインしたのかがよくわからないことだ。
まずは詳細だ。
まず、2100万は2100万ではなく、2,099,999,997,690,000である。そして、そう、その後に続く数字は2100万の1億倍の大きさで、およそ2100億である。ビットコインのシステム内部では、この1兆ドルの整数がすべてなのだ。
BTCをこの小数点以下8桁の整数として「表示」すると、2,0,99 9,99 9.97 690,000となる。ここでは、スペースを使って、上の千の分割点を整数としてヒントにした。サトシ・ナカモトの小数点以下8桁の選択は、実は少し奇妙であることが一目でわかるだろう。小数点以下8桁のBTCの整数部分のコンマ分割点が、システム内の実整数のコンマ分割点と一致しないことになるからだ。
小数点以下8桁、つまり1億分の1は、欧米ではあまり使われない。ご存知のように、英語では数字は千単位に分けられるので、数える単位は千、百万、億、兆となる。英語には「億」という単位はない。中国語の数え方は少し違っていて、4桁、つまり1万分の1ずつで、万、億、兆がある。
2100万を1兆で割ると、2099 9999 9769 0000となり、2100万を小数点以下8桁で割ると、2099 9999.9769 0000となる。というわけで、小数点以下8桁で1億分の1というのは、まあ、なかなかオリエンタルな感じである。
上の等比級数(50 + 25 + 12.5 + 6.25 + 3.125 + ...)は、本当の無限級数ではない。は本当の無限級数ではなく、0.0000 0001まで減らして半分にするとゼロになる。したがって、これは切り捨てられた無限級数であり、その和は無限級数の和である100より小さいので、21万を掛けた後の最終結果も2100万よりわずかに小さい。
第三に、物語の最初のポイントである、小数点以下8桁と小数点以下は「表示」レベルの設計に過ぎないことに注意されたい。システム内部には数兆個の整数しかない。
単なる「表示」なので、小数点は実際に動かすことができる。今は小数点以下8桁で、後で小数点以下5桁や4桁にすることもできます。
たとえば、20,999,999,976.90000(小数点第5位)、または2099 9999 9769.0000(小数点第4位)。
すると、8進数の1ビットコインは、5進数にシフトすると1,000と表示され、4進数にシフトすると10,000と表示されます。したがって、0.001または0.0001 BTCだったものは、1.
このシフトのアイデアは、ティーチングチェーンのでっち上げではなく、サトシ・ナカモトの本物のアイデアである。2009年4月12日のマイク・ハーンに対するサトシ・ナカモトの返信[1]の中で、彼は次のように書いています:
「コインの数と配布スケジュールに関する私の選択は、経験に基づく推測でした。というのも、いったんネットワークが始まれば、それは固定され、私たちはそこから抜け出せなくなるからです。というのも、一度ネットワークが動き出すと、それは固定化され、私たちはそこから抜け出せなくなるからだ。ビットコインがニッチで小さいままであれば、既存の通貨よりも1単位あたりの価値は低くなるだろう。ビットコインが世界の商業の何分の一かに使われることを想像すると、全世界で2100万コインしかないことになり、1単位あたりの価値はもっと高くなる。そのため、1コインは内部的には100000000として表現される。例えば、0.001が1ユーロの価値がある場合、小数点以下の表示場所を変更する方が簡単かもしれない。1ビットコインを持っていた場合、1000と表示され、0.001は1000と表示され、0.001は1ユーロと表示される。
「コインの枚数と発行スケジュールは、よく考えて選びました。一旦ネットワークが稼働すれば、それは固定され、私たちはそこから抜け出せないからです。既存の通貨と同じような価格になるような(数字を)選びたかったが、将来がわからない以上、それは難しい。結局、中央値を選んだ。ビットコインがニッチ通貨であり続けるなら、その単価は既存通貨より低くなる。ビットコインが世界の商業の一部に使われることを想像すれば、世界には2100万ビットコインしかないので、その単位価値は高くなる。コインの価値は小数点以下8桁の64ビット整数なので、1コインは内部的には100,000,000と表現される。典型的な(アプリケーションシナリオの)価格が小さくなっても、十分な粒度がある。例えば、0.001が1ユーロの価値がある場合、小数点が表示される場所を変更した方が(見やすく、使いやすく)なるかもしれません。ビットコンピュータの場合、整数と小数(別名浮動小数点数)の両方を表すのに64ビットの2進数を使用する場合、整数を浮動小数点数の整数部で表現できる上限まで制限するのが最も安全だと言う人もいます。
コンピュータの原理を少し知っている人なら、コンピュータの内部には小数が存在しないことを知っているだろう。いわゆる64ビット整数は、64個の0または1からなる2進整数である。10進数に換算すると、2^64 = 18446744073709551616となる。この数字は2100兆よりはるかに大きい。しかし、コンピュータが浮動小数点数を扱えるようにするには、64ビットの一部を分割して小数部分を表現し、プラスまたはマイナスの符号用に1ビットを残さなければならない。これが浮動小数点数をエンコードするIEEE 754規格となった。
この標準では、倍精度浮動小数点数は次のように64ビット2進数でエンコードされます。align: left;">この方法では、整数部分には53ビットしか使用できません。つまり、最大でも2^53 = 9007199254740992を超えないようにします。 また、結果が整数であるかどうかを簡単にテストしたい場合は、2^51 = 2251799813685248を超えないようにするのがよいでしょう。 この方法では、22(数百万単位)を選択できますが、22は「三角数」ではありません。「三角数」ではないので、サトシ・ナカモトは21(百億)を選んだ。
それによると、サトシ・ナカモトが2,100兆を選択したことは、様々なプログラミングを非常に容易にすると多くの人が信じています。兆円であり、ビットコインの数に関連する計算を処理するための様々なプログラミング言語を非常に容易にしています。
しかし、サトシ・ナカモトの電子メールを読んだ後、ティーチェーン氏は、サトシ・ナカモトはそんな複雑な考えを持っていなかったのかもしれないと考えている。あるいは、考えてはいたのだろうが、すべてを話していなかったのかもしれない。サトシ・ナカモトは、42兆というような他の数字も考えたが、大きすぎると感じたので、21兆で妥協したと言っているだけだ。2011年1月10日、マイク・ハーンの電子メール[2]に対するサトシ・ナカモトの返信の中で、彼は次のように書いています:
「1ブロックあたり10分で計算できます。align: left;">21000000/(50BTC*24時間*365日*4年*2)=5.99ブロック/時間
「364.58333日/年にごまかした。50BTCが25BTCに半減するのは210000ブロック後、つまり約3.9954年後です。
「100BTCと4,200万を考えたが、4,200万は高く感じた」
「典型的な金額を身近なところに置きたかった」
「典型的な金額を身近なところに置きたかった。100,000単位で投げ売りされても、乏しいとは感じない。
サトシ・ナカモトは、まずタイミングのパラメーターを設定し、次にブロックの収量と総額を調整し、どれくらいの数字が適切かを考えたようだ。
サトシ・ナカモトの考えでは、多くの人が手にするBTCの数は0.01から1,000の間であるべきで、6桁や7桁のコインをいちいち手にするべきではなく、それでは希少性に欠けるからだ。
以上、総数2100万枚という数字の裏と表でした。