なるほど、全員のマシンがそれぞれ異なる問題のハッシュに取り組んでいるなら、運が要素になるのは理解できる。しかし、自分のマシンが取り組んでいる問題と他の人の問題との間の変動の源は何なのか?先の返信の一つでは、そのユーザーが最近参加したトランザクションに関係しているようだったが…最近のトランザクションに参加していない我々についてはどうなるのか?(最後のトランザクションは少なくとも 2日前だ)
コイン生成に関しては、ネットワークに接続さえしていればいい。それだけで、あなたのコンピューターが「見つけた!」というメッセージをブロードキャストし、他のコンピューターがそれが有効かどうかチェックできる。ブロックは常に生成されているので、オフラインでのコイン生成は現実的ではない。なぜなら、2日前にあなたのコンピューターがブロックを見つけたが、私の PC もそうで、私の PC はずっとオンラインだった場合、ネットワーク全体が私の PC を勝者/所有者と認定するからだ。あなたの PC が 2日後にやってきて同じ解を見つけたとブロードキャストしても、他のコンピューターは「遅すぎる、XYZ がすでに解いた、次は頑張れ」と返すだけだ。
問題のバリエーションに関して言えば、ブロックが見つかると、全員が次のブロックに取りかかる。だから、あなたのコンピューターがブロック 68000 の解決に向けて 1%しか進んでいない時に「XYZ が数分前にブロック 68000 を解いた」というメッセージを受け取ると、あなたの PC は「じゃあ次に行こう」と思う。すでに誰かが解いたブロックに CPU を浪費しない。そこが検証の部分だ。そうでなければ、誰かがクライアントを改ざんして「ブロック 68000、68001、68002 などを解いた」とブロードキャストして全範囲の所有権を主張することになる。クライアントがブロックを解いたと言うと、他のすべてのコンピューターが「わかった、じゃあ証明しろ、結果を送れ」と言う。十分な数が互いにそれについて話し合うと、「はい、あなたの PC がブロック 68000 を解いた、新しい所有者だ、おめでとう」と合意する。
重要なポイントは、我々の PC がブロックを解くのに数時間/数日かかるが、他の全員がそれが本当かどうかチェックするのはミリ秒しかかからないということだ。これにより、ネットワーク上での「偽ブロック発見」攻撃が防止される。
別の例を挙げよう。何百人もいる部屋がある。全員にランダムに混ぜられたルービックキューブが渡される。最初に解いた人が 50 コインもらえる。
誰かが「解いた!」と叫んだら、周りの人が一目見るだけで本当かどうかわかる(全面に単色)。誰かが「解いた!」と叫んでもまだグチャグチャなら、全員その人を無視して続ける。「本当に」解いた最初の人が賞を獲得し、全員が現在のルービックキューブを捨て、天井からさらにランダムに混ぜられたルービックキューブが落ちてきて、プロセスが再開される。