Categories
Economics Technology

ビットコイン難易度調整

ビットコインのプロトコルには、マイニング(採掘)によって新しいビットコインブロックを発見する際の難易度を変更する「難易度調整」というプロセスがある。以前の記事でも書いたが、ビットコインブロックチェーン上の各ブロックは10分前後で生成・採掘される。新しいブロックの採掘にかかる時間は、以前のブロックの採掘にかかった時間を考慮して難易度を調整した結果である。新しいブロックが10分未満で採掘されれば難易度が上がり、ブロックの採掘に10分以上時間がかかれば難易度が下がる。このアルゴリズムは最初からビットコインのソースコードにハードコードされており、採掘プロセスの難易度を常に再調整し続けている。この採掘の難易度は2,016ブロックごと、つまり約2週間ごとに変わる。次の難易度は、その前のサイクルでマイナーがどれだけ効率的であったかによって決まる。この調整は、ハッシュレートまたはBTCを採掘するために配置された処理能力・コンピューティングパワーの量を増加させるため、ビットコインネットワークに参加した新しいマイナーの数にも影響される。つまり、ネットワークにマイナーが増えれば、問題の解決の難易度も上がる。

ビットコインマイニングとは?

ビットコインマイニングとは、特定の条件に一致するナンス値を計算で発見することで、ブロック内の情報を検証するプロセスである。正しいナンス値が計算して見つかると、新しく発行されるビットコイン(BTC)とその作業に対する報酬が、最初にそのナンス値を見つけたマイナーがブロック報酬として支給される。時間の経過とともにブロック報酬は削減され、合計2,100万枚のビットコインが流通するまで続けられる。2,100万ビットコインが採掘されると、その後はマイナーはブロック報酬ではなくて手数料として支払われる。ブロック報酬がマイナーに対する報酬であるのに対し、マイニングプロセスはブロックチェーンの整合性を維持するプロセスである。

ビットコインネットワークの初期の頃は、普通のCPUを搭載したノートパソコンからビットコインを採掘することができていた。しかし、数年前から非常に洗練されてきた。現代のマイナーは、GPUASIC特定用途向け集積回路)チップを搭載した複雑なマシンを使い、マイニングを高速化している。2015年初頭の難易度では、通常のCPUで1ブロックのマイニングに平均で数十万年かかるほどの難易度だった。ASICは1秒間1,000,000,000,000,000,000以上のランダムコードを生成することが可能で、これはCPUを搭載した通常のノートパソコンよりも指数関数的に多い推測数である。

ビットコインの難易度調整アルゴリズムは、新しいブロックを生成する時間を約10分に維持することで、ビットコインのプロトコルを安定させるようにプログラムされている。ネットワーク内のすべてのマイナーはナンス値を見つけるために働くが、新しいブロックを見つけることに成功するのはたった1つのマイナーだけである。新しいブロックが見つかると、マイナーはそのブロックをブロックチェーンに追加するよう進める。マイナーの数が増えるたびに難易度が上がり、マイナーの数が減れば、アルゴリズムはマイニング難易度を下げ、残りのマイナーたちが新しいブロックを発見しやすく調整する。

難易度は、ターゲットハッシュの先頭にゼロを足したり減らしたりすることで実際に変更される。このターゲット・ハッシュは、全てのマイナーが打ち負かそうとしている特定のハッシュである。ターゲットハッシュと比較して、前面のゼロの数が等しいか多いランダムコードを生成したマイナーが勝者として選ばれ、ブロックが作成されてブロックチェーンに追加される。このアルゴリズムは、マイナーが早く採掘するためにマシンとそのスペックを上げることができるため、より速い速度でブロックが作成されることを防ぐために設定されたものである。ビットコインのプロトコルの最も重要な特徴の1つは、他の不換紙幣と比較してインフレ率が安定して予測可能であることだ。難易度調整アルゴリズムとその最大量2,100万枚は、前の記事「ビットコイン半減期とブロック報酬」で書いたように、ビットコインプロトコルを興味深いものにしており、ある程度予測可能で信頼性の高いシステムになっている。

この難易度調整の頻度はおおよそ2週間前後で、2,016ブロックごとに調整されるよう作られている。2,016ブロックの間隔がビットコインで難易度エポックと呼ばれるのはこのためだ。ビットコインネットワークは、直近の2,016ブロックに対するマイナーの働きによって、新しいブロックを採掘する時間が短縮されたか増加したかが判断される。10分未満であれば難易度が上がり10分以上であれば難易度が下がる

難易度調整の計算アルゴリズム

難易度調整のアルゴリズムの実際の計算は、2,016ブロックのトランザクションを見つけるのにかかるはずの標準時間を直近の2,016ブロックを見つけるのにかかった時間で割って計算される。望ましいブロック時間は10分なので、2,016ブロックの採掘にかかる予想時間は20,160分となる。ネットワークは直前の2,016ブロックの採掘にかかった時間の合計を計算する。そして、20,160分と直前の難易度エポックのスケーリングにかかった時間の比率に、最新の難易度を掛ける。この計算によって、ブロックタイムを希望の10分にするために必要な難易度の変化率が決定される。この10分のブロックタイムがプロトコルの目標であり、難易度は現在の難易度の4倍以上にも以下にも変更できないように作られている。各難易度エポック上限+300%の増加、下限は-75%の減少である。これは、難易度調整の急激な変化を避けるために重要である。

難易度調整の計算式は以下の通り:

Difficulty = Difficulty Target / Current Target

Difficulty Target」は、ブロックハッシュで到達可能な最高難易度である。「Current Target」は、ブロックヘッダの256ビットの数字から導き出される16進数の難易度である。難易度は、1つのブロックを採掘するのに必要なハッシュのおおよその数である。2023年10月3日現在の難易度は57.12兆になっている。

ビットコインのマイニングに関する面白くて興味深い事実の1つを挙げよう。世界中のすべての計算能力、またはすべてのエネルギーと資源をビットコインの採掘に使用したとしても、難易度の調整によって難易度が再調整され、ブロック時間が平均10分程度に保たれるように作られている。これが、ビットコインのプロトコルが独自の供給スケジュールを持ち、2140年頃に最後のビットコイン/サトシが採掘されることが予測可能な理由である。

最後までお読みいただきありがとうございました。それでは、また次回。

Leave a Reply

Your email address will not be published. Required fields are marked *