プルーフ・オブ・ワーク(PoW)とは何ですか?
PoW(Proof-of-Work)とは、スパムメールの送信やサービス妨害攻撃など、軽薄で悪意のある計算能力の使用を阻止するために、重要ではないが実現可能な量の努力を必要とするシステムのことである。この概念は、2004年にHal FinneyがSHA-256ハッシュアルゴリズムを用いた「Reusable Proofs of Work 」というアイデアによってデジタルマネーの安全性に応用されました。
2009年に発表されたビットコインは、フィニーのPoWの考え方を初めて広く採用したものである。Proof-of-Workは他の多くの暗号通貨にも適用されており、安全で分散型のコンセンサスを実現しています。
キーステートメント
- Proof-of-Work(PoW)とは、ネットワーク上のメンバーが任意の数学的パズルを解く努力をすることで、誰もがシステムを賭けることができないようにする、分散型の合意形成メカニズムである。
- プルーフ・オブ・ワークは、暗号通貨のマイニングにおいて、取引の検証や新しいトークンのマイニングに広く利用されています。
- Proof-of-Workにより、ビットコインやその他の暗号通貨の取引は、信頼できる第三者を必要とせず、安全な方法でピアツーピアで処理することができます。
- 大規模なプルーフ・オブ・ワークには膨大なエネルギーが必要で、ネットワークに参加するマイナーの数が増えれば増えるだけです。
- Proof-of-Stake(PoS)は、Proof-of-Workに代わる新しいコンセンサスメカニズムの一つです。
Proof-of-Workについて
ここでは、Bitcoin ネットワークで機能するProof-of-Work に焦点を当てて説明します。ビットコインは、「ブロックチェーン」と呼ばれる一種の分散型台帳に支えられたデジタル通貨です。この台帳には、すべてのビットコイン取引の記録が含まれており、順次「ブロック」に配置されているため、ユーザーが保有している資産を2回使用することはできません。改ざんを防ぐために、台帳は公開(分散)されており、改ざんされた台帳はすぐに他のユーザーに拒絶されます。
実際にユーザーが改ざんを検知する方法は、ハッシュと呼ばれる長い数字の羅列で、これがProof-of-Workの役割を果たします。あるデータをハッシュ関数(ビットコインではSHA-256を使用)に通すと、1つのハッシュしか生成されない。しかし、「雪崩現象」により、元のデータの一部を少しでも変更すると、全く認識できないハッシュが生成されてしまう。元のデータセットのサイズがどのようなものであっても、ある関数が生成するハッシュは同じ長さになります。ハッシュは一方通行の関数であり、元のデータを得るためには使えず、ハッシュを生成したデータが元のデータと一致しているかどうかを確認するためにしか使えません。
ビットコインのトランザクションのセットに対して任意のハッシュを生成することは、現代のコンピュータにとっては些細なことであるため、このプロセスを「仕事」にするために、ビットコインネットワークは一定の難易度を設定している。この設定は、約10分ごとに新しいブロックが「マイニング」(有効なハッシュを生成してブロックチェーンに追加すること)されるように調整されています。難易度の設定は、ハッシュの「目標値」を設定することで実現している。目標値が低いほど、有効なハッシュのセットが小さくなり、ハッシュの生成が難しくなる。実際には、非常に長いゼロの文字列で始まるハッシュを意味します。
Proof-of-Workは、当初、増大するスパムメールの問題に対する解決策として考案されました。
特別な考慮事項
与えられたデータセットは1つのハッシュしか生成できないので、マイナーはどのようにして目標以下のハッシュを確実に生成するのか?マイナーは入力にnonce(”number used once”)と呼ばれる整数を加えて変更する。有効なハッシュが見つかると、そのハッシュがネットワークにブロードキャストされ、ブロックがブロックチェーンに追加されます。
マイニングは競争ですが、競争というよりはくじ引きのようなものです。平均して10分ごとに誰かが許容範囲内のProof-of-Workを生成しますが、それが誰なのかは誰にもわかりません。マイナーは、ブロックを採掘するチャンスを増やすために協力し合います。その結果、取引手数料が発生し、期間限定で新たに作成されたビットコインが報酬として支払われます。
Proof-of-Workは、ブロックチェーンを改変することが非常に困難です。また、ハッシュ関数を完成させるために必要な機械や電力は高価であるため、一人のユーザーや複数のユーザーがネットワークのコンピューティングパワーを独占することも困難です。
マイニングネットワークの一部が別のProof-of-Workを受け入れるようになった場合、ハードフォークと呼ばれる。
Proof-of-Workの例
Proof-of-Workとは、コンピュータがランダムにハッシュ関数を実行し、適切な最小量の先頭ゼロを持つ出力に到達することを要求するものである。例えば、2017年10月16日に採掘されたブロック#429818のハッシュは、000000000000000000c508bc2ada8ebc62cf1c69cb66a163d9a99abad87599b6です。そのハッシュ化に成功したときのブロック報酬は12.5BTCでした。
そのブロックには常に、1,000ビットコイン強の1,768件の取引と、前のブロックのヘッダーが含まれています。もし誰かが取引額を0.00001ビットコインでも変更しようとしたら、結果として得られるハッシュは認識できず、ネットワークはその不正行為を拒否するだろう。
Proof-of-Workに関するFAQ
Proof-of-Workとは何ですか?
PoWとは、ネットワーク上のノードが計算力(仕事)を費やしたという証拠を提示することで、分散型の方法でコンセンサスを得て、悪者がネットワークを乗っ取るのを防ぐためのものです。
Proof-of-Workはどのようにして暗号化トランザクションを検証するのですか?
作業自体は任意です。ビットコインの場合、SHA-256ハッシュアルゴリズムの反復作業が含まれます。しかし、ハッシュのラウンドの「勝者」は、メンプールからのトランザクションを集約し、次のブロックに記録します。勝者」は作業量に比例してランダムに選ばれるため、ネットワーク上の全員が正直に行動し、真の取引のみを記録するというインセンティブが働きます。
なぜ暗号通貨にはプルーフ・オブ・ワークが必要なのか?
暗号通貨ネットワークのようなブロックチェーンは、分散化されたピアツーピア方式を採用しているため、コンセンサスとセキュリティの両方を実現する何らかの方法が必要です。Proof-of-Workはそのような方法の1つで、ネットワークを乗っ取ろうとするにはリソースが多すぎるのです。他にも、Proof-of-Stake (PoS)や proof of burn など、リソースをあまり必要としないものの、他の欠点や欠陥を持つ証明メカニズムも存在します。証明機構がなければ、ネットワークとその中に保存されているデータは、攻撃や窃盗に対して脆弱になります。
ビットコインはPoW(プルーフ・オブ・ワーク)を採用していますか?
はい。ビットコインは、SHA-256ハッシュ関数に基づくPoWアルゴリズムを使用して、トランザクションを検証・確認し、新しいビットコインを発行して流通させています。
PoS(Proof-of-Stake)とPoWの違いは何ですか?
PoSは、ブロック取引の採掘や検証を行うノードを、そのノードが保有するコインの枚数に応じてランダムに割り当てるコンセンサスメカニズムです。ウォレットに保持されているトークンの数が多ければ多いほど、実質的に多くのマイニングパワーが付与されます。PoSはリソースの消費が少ない反面、小規模なアルトコインでは51%の攻撃を受ける可能性が高く、トークンをため込んで使わないというインセンティブが働くなど、いくつかの欠点があります。