本文へ移動

Bitcoinの難易度調整:ターゲット、リターゲット、上限

Bitcoinは2,016ブロックごとにProof of Workのしきい値を再設定し、長期平均のブロック間隔を10分へ近づけます。ターゲット、圧縮表現、タイムスタンプ窓、制限、ネットワーク規則、確率的結果を分けて分析します。

更新日

プロトコル分析の学習目的のみです。表示された難易度、ハッシュレート推定値、リターゲット予測だけでは、採算性、承認の安全性、分散性、将来のネットワーク状況は証明できません。

要点

Bitcoinの難易度調整は、許容されるProof of Workハッシュの最大値であるtargetを定期的に変更し、稼働中のハッシュレートが変化しても長期平均のブロック間隔を10分へ近づける決定論的なコンセンサス規則です。mainnetでは通常、ターゲットは2,016ブロックの間一定で、次の期間用に再計算されます。各検証ノードが過去のヘッダーから同じ必須ターゲットを導出します。マイナーの投票やエクスプローラーが決めるものではありません。

ブロックヘッダーのハッシュを整数として解釈した値が、ヘッダーの32ビットnBitsフィールドに符号化されたターゲット以下である場合に限り、Proof of Workは有効です。ターゲットが小さいほど該当するハッシュが減り、期待試行回数は増えます。慣例上、難易度はターゲットに反比例する相対値です。

D = T₁ / T

ここでTは現在のターゲット、T₁は難易度1の基準ターゲットです。したがってターゲットと難易度は逆方向に動きます。どちらも、機械台数、消費電力、マイナーの身元、観測ハッシュレートを直接測定した値ではありません。

10分は期待値であって時刻表ではありません。ハッシュ試行とブロック到着はランダムなため、ハッシュレートとターゲットが安定していても、数秒で次のブロックが出ることも、1時間出ないこともあります。リターゲットは期間単位の遅延フィードバックであり、出塊頻度の持続的なずれは抑えますが、短期分散を消したり、ハッシュレート急変へ即応したりはできません。

難易度調整は、補助金半減を含む高さ基準イベントの時間的な進み方に影響しますが、補助金額、210,000ブロックの半減間隔、最終供給ルールを定義しません。それ自体が正規チェーンを選ぶわけでもありません。Bitcoinのフォーク選択は、ヘッダーとブロックを検証したうえで累積chainworkを比較します。単一ブロックの難易度は累積作業量ではありません。

リターゲットの分析方法

  1. ネットワークと規則を固定する。 mainnet、旧testnet、Testnet4、signet、regtestでは例外がすべて同じではありません。チェーン、ソフトウェア規則、候補の高さ、リターゲットや特別な最小難易度ブロックの有効性を記録します。
  2. 提示ターゲットを復号する。 候補ヘッダーの圧縮nBitsをターゲットTへ展開します。負、ゼロ、オーバーフロー、powLimit超過を拒否し、ヘッダーハッシュが≤ Tであることを要求します。
  3. 調整境界を特定する。 mainnetでは候補の高さが2,016で割り切れるときに新ターゲットが必要です。それ以外の高さでは前ブロックのnBitsを変更せず引き継ぎます。
  4. タイムスタンプ窓を選ぶ。 mainnetの境界では、Bitcoin Coreは直前の2,016ブロック期間の最初と最後のブロックのタイムスタンプ差を使います。端点は2,016ブロックを含みますが、ブロック間隔は2,015個です。それでも名目目標時間は2,016 × 600 = 1,209,600秒です。
  5. 実時間を制限する。 t = clamp(t_actual, 302,400, 4,838,400)秒とし、名目14日の4分の1から4倍に収めます。ヘッダーのタイムスタンプはマイナーが提示し、別の有効性制約を受けるコンセンサスフィールドであり、ノードの正確な受信時刻ではありません。
  6. 新ターゲットを計算して符号化する。 現在のmainnet規則では、整数演算でT_new = min(powLimit, T_old × t / 1,209,600)を計算し、結果をnBitsへ圧縮符号化します。整数除算と圧縮形式の丸めにより、表示比率は理想的な10進計算とわずかに異なる場合があります。
  7. 確率的に解釈する。 近似的にはD_new / D_old = T_old / T_newです。リターゲットをブロック時間分布および推定値と明示したハッシュレートと比較し、収益、chainwork、集中度、承認リスクの結論とは分けます。

mainnetの式では最後のブロックのターゲットをT_oldに使います。Testnet4は意図的に異なります。BIP 94はタイムスタンプが十分遅れた後の特別な最小難易度ブロックを許す一方、期間の最初のブロックではその例外を禁止し、期間リターゲットを最初のブロックの実難易度に基づかせます。これにより一時的例外が次期間を汚染しません。Regtestでは通常リターゲットが無効です。ネットワークを明示しない規則説明は不完全です。

計算例

1. 名目どおりで変化しない期間

任意のターゲット単位でT_old = 10、測定時間がちょうど1,209,600秒とします。制限は何も変えません。

T_new = 10 × 1,209,600 / 1,209,600 = 10

