Nonceとは?その意味とブロックチェーンでの使われ方
Nonceは「一度だけ使用される数字」の合成語で、ビットコインマイナーがビットコインのブロックチェーンで新しいブロックを採掘し、その努力に対するブロック報酬を受け取るために見つけようとする乱数です。この数字はビットコインのブロックチェーンが円滑に動くために重要な要素である。
ブロックを採掘する行為は、ビットコイン台帳上の取引の記録と検証に役立ち、流通量を増やすために新しいビットコインを鋳造する。ビットコインの取引は個別ではなくバッチで検証されるため、ブロック構造が生まれる。ブロックの高さは、特定のブロックまでのすべてのブロックの数です。
ノンスは、各ブロックが一意のハッシュを持つことを保証し、ブロックの識別子として機能し、ブロックチェーンの拡張を支える暗号指紋である。ノンスを調整することで、マイナーはハッシュ値を変更することができ、その結果、新しいブロックを採掘するための数学的問題を解決できる可能性がある。
ポイント
- ビットコインのマイナーは、新しいブロックを生成するための正しいノンスを見つけるために、執拗な試行錯誤を繰り返し、数学的パズルとネットワークの要件を満たすハッシュが現れるまで、異なるノンス値でブロックヘッダをハッシュします。
- 各Nonceは特定のブロックに対して一度だけ使用され、各ブロックが一意な識別子を持つことを保証し、トランザクションの不正を防止する。
- 有効なnonceを見つけ、ハッシュ化することは、ネットワークのセキュリティと悪意ある攻撃や二重支出への抵抗に貢献し、大きな計算力を消費します。
Nonceを理解する
ビットコインのノンスは 32 ビット(または 4 バイト)の乱数であり、マイナーが計算総力を結集して、ビットコインのブロックチェーンに新しいブロックを生成するために有効でユニークなハッシュを生成できるように、それを把握しようとします。ノンスは、ビットコインネットワークを検証し保護するProof-of-Work(PoW)アルゴリズムとコンセンサスメカニズムの重要な要素の1つです。
ビットコインのマイニングでは、マイナーは、ブロックヘッダ、ノンスと前のブロックに関する他の重要な情報を含む各ブロックのデータのグループ化、タイムスタンプ、新しいブロックに含まれるトランザクション、およびブロック内のすべてのトランザクションのすべてのハッシュのマークルルートを繰り返しハッシュ化することによって、複雑な数学的パズルを解くために競う。
ハッシュ化とは、ブロックヘッダに暗号ハッシュ関数を適用するプロセスを指す。暗号ハッシュ関数は、ブロックヘッダーデータを受け取り、それを一意なハッシュ値(固定長の16進数および暗号化された文字列)に変換する数学的演算である。ブロックヘッダーデータが入力で、ハッシュ値が関数の出力である。
このハッシュ値はブロックの暗号化フィンガープリントとして機能し、ブロックのコンテンツが変更されていないことを保証する。マイナーは常に、ビットコインネットワークの採掘難易度要件を満たすハッシュ値を生成するために競争しています。
nonceはブロックヘッダの中で唯一、マイナーたちが変更できる変数である。nonceを変更することで、マイナーはブロックのハッシュを変更し、新しいブロックを生成するために必要な数学的パズルに対する異なる可能性のある解を計算することができる。ネットワークの採掘難易度要件の下で有効なハッシュを最初に見つけたマイナーに、ブロック報酬と新しいブロックをブロックチェーンに追加する権利が与えられる。
有効なnonceを見つけるために、マイナーはnonceの値をインクリメントし、ハッシュを再計算することを繰り返さなければならない。数値解析や計算アルゴリズムでは、インクリメンタル計算とは、小さな一貫したステップを使用して関数を近似したり方程式を解いたりする方法を指す。
ハッシュ値がネットワークの難易度調整されたターゲットハッシュを超えた場合、 マイナーは別のランダムに生成されたnonceで再試行する。その結果、ハッシュ値がターゲットハッシュと等しいか、それ以下であれば、採掘者は解を作成したことになり、報酬としてブロックを受け取る。ブロックは閉じられ、前のブロックのハッシュを含む新しいブロックがオープンする。
ターゲット難易度は、有効なノンスを見つけるのがどれだけ難しいかを示す尺度である。一定のブロック生成率を維持するために定期的に調整されます。
ビットコインマイニングにおけるノンス
ビットコインのマイニングでノンスがどのように使用されるかを順を追って説明します:
- マイナーは取引データを収集し、新しいブロックヘッダを作成します。
- マイナーは取引データを収集し、新しいブロックヘッダを作成します。彼らはnonceをランダムな値に初期化し、nonceと一緒にブロックヘッダのハッシュを開始します。
- マイナーは、ネットワークの難易度要件を満たすハッシュを見つけるまで、nonceをインクリメントし、ブロックヘッダをリハッシュすることを繰り返す。
- 最初に有効なハッシュを見つけたマイナーは、そのブロックをネットワークにブロードキャストする。
- 他のマイナーはそのブロックの有効性を検証し、ブロックチェーンのローカルコピーに追加する。
Nonceの意義
ノンスはビットコインのブロックチェーンの整合性とセキュリティを維持します。攻撃者がブロックを改ざんしたり偽造したりするのを防ぎます。Nonceを含むブロックデータに何らかの変更が加えられると、ハッシュ値が異なり、ブロックが無効になるからです。
採掘者が最初の試行でnonceを推測する可能性は極めて低い。PoWシステムにおけるマイナーは、一般的に、正しい推測をする前に、多数のnonceオプションをテストしなければならない。
難易度(ターゲットよりも小さいハッシュを作成するのがどれだけ難しいかを示す尺度)が高ければ高いほど、解を生成するのに時間がかかる可能性が高くなる。また、難易度が高くなればなるほど、有効なnonceを見つけるプロセスは計算集約的になり、時間の経過とともに多大な電力と計算能力を必要とし、物質的な制約をもたらします。
これは意図的なものであり、51%攻撃や二重支出などの協調攻撃やトランザクションエラーでブロックチェーンを操作することを計算上不可能にすることで、ビットコインネットワークの安全性を高めるためです。
マイナーに有効なノンスを見つけることを要求し、ノンスを予測したり操作したりすることを困難にすることで、PoWアルゴリズムは有効な履歴を持つブロックのみがブロックチェーンに追加されることを保証し、悪意のある行為者がトランザクションを変更したり複製したりすることを防ぎ、ブロックチェーンの不変性を保証します。
新しいブロックの有効なノンスを見つけることに成功したマイナーは、新しく鋳造されたビットコインと取引手数料からなるブロック報酬を受け取ります。この報酬は、マイナーがネットワークのセキュリティに参加し、取引の検証に貢献するインセンティブとなる。
ブロックチェーン上のトランザクションは、トランザクションの年齢または支払われた手数料の量に基づいてメモリプールからブロックに集約される。メモリープールはmempoolとも呼ばれ、ブロックチェーンに追加される前の未確認取引を保持する一時的なデータ保管領域である。メンプールはトランザクションが待ち行列に並べられ、取引手数料に基づいて優先順位が付けられる待合室の役割を果たす。
Nonceと難易度
ブロックの難易度はビットコインネットワーク全体で同じレベルに保たれており、すべてのマイナーに正しいハッシュを見つけ出す同じチャンスがあることを意味する。ビットコインネットワークは、一定期間にわたって特定の数のブロックを処理し、マイナーがブロックを検証するために時々難易度を調整するように設定されています。
有効なノンスを見つける難易度は、ネットワーク全体のハッシュレートに基づいて動的に調整されます。ネットワークのハッシュレートが上がれば難易度も上がり、有効なnonceを見つけるのが難しくなる。このメカニズムにより、参加しているマイナーの数に関係なく、一貫したレートでブロックが生成されることが保証される。
処理されたブロックの数が難易度の目標を満たさない場合、難易度は、プロセスが制限を超えるのにかかった時間を決定して下げられる。ネットワークがあまりにも早く難易度を満たした場合、難易度が上がる。難易度が高くなると、ハッシュを解くのに多くの試行が必要となるため、より多くのnoncesが生成される。
人気のあるマイニングプールAntPoolによって2023年10月26日に採掘されたビットコインブロック813,958のノンスは105,983,939であった。
その日、AntPoolのビットコインハッシュレートは毎秒123エクサハッシュ(または123クインティリオンハッシュ)で、ビットコインネットワーク全体のハッシュレートは毎秒428.22エクサハッシュ(または428.22クインティリオンハッシュ)だった。つまり、特定のAntPoolマイニングプールは、すべてのマイニングプールを合わせた試行回数が指数関数的に多い中で、正しいnonceと勝利ハッシュを見つけるために4兆回もの数字を生成したことになります。
個人ではなく、マイニングプールがほとんどのブロックをオープンするのは、マイニングの難易度が非常に高く、一人のマイナーでは追いつくのに十分なハッシュパワーを持ちそうにないからです。このパワーは、1秒あたりのハッシュ数で測定される。家庭用コンピュータのハッシュレートは毎秒100メガハッシュ(または1億ハッシュ)かもしれない。対照的に、市場で最も先進的なマイニング技術であるASICマイナーでいっぱいのマイニングファームは、毎秒30エクサハッシュ(または30クインティリオンハッシュ)程度をハッシュするかもしれません。
ブロックチェーンとは何か?
ブロックチェーンは、デジタルネットワークのノード間で共有される分散型台帳またはデータベースであり、コンピュータ、データセンター、モバイルデバイスなどが含まれる。データベースとして、ブロックチェーンは情報をデジタル形式で電子的に保存する。台帳としてのブロックチェーンは、ビットコインなどの暗号通貨システムのように、取引の記録を安全に管理する。ブロックチェーンの革新性は、信頼できる第三者を必要としないデータ記録の忠実性にある。
ノンスとハッシュの違いは?
ノンスはハッシュを生成する過程で使われる一時的な値で、ハッシュはブロックの永続的な識別子です。ハッシュが256ビットであるのに対し、ノンセは32ビット長です。 ハッシュはブロックヘッダに固有で、元のデータを得るために逆変換することはできない。ノンスは、有効なハッシュを生成することを困難にするために使用され、ビットコインのブロックチェーンを安全にするのに役立ちます。
マイナーはブロック報酬でいくら稼ぐのか?
ビットコインのブロックに有効なノンスを見つけることに成功したマイナーのブロック報酬は、新しく鋳造されたビットコインと取引手数料の2つの要素で構成されています。ブロック報酬で新たに鋳造されるビットコインの量は、2021年6月以降、およそ6.3BTCであり、21万ブロックごと、つまりおよそ4年ごとに半減し、次の期限は2024年4月である。
この半減メカニズムは「ビットコイン半減」と呼ばれ、ビットコイン全体の供給量を徐々に減らし、その価値を維持するように設計されている。ブロック報酬に含まれる取引手数料の額は、取引全体の量と手数料率によって変動する。近年、取引手数料はマイナーの収入の大部分を占めるようになり、ブロック報酬で新たに鋳造されるビットコインの価値を上回ることもしばしばある。これは、ビットコインの人気と使用量が増加し、取引量が増え、取引手数料が高くなったためです。
結論
ビットコインのマイニングでは、マイナーは常に、最近のトランザクションを検証し、新しいビットコインを発行する新しいブロックを生成するためのネットワークの難易度要件を満たすハッシュを生成するnonceを見つけようとしています。ハッシュとは、ビットコインのブロックチェーンにおける各ブロックの一意の識別子であり、ハッシュとして知られるプロセスでデータの一部に暗号ハッシュ関数を適用することによって生成される固定長の文字列である。ハッシュ化されるデータはブロックヘッダであり、ブロックに関する情報を含む構造化要素である。有効なnonceが見つかると、それは破棄され、二度と使われることはない。