Pow_eyecatch
Pocket

ブロックチェーンは元来、ナカモトサトシによって考案されたビットコインにおいて実装された技術の中でも、中核技術として確立されたものです。

その中でも、最も重要なイノベーションは、プルーフ・オブ・ワーク(Proof of Work)アルゴリズムと呼ばれる取引偽造を防ぐための分散合意システムを取り入れたことであるとも言われています。今回は、そのプルーフ・オブ・ワークについて見ていきましょう。

プルーフ・オブ・ワークの概要

プルーフ・オブ・ワーク(以下「PoW」と略す)アルゴリズムは、非中央集権的で、誰が参加しているかわからない分散(P2P)ネットワークにおいて、取引の合意形成を可能にした、コンセンサス・アルゴリズムの一つです。

ブロックチェーンの仕組みにおいては、支払いや契約といったトランザクション(取引データ)を含めた台帳の1ページとしてブロックを生成しますが、誰もが自由にブロックを生成できてしまうと、容易に改ざんされたブロックが生成できてしまいますので、 ブロック生成に何らかの制約を加えないといけません。

従来のP2Pネットワークでは、IPアドレス一つごとに発言権(ブロックを生成できるノード)を与えることで対応する、といった解決法が提案されてきましたが、そうすると悪意ある攻撃者が大量のIPアドレスを保有することで、多数の発言権を奪われてしまう危険性がありました。

PoWでは、これを「CPUの計算量」に応じて発言権を与えることにしました。具体的には膨大な計算量を要する問題(特定の条件を満たすハッシュを探す)を最初に解いたものに発言権を与えています。

このように、多大な労力をかけてはじめて、新しいブロック生成が有効とされる、というのがPoWの基本的な考えです。(PoWは文字通り、「労力をかけたということの証明」を意味します。)

プルーフ・オブ・ワークの役割

P2Pネットワーク上には、支払いや契約といったトランザクションを改ざんしようとする悪意ある者が現れる可能性があります。悪意を持って改ざんすることを防ぐ効果をPoWは持っています。

ここで重要なのが、ブロックチェーンは、過去から現在までひとつながりの取引台帳になっていることです。つまり、仮にあるブロックを改ざんしようとすると、その後に行われたすべての取引が含まえるブロックも計算し続けなければなりません。

そこで、悪意のある者が不正にブロックチェーンを伸ばし、ブロックチェーンに改ざんデータを残すためには、 他のブロックチェーンの参加者達を上回る速度で不正なブロックチェーンを伸ばして上書きしなければいけません。

しかし現実的には、悪意のある攻撃者や偽造者の他に、多数の「善良な」計算者(ノード)がいるため、再計算速度が新たなトランザクション承認の計算速度に追いつくことができないため、改ざんは非常に難しくなります。

したがって、このように計算能力に応じてブロックを生成できるノードを与えることで、 参加者全体の計算能力のおよそ過半数の計算能力を持たない限りは、このような改ざん攻撃は非常に難しくなることが分かります。

ブロックチェーンではこういった仕組みにより、悪意あるノードの攻撃からブロックチェーンのデータを守っているのです。
このように、PoWはブロックチェーンにおいて、セキュリティの根幹ともいえる非常に重要な役割を果たしています。

ナンス探し

それでは具体的にはどのようにPoWを行なっているのでしょうか。

それは、「送金額や送信者等の取引情報といったこれから生成するブロックの内容に、ナンス(nonce)と呼ばれる、ブロックに入る取引記録をハッシュ関数によって計算しハッシュ値を求め、その計算値が、非常に小さい値(=計算された値の先頭にゼロがいくつも並ぶようでな値)を見つけ出したノードがブロック生成権を手に入れることができる」というものです。

すなわちトランザクションの承認とは、総当たりで大量の計算をおこなって、正しいナンスを見つけることです。また、ここでハッシュ関数がつかわれているのは、ハッシュ値から元の値を計算することはできないので、総当たりに計算する必要があるのです。詳しくは、SHA-256の記事を御覧ください。
目的のハッシュ値が出てきたらそのブロックは有効とみなされる、ということになります。

マイニング

上記から分かるように、正解となるナンスの発見者がブロック承認者であり、この承認作業のことを採掘(マイニング)と呼びます。

ここまで説明してきた所までで、ある疑問が湧いてきます。それは、PoWを成立させるためには、マイニングするためには大量の電気代とマシン代が必要となりますが、そこまでしてマイニングをするモチベーションは存在するのか、という問題です。

これに対する答えは、「実際にマイニングし、最初にナンスを見つけた人に報酬を与える」ということで解決できます。大量の電気代を消費してブロックをマイニングしナンスを見つけたとき、電気代以上の報酬が貰えるのであればマイニングを行うインセンティブが存在することになります。

このように、PoWを伴う新しいブロックの生成に成功した人には、暗号通貨のプロトコルに定められた額の報酬が、その暗号通貨によって支払われることになっています。すなわち「経済的インセンティブによりマイナーを集め、それをもって善良なPoW実行者の増加につなげる」というのが、P2Pネットワークにおいて、ちょうど良いインセンティブシステムになっているのです。

マイニングに関して、詳しくは以下の記事もご覧下さい。
ブロックチェーンの健全性を支えるマイニング

 

スパムメールのための仕組み「ハッシュキャッシュ」

ここまで見てきたPoWという概念は、実は「ハッシュキャッシュ」という仕組みとして以前より存在しており、ブロックチェーンだけの概念ではありません。

ハッシュキャッシュとは、CPU処理で生成するハッシュ値を元に、送信元を検証する仕組みです。PoWと同様の概念で、「ハッシュ関数に出力されるハッシュ値がある値以下になるような、入力値を見つける」という問題を解くことになります。

このハッシュキャッシュは、元々スパムメールを防止するための仕組みとして考えだされました。メールを送信するときには必ずこのハッシュキャッシュの問題を解かなければならない、というルールを課すことができれば、 一通のメールを送るのにある程度の計算能力を消費しなければいけないので、 大量の宛先にメールを送信するというのが非常に難しくなり、スパムメールを減らすことができると考えられたためです。 これは直感的には、計算能力を(お金のように)支払わないとメールが送れない、と捉えることができますので、 キャッシュ(お金)という言葉が使われたようです。

ただ、現時点でハッシュキャッシュがメールシステムで使われることはほとんどありません。
このようにPoWを導入することで、ブロックチェーンはP2Pネットワークにおいてセキュリティの強い分散合意の仕組みとなっています。このPoWが皮切りとなり、今ではPoWを応用・改良した様々なコンセンサス・アルゴリズムが開発されています。これらのアルゴリズムは利用されるサービスによって使い分けられるので、是非注目してみてください。

Pocket

Mine Aram

Gaiax技術マネージャ。研究開発チーム「さきがけ」リーダー。新たな事業のシーズ探しを牽引。2015年11月『イーサリアム(Ethereum)』 デベロッパーカンファレンス in ロンドンに参加しブロックチェーンの持つ可能性に魅入られる。以降ブロックチェーン分野について集中的に取り組む。