ビットコインの発行上限と上限に達する日付をPythonで計算してみます。
発行上限の計算
プログラム
Pythonでマイニング報酬が半分になる日付(半減期を迎える日)と発行上限を計算します。
import datetime income = 50 # 最初のマイニング報酬 halflife = 210000 # 半減期 sum = 0 # 発行総数 dt = datetime.date(2009, 1, 3) #最初のブロック(ジェネシスブロック)が生成された日 while (income > 10**-8): print("{}\t発行総数={}".format(dt, sum)) sum = sum + income * halflife dt = dt + datetime.timedelta(days=halflife/(6*24)) income = income / 2 print("{}\t発送総数={}".format(dt, sum))
実行結果
2009-01-03 発行総数=0 2012-12-31 発行総数=10500000 2016-12-28 発行総数=15750000.0 2020-12-25 発行総数=18375000.0 2024-12-22 発行総数=19687500.0 2028-12-19 発行総数=20343750.0 2032-12-16 発行総数=20671875.0 2036-12-13 発行総数=20835937.5 2040-12-10 発行総数=20917968.75 2044-12-07 発行総数=20958984.375 2048-12-04 発行総数=20979492.1875 2052-12-01 発行総数=20989746.09375 2056-11-28 発行総数=20994873.046875 2060-11-25 発行総数=20997436.5234375 2064-11-22 発行総数=20998718.26171875 2068-11-19 発行総数=20999359.130859375 2072-11-16 発行総数=20999679.565429688 2076-11-13 発行総数=20999839.782714844 2080-11-10 発行総数=20999919.891357422 2084-11-07 発行総数=20999959.94567871 2088-11-04 発行総数=20999979.972839355 2092-11-01 発行総数=20999989.986419678 2096-10-29 発行総数=20999994.99320984 2100-10-27 発行総数=20999997.49660492 2104-10-24 発行総数=20999998.74830246 2108-10-21 発行総数=20999999.37415123 2112-10-18 発行総数=20999999.687075615 2116-10-15 発行総数=20999999.843537807 2120-10-12 発行総数=20999999.921768904 2124-10-09 発行総数=20999999.960884452 2128-10-06 発行総数=20999999.980442226 2132-10-03 発行総数=20999999.990221113 2136-09-30 発行総数=20999999.995110556 2140-09-27 発送総数=20999999.99755528
結果をグラフ化してみました。
考察
発行上限について
プログラムによる計算結果では、2140年9月27日に上限「20,999,999.99755528 BTC」を迎える結果となりました。
多くの書籍で、2140年に発行上限を迎えると書いてあるので、概ね合っていそうです。
ちなみに、実際の発行上限は「20999999.9769 BTC」らしいです。下記URLに書いてありました(浮動小数点の制度の問題で、0.9769を2進数で表すのは難しいのでしょう)。
半減期について
ビットコインはこれまで3回半減期(マイニング報酬の半減)を迎えていて、プログラム計算結果と実際の日付は以下通りとなります。
実際の日付の方がプログラムによる計算結果より早いので、実際の1ブロックの平均マイニング時間は10分より短いのでしょう。
半減期 | プログラム計算結果 | 実際の日付 | 日付の差 |
1回目 | 2012-12-31 | 2012-11-28 | 33日 |
2回目 | 2016-12-28 | 2016-07-09 | 172日 |
3回目 | 2020-12-25 | 2020-05-11 | 228日 |
ちなみに…
半減期を3回迎えているということは、全ビットコインの87.5%以上は既に発行済み(誰かの所有物)ということになります。そして、2036年頃には全量の約99%は発行完了となります。