マイナーはナンスをどう使う?
マイナーはブロックヘッダーを作り、ナンスを0に設定してハッシュを計算します。ハッシュがターゲットを上回っていたら、ナンスを1にして再試行し、次は2というように続けます。ナンスは「一度だけ使う数」を短くした言葉です。
どのナンスが有利ということはありません。ハッシュは予測できないため、どの試行にも当たる確率は同じで、とてもわずかです。だからマイニングは公平です。1秒あたりの試行回数が多いほどチャンスは増えますが、それ以外に有利になるものはありません。
ナンスを使い切るとどうなる?
4バイトで表せる値は4,294,967,296通りです。最新のマシンなら、そのすべてを千分の1秒もかからずに試せます。そこでマイナーはブロック内の別の情報を変えて、ナンスを最初から試し直します。
マイナーの処理
- 01
すべてのナンスを試す
0、1、2から4,294,967,295まで。これが4バイトで表せるすべての値です。
- 02
すぐに底をつく
100 TH/sのマシン1台なら、すべてを約43マイクロ秒で試せます。
- 03
extra nonceを変える
マイナーは自分の報酬トランザクション(coinbase)にある余白のフィールドを編集します。
- 04
新しいマークルルート
そのトランザクションが変わったため、merkle rootも変わり、nonceを変えるたびに新しいハッシュが得られます。
一般的には、コインベース取引にある予備フィールドのエクストラナンスを使います。これを変更するとマークルルートが変わり、試せるブロックヘッダーが一新されます。マイナーはタイムスタンプを少し変えることもできます。また、現在の多くのマシンでは、バージョンフィールドの数ビットを変えることもできます。
出典
- Nonce · Bitcoin Wiki
- ブロックのハッシュアルゴリズム · Bitcoin Wiki
- ブロックチェーンの参考情報:ヘッダー、マークルツリー、ターゲット · Bitcoin開発者ドキュメント
このページのライブ数値はCloudMineCrypto APIと公開されているチェーンデータをもとにしており、定期的に更新されます。各数値の表示箇所にはその旨を記載しています。教育目的のみであり、金融アドバイスではありません。