難易度比は10 / 10 = 1なので、理想化した難易度は不変です。すべてのブロックが10分だったという意味ではなく、期間内のランダムな速い間隔と遅い間隔が相殺し得ます。

2. 12日で終わる速い期間

端点のタイムスタンプ差を12日とします。12日は制限内なので、ターゲット比は12 / 14 = 6/7です。新ターゲットは旧ターゲットの約85.7143%となり、一方で:

D_new / D_old ≈ 14 / 12 = 1.166667

理想化した難易度は約16.67%上昇し、14.29%ではありません。ターゲットの低下率と難易度の上昇率が異なるのは、両者が逆数だからです。

3. 4倍制限

端点の差が1.75日しかなくても、計算には下限の3.5日を使います。ターゲットは旧値のおよそ4分の1まで下がり、1回のmainnetリターゲットで難易度はおよそ4倍まで上がり得ます。

タイムスタンプ差が70日なら上限の56日を使います。ターゲットはおよそ4倍まで、難易度はおよそ4分の1まで変化しますが、powLimitが先にターゲットを制限する場合があります。「4倍制限」がターゲットか難易度か、どちら向きかを明示する必要があります。

4. 期間中間のハッシュレート急変

最初の1,008ブロックが10分間隔相当の速度で採掘され、約7日かかったという単純化した期待値を使います。その後、ターゲットは固定のままハッシュレートの30%が消失します。残る70%では期待間隔が10 / 0.70 ≈ 14.286分となるため、後半1,008ブロックは約10日、全期間は約17日です。

端点、ランダム性、圧縮丸めの影響を無視すると、ターゲット倍率は17/14 ≈ 1.214286、難易度倍率は14/17 ≈ 0.823529で、約17.65%低下します。急変が半期間だけに影響したため、30%すべては下がりません。その後もハッシュレートが70%のままなら、この部分調整後も期待ブロック時間は10分より遅く、次期間がさらにフィードバックします。

リスクとレビュー上の誤り

規則と算術の誤り

  • 難易度をしきい値そのものと呼び、ターゲットとその逆数的な相対指標を区別しない。
  • 式を逆にし、速い期間でターゲットを上げたり、遅い期間で難易度を上げたりする。
  • 2,016ブロックを測定される2,016個のタイムスタンプ間隔とみなす。現行mainnetの端点計算がまたぐのは2,015間隔です。
  • 3.5日と56日の制限、powLimit、整数除算、圧縮nBitsの丸めを忘れる。
  • mainnetの説明をTestnet4、旧testnet、signet、regtest、別のProof of Workチェーンへ適用する。
  • 境界ブロックが存在する前のエクスプローラー予測を、推定ではなくコンセンサス入力とみなす。
  • コンセンサス計算が使うヘッダーのタイムスタンプではなくローカル受信時刻を使う。
  • 現在のブロック難易度、ブロック単位の作業量、累積chainwork、フォーク選択結果を混同する。

測定と推論

  • 推定ハッシュレートを、作業量とランダム到着からの推論ではなく、稼働機械の直接一覧とみなす。
  • 期間のごく一部からリターゲットを外挿し、通常のブロック時間分散が支配し得ることを無視する。
  • 難易度上昇を価格、マイナー収益、消費電力、分散性の上昇の証明とみなす。
  • 絶対作業量、集中度、継続時間を見ずに、難易度低下をネットワーク障害の証明とみなす。
  • ハッシュ関数、基準ターゲット、調整規則を正規化せず、チェーン間の難易度値を比較する。
  • 10分を期限、サービス水準保証、固定承認時間として説明する。
  • ブロック報酬、手数料、稼働率、プール条件、ヘッジ、電力、資金調達、機器効率を見ずに採算性を推定する。

セキュリティと運用

  • 現期間内の急激なハッシュレート流出入に対する即時防御としてリターゲットを扱う。
  • 難易度低下がブロック容量を増やし、取引滞留を即時解消すると仮定する。
  • 累積作業量、再編能力、取引価値を無視し、難易度だけで承認方針を決める。
  • リターゲット設計の評価で、タイムスタンプ操作の誘因とプロトコル固有の緩和策を無視する。
  • 実装横断テストベクトルと有効化計画なしにコンセンサス算術、境界索引、圧縮符号化を変更する。

よくある誤解

  • Bitcoinの各ブロックは必ず10分かかる。 10分はハッシュレートが整合するときの目標平均で、個々の到着時間はランダムです。
  • マイナーが次の難易度を投票で決める。 検証ノードが許容nBitsを独立計算し、別の値を主張するブロックは無効です。
  • ターゲットが20%小さければ難易度も20%高い。 難易度は反比例するため、ターゲット倍率0.8は難易度倍率1/0.8 = 1.25、つまり25%上昇です。
  • リターゲットがハッシュレートを直接測定する。 反応するのはタイムスタンプ付きブロック生成です。ハッシュレート値は標本とタイムスタンプの仮定を含む推定です。
  • 難易度がBitcoinの金融政策である。 リターゲットは高さ基準発行の時間的ペースを安定させますが、補助金額と半減は別のコンセンサス規則が定義します。

関連トピック

出典

ナビゲーション

Wiki を検索...