MSTR Cat

ブロックチェーン/レベル II · 仕組み/2.3 ブロックとチェーン/レッスン 4

プルーフ・オブ・ワークとターゲット

購入にはエネルギーがかかり、検証はハッシュ1回で済む宝くじ

用意するものブロックエクスプローラーインターフェースSHA-256を計算できる16進数電卓またはプログラミング環境Bitcoin開発者リファレンスドキュメント

問い

  1. なぜターゲットの数値が低いほど、有効なハッシュを見つけるのが難しくなるのでしょうか?
  2. 4バイトの値で、2^256通りの可能性を制約できるほど大きな数を、どうやってエンコードできるのでしょうか?
  3. ハッシュパワーが2倍になってもターゲット値が変わらない場合、期待されるブロック生成時間はどうなるのでしょうか?

探究

  1. ブロックが受け入れられるのは、計算パズルを解いた場合だけです。マイナーは、ダブルSHA-256ハッシュが「ターゲット」と呼ばれる特定のしきい値以下になる80バイトのヘッダーを見つけなければなりません。この制約によって、ブロックの作成は、2^256通りのハッシュからなる巨大な空間で稀な数値を探す作業に変わります。候補ブロックが有効かどうかは、この1つの数学的不等式だけで決まります。
  2. ターゲットそのものは、32バイトの完全な形では格納されません。そうするとヘッダーのスペースを過剰に消費するためです。代わりに、仮数と指数による符号化方式で「nBits」と呼ばれる4バイトに圧縮されます。この形式は非可逆で、3バイトの仮数しか保持しないため、ターゲットはわずかに丸められますが、実用上の影響はありません。この4バイトをデコードすると、許容されるハッシュ値の上限を定める巨大な256ビットの数値が復元されます。
  3. 有効なハッシュを見つけるため、マイナーはヘッダーフィールドを変化させながら試行を繰り返します。主な変数は32ビットのノンスで、1サイクルあたり約43億通りの値を提供します。ハードウェアの速度ではこれらの組み合わせを瞬時に使い切ってしまうため、マイナーはコインベーストランザクション内のエクストラノンスを変更したり、タイムスタンプを調整したりして、新しいマークルルートやヘッダー構成を生成します。変更のたびにまったく異なるハッシュ出力が得られ、事実上、新しい宝くじを手に入れることになります。
  4. 期待される作業量は難易度に正比例して増えますが、ターゲットは逆方向に動きます。ハッシュパワーが増加した後にネットワークがターゲットを再調整すると、ターゲットは下がり、有効な解を得るには2進数表現でより多くの先頭のゼロが必要になります。1ブロックを見つけるのに必要なハッシュ回数の期待値は、おおよそ難易度に2^32を掛けた値です。このスケーリングにより、マイニングがノートパソコンで行われても産業規模のファームで行われても、ブロック間の平均間隔は約10分で安定します。
  5. 検証と生成は非対称です。有効なハッシュを見つけるには数十億回の試行が必要になることもありますが、確認はヘッダーのダブルSHA-256を1回計算し、ターゲットと比較するだけで済みます。そのためプルーフ・オブ・ワークのチェックは一瞬で終わりますが、ブロックを完全に検証するには、やはりその中のすべてのトランザクションを確認する必要があります。セキュリティモデルはこの差に依存しています。作業を生み出すのはコストが高く、その作業を信頼するのは安価なのです。
  6. ジェネシスブロックは、ルール上最も簡単な難易度1でマイニングされました。それでも有効なハッシュには先頭に約32ビットのゼロが必要で、成功するのはおよそ43億回に1回でした。最近のブロックでは、世界のハッシュパワーが何桁も増加したため、はるかに多くの先頭ゼロが必要です。ブロック1のハッシュの16進表現を現在のブロックのものと比べると、開けた探索空間から厳しく制約された探索空間への劇的な変化がわかります。

重要な事実

  • 有効なビットコインのブロックヘッダーハッシュは、数値として難易度ターゲット以下でなければなりません。
  • ターゲットは、仮数と指数による符号化を用いて「nBits」として4バイトにコンパクトに格納されます。
  • マイナーは、新しいハッシュ候補を生成するために、32ビットのノンス、コインベースのエクストラノンス、タイムスタンプを変化させます。
  • 難易度は、ターゲットの最大値を現在のターゲットで割った値として定義されます。
  • ブロックのプルーフ・オブ・ワークの検証に必要なのは、ヘッダーのダブルSHA-256を1回計算し、比較することだけです。
  • ジェネシスブロックは難易度1でマイニングされました。

演習 九・六・三・一

9集めるビットコインのブロックヘッダーのプルーフ・オブ・ワーク計算に関わる、異なる構成要素や変数を9つ挙げてください。
6まとめるこれら9つの項目を、固定か、試行ごとに変わるか、サイクルごとに変わるか、コンパクトにエンコードされているか、トランザクションから導かれるか、検証に使われるかに基づいて、6つのカテゴリーに分類してください。
3絞り込む6つのグループを、ネットワークのハッシュパワーに応じて難易度がどのように変化するかを支配する3つの核心原則に絞り込んでください。
1結晶化するプルーフ・オブ・ワークが、生成は難しいのに検証は容易である理由を説明する文を1つ書いてください。

事実確認

日付、数字、主張は、下記に記載された公表資料と照合して確認しました。

インタラクティブ版で開く →

EN PT ES ZH KO RU DE FR MS