どーも、管理人です。
今回は、ビットコインを始めとした多くの仮想通貨でよく見かけるワードの一つ
「プルーフオブワーク(proof of work)」について話していきたいと思います。
プルーフオブワーク?また難しそうなワードやなあ。
では、早速いきましょう。
プルーフオブワーク(proof of work)って何?
プルーフオブワークというのは、ひとことで言えば、
多くの仮想通貨における取引を支えているルール(システム)の一つ
です。
もう少し具体的にいきますね。(今回はちょっと難しい話になりますので、理解出来たら自分を褒めてあげてください。)
ビットコインを例に話しましょう。ビットコインにもこのプルーフオブワークというルールが採用されています。
ビットコインはブロックチェーンと呼ばれる技術により、これまでのビットコインの取引履歴(AさんがBさんに1ビットコインを送ったなどの情報)が、ブロックと呼ばれるデータの箱の中に全て記録されています。
そしてこの記録作業を行う人たち(ブロックを作成していく人たち)のことをマイナーと呼びます。
マイナーが、「行われたビットコインの取引」を記録していき1つのブロックを作成し、作られたブロックが、ブロックチェーンに接続している「ノード」と呼ばれるコンピュータ(ブロックチェーン参加者)の過半数に、そのブロックの内容は正しいと認められれば、1つのブロックの作成が完了し、次のブロックが同じように新しく作られていきます。
このようにマイナーが、「行われたビットコイン取引」をブロックの中に記録して作成し、過半数のノードに承認されることで、みなさんが行うビットコインの取引が無事に完了するわけです。
でもブロックを誰でも作成できるんなら、たくさんのブロックが乱立したり、間違った内容の取引(改ざんされた内容の取引)が記録されたブロックが溢れかえってしまうんじゃないの?
そういったことを防ぐために、「ブロック作成を担当するためにたくさん計算をしてくれた人マイナー」にブロック作成する権限を与えることになっています。
具体的には、「膨大な量の計算を行ってノンスと呼ばれる特定の値を見つけることができたマイナー」が作成したブロックを正しいと認めるようになっています。
そして先ほど話したように、そのようにしてブロック作成権利を得たマイナーが作ったブロックを、他のノード(ブロックチェーン参加者)の過半数が「このブロック内の取引内容は正しい」と認めれば、無事ブロックが完成するということになりますので、もしブロックの中身が改ざんされていたり、不正な内容だったりすれば、このブロックは承認されず、別のマイナーが再度正しいブロックの作成にとりかかるというわけです。
このように、膨大な計算作業を行ったマイナーがブロックを作成できる権利を得て、そのマイナーが作ったブロックを他のノードの過半数が承認することで正しいブロックとしてつながれていく仕組みのことを
「プルーフオブワーク(proof of work)」と言います。
「ワーク(work)=作業」、「プルーフ(proof)=証明」であり、直訳すれば「作業の証明」です。
つまり、正しいブロックを作成するためには「たくさん作業をしたことの証明(膨大な計算をしてノンスと呼ばれる特手の値を見つけたこと)」が必要ですよ、という意味が込められています。
プルーフオブワークはビットコインの偽造・改ざんを防ぐ役割を持つ
もし過去の取引履歴を改ざんしようとした場合
ビットコインが始まってこれまでの間に行われたすべての取引が、こうしてブロックの中に記録され、ブロック同士は紐づけされています。
一つ前に作成されたブロックの情報の一部が次のブロックに情報として加えられているので、ブロックチェーンの性質上、過去に作成されたブロックを改ざんしようとすれば、その改ざんしたいブロックの後に作られたすべてのブロックも改ざんしなければいけなくなります。
ビットコインの取引履歴すなわちブロックチェーンは、ブロックチェーン参加者全てのコンピュータに分散されているため、もし過去の取引履歴を改ざんしようとするならば、ブロックチェーン参加者全体のコンピュータをハッキング氏、それらのコンピュータ上にある取引履歴も改ざんする必要がありますが、実質それはほぼ不可能です。
もしマイニングにより不正なブロックを作成しようとする場合
それではもし過去の取引履歴を改ざんするのではなく、新しくマイニングにより不正なブロックを作成していく場合について考えてみます。
新しく作られたブロックは他のノードにより監視されていますので、もし不正な内容であればこのブロックは承認されずに他のマイナーたちによって再度正しいブロックの作成が行われていきます。
ブロックチェーンでは、ブロックが分岐した場合、長くチェーンを結んだ方のブロックを「正しいもの」としてみなします。そして、善意のマイナーは常に正しく長い方のチェーンに次々とブロックを作成していくので、もし不正なブロックを次々と作成していこうとする場合、そういった善意のマイナーたちを越える計算能力、自分以外の全体のマイナーたちのコンピュータを越える計算能力で不正なブロックを次々と作成していく必要があります。
言い換えると全体のマイナーの合計の計算能力のうち過半数(51%以上)以上の計算能力を保持している場合でなければ、この不正なブロックの作成は成功しないという訳です。
ただし、言い換えると51%以上の計算能力を保有さえすれば不正なブロックを作成することは理論上可能という問題もあります。これは「51%問題」とも言われたりします。
とは言いつつ実際問題として、そこまで大規模な計算能力を持つコンピュータ、電気代が用意できるのならば、不正なブロックを作成するよりも、正規にマイニングして新規発行のビットコインを採掘していく方が利益としては大きくなるので、わざわざそこまでして不正なブロックを作成するメリットは低くなります。
プルーフオブワークの持つ問題点
プルーフオブワークは良いことづくしって訳でもなく以下のような問題点も持ちます。
①多大な電気代がかかる
②一部の組織により集中してマイニングが行われている現状
まず①の問題としては、プルーフオブワークはマイニングにおいて「莫大な計算作業を行ったマイナーほどブロックの作成権限が得やすくなる」というルールであるため、とにかくたくさんの高性能なコンピュータをフル稼働し、莫大な計算をさせることが必要になります。
そういった莫大な作業を高性能なコンピュータでフル稼働させて行うわけですから、かなりの電気消費量にもなってきます。
これは「電気という資源の莫大な浪費」であり、長期的に見てこういったプルーフオブワークのあり方は、環境に配慮がなされていないものだと非難する声もあります。
次に②の「一部の組織により集中してマイニングが行われている現状」という問題について、例えばビットコインの場合、現在、中国では組織ぐるみで大規模な工場を建てビットコインの採掘を行っていたりと、かなりの割合で中国によるマイニングが行われています。
さきほど51%問題という話に少し触れましたが、プルーフオブワークのルールにおいて、新しいブロックを作成していく権利を持つ上で大切なのは計算能力です。全体のマイナーの過半数以上の計算能力を保持することができれば、恣意的にブロックを作成してくことが理論上可能です。
それが例え利益を得る上では非効率な方法だとしても、51%以上の計算能力を保有すれば不正なブロックを作成できる、というのはプルーフオブワークにおける問題点の一つです。
また、ビットコインを始め仮想通貨はソフトフォークやハードフォークと言われるような、仮想通貨のアップデートが必要になる場合があります。
この仮想通貨のアップデートは、仮想通貨の仕様を大きく変更することになるので、問題が起きないように事前に多数のマイナーによる支持が必要になったりします。
例えばビットコインがsegwitと呼ばれる仮想通貨のアップデートを行う場合、事前に95%以上のマイナーによる支持が必要になります。
もし、世界中の多くの人がAというバージョンアップを望んでも、一部の多大な計算能力を保持するマイナーがBというバージョンアップを望めば、そこで意見は対立し、場合によってはBというバージョンアップが行われることも考えられます。
このようにプルーフオブワークの問題の一つとして、一部の組織により集中してマイニングが行われることにより、その一部の組織の利益のために、全体の利益が失われる場合も起きてしまうというとがあります。
おわりに
む、難しいぞ。。プルーフオブワークって。。。
色々話してきましたが、改めてプルーフオブワークについてまとめると、
「ビットコインを始め多くの仮想通貨においてマイニングを行う上でのルール」
がプルーフオブワークになります。
(マイニングというのは行われた取引の承認作業(ブロック作成作業)のことですね。)
より詳しく言えば、「(プルーフオブワークを採用した)仮想通貨のマイニングにおいては、高い計算能力を持つコンピュータと多大な電気代を使い、莫大な作業をした人ほどブロックを作成できる権利を持ちやすいですよ。」というルールのことを指します。
そしてこのプルーフオブワークのルールは、不正なブロックの作成を防止し、正しい取引履歴をブロックチェーン上に残していく上で非常に大切なルールである、ということです。
難しい部分も多かったと思いますが、なんとなくでもプルーフオブワークについてイメージ出来れば十分です。
ぜひ参考にしてみてください。