潜在的な災害シナリオ

ビットコインの生成難易度は、これまでうまく機能してきた方法で定期的に調整されている。しかし、現在の方法がかなり劇的に誤動作するもっともらしいシナリオが存在するのではないかと懸念している。

一つのシナリオは以下の通りである:

  1. ビットコインの認知度が上がるにつれ、マイナー間の競争は増加し続け、それに伴い難易度も上昇する。難易度の上昇により、良好なエネルギー価格とエネルギー効率の高いハードウェア・ソフトウェアの組み合わせへの安価なアクセスを持たない者にとって、ビットコインのマイニングは明らかに不採算となる。

  2. 一部のビットコインユーザーは、不採算であっても引き続きマイニングを行うかもしれない。それはイデオロギー、楽しさ、あるいは単なる無知によるものかもしれない。しかし、ビットコインの大部分は利益目的のマイナーによって生成されるというのはもっともらしい。仮に全ビットコインの99%が営利マイナーによって生成されるとしよう。

  3. 営利マイナー間の競争により利益率は低下し、マイニングを続けることは採算が取れるが、かろうじてという程度になる。仮に、1回の難易度調整期間(2016ブロック)における典型的な利益率が10%だとしよう。

  4. ビットコインのマイニングは分散型で非協調的なプロセスであるため、マイニング活動にはランダムな変動が予想される。これは特定の2016ブロック期間中の難易度には影響しないため、マイニング活動はその期間内にマイニングが不採算になることなく、例えば20%増加する可能性がある。

以上の前提のもと、次の難易度調整時に災害が発生する。ビットコインの生産が目標より20%多かったため、難易度は20%上方に調整される。しかし利益率はわずか10%であったため、営利マイナーはマイニングを続ければ損失が出ることになる。したがって彼らはマイニングを停止し、マイニング能力の99%を占めていたため、次の2016ブロックの生成には通常の100倍の時間がかかることになる。ブロック生成に依存するすべてのものが極端に遅くなり、この遅さは非常に長期間持続する。次の2016ブロックの生成に100倍の時間(2週間ではなくほぼ4年間)かかるためである。

もしこのような事態が起きた場合、難易度を適切な値にリセットし、より良い難易度調整アルゴリズムを使用する新しいクライアントをリリースすることは可能だろう。しかし、問題になる前に予防的に対処する方がはるかに良い(おそらく、新しいアルゴリズムを将来の特定の時点で有効化する事前に定められた「フラグデー」を設け、新しいクライアントが普及する時間を確保するなど)。

アルゴリズムの簡単な(?)修正は、特定のブロック番号ではなく、一定の時間経過後に調整を適用することである。切り替えは引き続き次のブロックで有効になるよう同期できるため、クライアント間の時刻同期は、大多数が新しい難易度の適用時期について合意するために超正確である必要はない。

また、難易度調整は、イベントごとに生成されるビットコイン数の調整(現在50、4年ごとに半減)も考慮すべきだろう。毎回生成されるビットコイン数を半減させることは、採算性に関しては難易度を倍にすることと等価であり、容易に回避できるのであれば、このような急激な採算性の低下は不要である。現在の調整アルゴリズムが既にこれを何らかの形で考慮しているかどうかは定かではないが、ソースコードにおいてそのための明白な調整は見当たらなかった。