確認が取れるまで軽く受け止めてほしいが、以下が自分の理解だ……
問題自体にバリエーションはない――すべてのノードが同時に同じブロックに取り組むことが意図されている(レイテンシーなどを考慮して)。運の要素は、各ノードが新しいブロックの解決を開始する際に生成するランダムな数値(ナンス)にある。新しいブロックを解く必要がある時、各ノードはランダムな値(ナンス)を生成し、それを使ってブロックをハッシュする。そのハッシュが正しくなければ、ナンスがインクリメントされ、新しいインクリメントされた値でブロックが再ハッシュされる。
ナンスとhashについて言っていることは正しい。だが……
みんな別々のブロックに取り組んでいるんだ。
ブロック作成者に50BTCを支払うには、その送り先となるBitcoin Addressを知っている必要がある。 ブロック作成者が自分の作り出した50BTCを使えるようにするには、その50が支払われたbitcoin addressに紐づく秘密鍵を持っている必要がある。
誰もがそれぞれ別の秘密鍵を持っているので(ランダムに生成される)、誰もがそれぞれ別のBitcoin Address(紐づく公開鍵をhashしたもの)を持っている。
ブロックの構成要素のひとつが、その50BTCをブロック作成者のBitcoin Addressに支払うトランザクションのhashだ。
つまり、みんな別々のブロックを持っているということだ。
最初に自分のブロックを解いた者が「勝ち」となり、そのブロックは全員から「次」のブロックとして認められる。