プルーフ・オブ・ワークは、特定の計算問題を解くことで、取引の正当性を証明する仕組みだよ。これにより、誰でも自由に取引を承認できるけど、不正をするのはとても難しくなるんだ。
第4章
大事な仕掛け:プルーフ・オブ・ワーク(Proof-of-Work)
1. プルーフ・オブ・ワークの基本的な仕組み
ビットコインのネットワークは、「プルーフ・オブ・ワーク(Proof-of-Work)」という仕組みを使って成り立っているんだ。
具体的には、「ハッシュ関数」を使って、特定の条件を満たすハッシュ値を見つける作業を行うんだ。
2. ナンスを変えてハッシュを探す作業
この計算では、ブロックの中の「ナンス(Nonce)」という値を少しずつ変えて、条件に合うハッシュ値を見つけるんだ。
条件に合うハッシュ値(例えば、ハッシュ値の先頭に一定数のゼロが並ぶもの)を見つけるのはとても難しいけど、一度見つかると、その答えが正しいかどうかを他の人がすぐに確認できるんだ。
この計算が終わると、そのブロックは確定されて、データを変更するのがとても難しくなるんだよ。もしブロックを変更したいなら、そのブロック以降の全ての計算をやり直さないといけないんだ。
ナンスって?
ナンスは、一度だけ使われる任意の数値で、計算問題を解くために使われるんだ。
3. プルーフ・オブ・ワークによる多数決問題の解決
ネットワーク上での「多数決」を公平に行うために、プルーフ・オブ・ワークが役立っているんだ。
もし「1つのIPアドレス=1票」だと、たくさんのIPアドレスを持つ攻撃者がシステムを操作できてしまうけど、「1つの計算能力(CPUパワー)=1票」にすれば、不正をするためには莫大な計算能力が必要になるんだ。
最も長いチェーンが、一番多くの計算が行われた「正しい」チェーンとみなされるんだよ。正直なノード(コンピュータ)が多ければ、その正しいチェーンが一番速く成長して、他の不正なチェーンよりも優先されるんだ。
4. 攻撃者がブロックを変更する難しさ
過去のブロックを変更して不正を行おうとする攻撃者は、そのブロックとそれ以降の全てのブロックの計算をやり直さないといけないんだ。
でも、その間にも正直なノードたちが新しいブロックをどんどん追加していくから、攻撃者が追いつくのはとても難しいんだよ。
ブロックが追加されるたびに、攻撃者が追いつく可能性はどんどん低くなっていくんだ。
5. プルーフ・オブ・ワークの難易度調整
ビットコインのネットワークでは、プルーフ・オブ・ワークの難易度が自動的に調整される仕組みになっているんだ。
これは、コンピュータの性能が上がったり、ネットワークに参加するノードの数が変わったりしても、ブロックが生成されるスピードを一定に保つためなんだ。
例えば、ブロックが予定より早く作られすぎたら、次のブロックから難易度が上がって、計算が難しくなるんだ。逆に、遅すぎたら難易度が下がるんだよ。
こうして、約10分ごとに新しいブロックが生成されるように調整されているんだ。