候補ブロック
簡単に言うと、候補ブロックは、マイニングノード(マイナー)がブロック報酬を受け取るためにマイニングしようとしているブロックです。したがって、候補ブロックは、ネットワークによって検証または破棄される一時的なブロックとして記述される場合があります。マイナーは、次のブロックを検証してブロックチェーンに追加するために互いに競争しますが、最初に、マイニング競争に参加するための候補ブロックを作成する必要があります。
候補ブロックは、メモリプールから複数の未確認のトランザクションを収集して整理することにより、マイナーによって作成されます。次に、トランザクションがハッシュされてMerkleツリー構造が形成され、最終的にMerkleルート(またはルートハッシュ)が生成されます。マークルルートは、そのツリーの以前のすべてのハッシュを表す単一のハッシュであり、したがって、その特定のブロックに含まれていたすべてのトランザクションを表します。
次に、ルートハッシュ(前のブロックのハッシュとnonceと呼ばれる乱数)がブロックのヘッダーに配置されます。次に、ブロックヘッダーがマイナーによってハッシュされ、それらのコンポーネント(ルートハッシュ、前のブロックのハッシュ、およびナンス)と他のいくつかの要素に基づいて出力が生成されます。結果の出力はブロックハッシュであり、新しく生成されたブロック(候補ブロック)の一意の識別子として機能します。
有効と見なされるには、出力(ブロックハッシュ)が特定の数のゼロ(プロトコルで定義されているターゲット値未満)で開始する必要があります。これは、有効なブロックハッシュが最終的に生成されるまで、マイニングノードがさまざまなナンス値で無数のハッシュ関数を実行する必要があるため、マイニングプロセスは複数の試行(試行錯誤)に基づいていることを意味します。生成されたブロックハッシュは、鉱夫が自分の仕事をしたことを証明するものです(したがって、プルーフオブワーク)。
マイナーが有効なブロックハッシュを見つけた後、候補ブロックはネットワークの残りのノードにブロードキャストされ、ハッシュの信頼性が検証されます。すべてが良ければ、候補ブロックはブロックチェーンに記録されます。この時点で、各検証ノードは、最近マイニングされたブロックを反映するようにブロックチェーンデータのコピーを更新し、マイナーはブロック報酬を受け取ります。