Proof-of-Work(PoW)とは?

ちょっと説明が難しいので引用させて頂きます。

 

  • 日:プルーフ・オブ・ワーク
  • 英:proof of work, PoW

通常、カタカナでそのまま表記されますが、あえて訳すなら「仕事量による証明」。悪意のあるハッキング等によるコイン偽造を防ぐためのもので、偽造するためにはより多くの「仕事量」を費やさなければなりません。

プルーフ・オブ・ワークとは、各取引を認証するために算出しなければならないデータまたはそのようなシステムのことです。ビットコインをはじめとするほとんどの暗号通貨では、プルーフ・オブ・ワークを計算する手段としてハッシュ関数が用いられています。

実際の取引の承認作業を説明しましょう。まず、ビットコインの各取引単位(ブロック)には送金額や送信者等の取引情報のほかに、nonceと呼ばれるランダムな変数が含まれなければなりません。ビットコインにおけるプルーフ・オブ・ワークは、一定回数の「0」の連続から始まるハッシュ値(0が一定の回数続けば残りのデータは任意)であり、取引の承認とは、総当たり式にnonceを増加させることによりハッシュ計算からプルーフ・オブ・ワークを求めることです。正しいnonceを見つけること、とも言えます。ハッシュ値から元の値を計算することはできないので、総当たりに計算する必要があるのです。

なお、承認者はこのnonceの発見の報酬としてコインがもらえるため、承認者のことを採掘者(マイナー)、承認作業のことを採掘(マイニング)とも呼びます。

ビットコインでは、コインの偽造を防ぐため、この計算に約10分かかるように設定されています。ビットコインにおけるコインの偽造とは、つまり取引データを改ざんすることなので、求めなければならないプルーフ・オブ・ワークも変わり、再計算が必要になります。ここで重要なのが、ブロックに過去の取引データも含まれているということとブロックチェーンの考え方です。つまり、仮に取引データを改ざんしようとすると、その後行われた取引データ(ブロック)も再計算しなければなりません。現実的には「悪意のある」攻撃者、偽造者の他に多数の「善良な」計算者がいるため、再計算速度が新たな取引承認の計算速度においつけないため、偽造は非常に難しくなります。

このようにプルーフ・オブ・ワークはビットコインにおけるセキュリティの根幹ともいえる役割を果たしています。

 

プルーフ・オブ・ワークとはコンセンサス・アルゴリズムの1つです。

P2P(ピアツーピア)ネットワークにおいて何を発言権として認めるか?という問題に対してのひとつの回答です。古典的なP2PではIPアドレスひとつごと、プロセス1つごとなどに発言権がありましたが、ビットコインではこれをCPUの計算量に応じて発言権を与えることにしました。

具体的には多大な計算量を要する問題(=特定の条件を満たすハッシュを探す)を最初に解いたものに発言権(=ブロック)を与えています。

ビットコインネットワークに偽の情報を受け入れさせるためには過半数の発言権を手に入れなければなりませんが、そのためにはネットワーク全体の半分以上のCPUパワーが必要となります。また過去にさかのぼって改変するのは指数関数的に難しくなるためビットコインネットワークに対する攻撃は事実上不可能といえます。

より一般的にプルーフ・オブ・リソースという概念があり、PoWはその一形態といえるでしょう(CPUリソースという意味で)。

アルトコインでよく利用されるのがプルーフ・オブ・ステーク(PoS)です。これは利害関係に基づき発言権を与えるモデルで大まかにいうとコインの保持量に応じて発言権を認めるというのに似ています。PoSではPoWと違って無駄な電力消費を抑えるというメリットがあります。ただPoS単独ではなくPoWやほかの概念と組み合わせて使われることが多いようです。