難易度(Difficulty)

中級者

難易度とは

暗号資産における難易度とは、ブロックをマイニングするために必要な計算量のことを意味します。プルーフ・オブ・ワーク(PoW)ブロックチェーンでは、ネットワーク全体のハッシュパワー(計算能力)に応じて難易度が自動的に調整されます。ブロックが早く生成されすぎることを防ぎ、ネットワークの安全性を維持するためです。
例えばビットコインでは、1ブロックの生成時間(新規ブロック発見に要する平均時間)を約10分に設定しています。もしブロックが想定よりも早く見つかると、ネットワークは難易度を上げ、マイニングの目標値を引き下げます。

逆に、ブロック生成に時間がかかりすぎる場合は難易度が下がり、目標値(ターゲット)が引き上げられます。この目標値は一定期間ごとにリセットされます。ブロックをマイニングするには、マイナーがこの数値を下回るハッシュ値を見つける必要があります。

マイニングの仕組み:簡単な例

ここで簡単な例を使って説明します。例えば「binance」という文字列に対してSHA256ハッシュ(入力データを固定長の256ビットの文字列に変換する暗号学的ハッシュ関数)を生成したいとします。その際、特定の目標値(16進数表記で先頭に一定数のゼロが続くハッシュ値に相当)よりも小さい数値を見つける必要があります。

実際のマイニングでは、マイナーは256ビット形式で表される非常に大きな目標値よりも低いハッシュ値を見つける必要があります。説明をわかりやすくすると、以下の例を用いて解説します。「binance」に順番に数字を追加し(例:「binance1」「binance2」「binance3」)、先頭にゼロが続くハッシュ値が得られるまでハッシュ処理を繰り返す様子をイメージしてください。

確率的な例で説明すると以下のようになります。先頭1文字が「0」になるには、「binance10」まで試す必要があります。先頭2文字を「00」にするには、「binance99」まで続けて試す必要がありました。さらに先頭3文字が「000」の場合は、「binance458」までの計算が必要になりました。しかし、先頭4文字を「0000」にするには、最初の2,000万個の数字の中に該当する入力は存在しませんでした。

この例でマイニングの仕組みがイメージしやすくなると思います。違いは、マイナーが目標値を下回る数値を見つけることを目指している点です。この目標値が低ければ低いほど、解を見つけるのは難しくなります。これが、ビットコインのマイニングに非常に多くの計算能力が必要な理由です。マイナーは、有効なハッシュを見つけるために、同じ情報を少しずつ変えながら何度もハッシュ化しています。

難易度の調整

ビットコインは約2016ブロックごと(約2週間ごと)にマイニング難易度を調整し、平均ブロック生成時間を10分に維持しています。この調整は直近の2016ブロックの生成に要した時間に基づいています。ブロックが予想より速く生成されていれば難易度が上がり、マイニングが難しくなります。逆に遅ければ難易度が下がり、マイニングが容易になります。

マイニングハードウェアの進化

ビットコインのマイニングは非常に困難であるため、マイニング機器は汎用のPCやグラフィックカードから、ASIC(特定用途向け集積回路)と呼ばれる専用ハードウェアへと移行しています。

マイニングは現在、専門機器を備えた大規模なマイニングファームが主導する産業レベルの活動となっています。これはネットワークでの競争と難易度の上昇を反映しています。

すべての暗号資産がPoWを使用するわけではない

なお、すべての暗号資産がPoWやマイニング難易度を採用しているわけではありません。例えばイーサリアムはプルーフ・オブ・ステーク(PoS)というコンセンサスメカニズムに移行しており、マイニングや難易度調整は必要としません。

まとめ

難易度は、新しいブロックをマイニングするために必要な計算作業量を調整することで、PoWブロックチェーンの安全性と安定性を維持する動的パラメーターです。ネットワークのハッシュパワーの変動に応じて調整され、ブロック生成速度を一定に維持し、ブロックチェーン機能の継続性を確保しています。