見出し画像

ブロックチェーン入門_#9:ブロックチェーン技術「プルーフ・オブ・ワーク」 - 改ざんを防ぐ

悪意による不正を防ぐために設けられている「プルーフ・オブ・ワーク」とはどんな仕組みなのでしょうか。関連する用語の説明とともに、概要と特徴を解説します。


プルーフ・オブ・ワークとは何か?

■悪意ある人の不正を防ぐ仕組み

プルーフ・オブ・ワーク(作業証明)は、文字通り、何かの作業をした証明を指します。その証明がないと処理を次に進めることができない仕組みになっています。

プルーフ・オブ・ワークを導入したのは、ブロックチェーンが初めてではありません。この手法は、悪意のある人が不正をしようとすると、善意の人よりもコストがかかるように設計することで、不正行為を抑制できる仕組みとして以前から使われてきました。

例えば、メールを送る際に受信者の数の分だけ簡単な計算をしなければならない仕組みにしたとします。善意の人はほとんど意識せずにメールを送れますが、数百万人に宛ててスパムを発信したい業者は大きな計算コストを払わなければならなくなり、スパム行為を食い止めることができます。

■コンセンサスの仕組みではない

プルーフ・オブ・ワークは不正防止策であってコンセンサスの仕組みではありません。この点はよく誤解されています。

分散システムの世界における「コンセンサス」は、並行して計算に参加しているコンピュータの間で共有している変数の値が、少なくとも壊れていないコンピュータの間では一致することを指します。ブロックチェーンの場合は、ブロック番号が変数の名前で、その値はブロックのダイジェストだと考えることができます。どの正常な参加者から見ても同じブロック番号に対しては同じブロックを見るようになることが、ブロックチェーンにおけるコンセンサスの意味です。

以降に示すように、プルーフ・オブ・ワークの作業自体は、直接的にはこのことに貢献しません。

ブロックチェーンにおけるプルーフ・オブ・ワーク

■ブロックの生成条件

Bitcoin(ビットコイン)などのブロックチェーンでは、新しいブロックを生成する際に、プルーフ・オブ・ワークの条件を満たす必要があります。その条件とは、生成したブロックのダイジェストが、直前のブロックから引き継がれている「ターゲット値」以下でなければならないというものです。

この条件を満たすブロックを作り、それがチェーンの一部になると、報酬としてBitcoinの場合は6.25BTC(2023年4月現在)が得られるので、大勢の参加者たちが競ってプルーフ・オブ・ワークに参加します。この行為を、金の発掘に群がる発掘者らになぞらえて「マイニング」と呼びます。また、マイニングに参加する事業者らを「マイナー」と呼びます。

■ターゲット値とその調整

ターゲット値は、最初のブロック(ジェネシスブロック)で決められ、ブロック間隔が一定になるように全員が同じアルゴリズムに沿って再計算することで調整されます。

この値は、ブロックのダイジェストが取り得る値(Bitcoinの場合、256ビットの値のいずれか)の中で、極端に小さな値として設定されます。暗号学的ダイジェストは予めどんな値になるかは分からず、結果はとてつもなく広い数の範囲の中に一様に分布し、ダイジェストがターゲット値以下となるブロックを作成することは極めて困難です。

そのため、参加者は何度もブロックの内容を変えて作り直し、そのダイジェストを計算し直すということを繰り返します。そしてようやく誰かが、ダイジェストがターゲット値以下になるブロックの作成に成功し、そのブロックをネットワーク上で配付します。いつ、誰がブロックの作成に成功するかは(もちろん単位時間当たり何回計算できるかに依りますが)偶然によって決まるため、この作業は「くじ引き」だと言えます。

この、何度もダイジェストを計算するコストは、主として、コンピュータを動かす電力のコストになります。ブロックが作れるかどうかはくじ引きのため、偶然で決まります。これは確率的に決まると言い換えることができますが、どれだけの電力を買えば(あるいは発電すれば)、どの程度の割合で6.25BTCといった報酬を貰えるかが期待値として計算できます。

電力コストに対して報酬の期待値が大きければ、マイニングは儲かるビジネスとなり、参入者が増えます。参入者が増えるとダイジェストの計算の試行回数が大きくなり、誰かがブロックの生成に成功するまでの時間間隔が短くなります。すると、Bitcoinの場合は平均10分としているブロック間隔より短くなってしまうため、皆でターゲット値をさらに小さくして、ブロックが作られる間隔を平均10分に近づけていきます。

逆に電力コストに対して報酬の期待値が小さければ、マイニングは赤字を出すビジネスとなり、撤退する人たちが増えます。するとダイジェストの計算の試行回数が小さくなり、誰かがブロックの生成に成功するまでの時間間隔が長くなります。そこで、皆でターゲット値を大きくして、ブロックが作られる間隔を平均10分に近づけていきます。


■ノンスの役割

ブロックの内容を変化させ、ダイジェストの計算を試行するのをやりやすくするために、ブロック内には「 ノンス 」という領域が設けられています。そこに異なる数値を埋め込むことで、異なるダイジェストを生成できます。

プルーフ・オブ・ワークがもたらすもの

■改ざんが困難になる

マイニングに参加する事業者らは、ブロックのダイジェストがターゲット値以下になるようなノンスを見つけるために、何度も計算を繰り返す必要があります。この繰り返しの計算がコストとなり、ハッシュチェーンの構造によって、次の理由により過去のブロックほど改ざんが困難になります。

過去のブロックから、例えばトランザクションを一つ取り除いたとします。するとそのブロックのダイジェストが変化しますが、それは典型的にはターゲット値よりも大きな値になるため、プルーフ・オブ・ワークの計算をもう一度そのブロックに対して行う必要があります。そのコストは、そのブロックが作られた時点でそのブロックチェーンに参加していたマイナーたちの全計算力を使って平均して10分間に1回、ブロックの生成に成功する程度の試行回数分のコストです。

さて、運良く(あるいは粘り強く)そのブロックのプルーフ・オブ・ワークに成功したとします。そのブロックのダイジェストはそのブロック番号の時点でのターゲット値以下ですが、その次のブロックに格納されている値とは異なっているはずです。そこで、次のブロックに格納されているダイジェストを書き換えます。すると次のブロックの内容が変わり、そのダイジェストは典型的にはターゲット値よりも大きな値になり、今度は次のブロックに対してプルーフ・オブ・ワークの計算をもう一度行わなければならなくなります。

このように、ハッシュチェーンの構造になっていることによってプルーフ・オブ・ワークの計算コストが積み上がっており、過去に遡るほど、莫大な計算をやり直さなければ改ざんに成功しないようになっています。

■コンセンサスの仕組みが必要になる

プルーフ・オブ・ワーク自体はコンセンサスの仕組みではありません。それが証拠に、複数のマイナーらが競争的にプルーフ・オブ・ワークの計算に取り組むことで、ほぼ同時に有効なノンスを引き当てたマイナーたちが別々のブロックを配付することが起き得ます。このことにより、同じブロック番号に対してブロックが一意に決まらない事態が生じます。

競争的なプルーフ・オブ・ワークはこうした事態を引き起こすため、対策として、ブロックチェーンにコンセンサスの仕組みが必要になります。そのコンセンサスについては次の「ブロックチェーンの技術「ナカモト・コンセンサス」 - 歴史を一つに」で解説します。


Web3ポケットキャンパスはスマホアプリでも学習ができます。
アプリではnote版にはない「クイズ」と「学習履歴」の機能もあり、
よりWeb3学習を楽しく続けられます。

ぜひご利用ください
▼スマホアプリインストールはこちら

この記事が気に入ったらサポートをしてみませんか?