こんにちは。シロガネ@SNOWBALL EFFECTです。
仮想通貨を勉強するときに分かりにくいキーワードが『コンセンサス・アルゴリズム』だと個人的に思っています。
PowとかPosとか、そもそも何て読むんだ!と初心者のときに思いました。
この仮想通貨初心者を苦しめるコンセンサス・アルゴリズムについて分かりやすく解説していきます。
コンセンサス・アルゴリズムとは「コンセンサス(合意)」「アルゴリズム(方法)」とも訳されます。
ビットコインのコンセプトは1つの大きな存在(中央集権的なとも呼ばれます)の国や企業から独立した通貨を作ろう、というものです。
これまでは、「Aさんが100万円をBさんに送金した」という取引を銀行がチェックをして記録をしていました。
しかし、ビットコインは取引をチェックする銀行が存在しないので「この取引がほんとうに正しいのか?」を誰かが承認する必要があります。
この承認作業を「誰が」「どのように」行うかをルールにしたものをコンセンサス・アルゴリズムと呼びます。
例えば、「会議の出席者の過半数がその議題について賛成したら承認される」といったものに近いイメージです。
非中央集権をモットーにしている仮想通貨は「その取引が正しいか」を承認することが非常に大切なため、様々なコンセンサス・アルゴリズムを考え日々試行錯誤しています。
ここからは代表的な5つの分類について解説していきます。
下記の図はコンセンサス・アルゴリズムの代表的な5つの特徴を図にしてあります。時間がない人はこの図だけ見てもらっても大丈夫です。
まずはおなじみビットコインに用いられている「PoW(プルーフ・オブ・ワーク」。
PoWは「マイニング(承認作業)を一番早くできた人に賞金をあげる」仕組みです。
ビットコインの仕組では「AさんがBさんに1BTCを送金した」という取引が発生した際にその取引をもとに1つのブロックを作ります。この時点ではそのブロックが本当に正しいのかは不明ですが、膨大な計算をマイナーが行うことで取引が正しいことが「承認」されブロックが生成されます。
そして、ブロックを生成したマイナーには報酬としてBTCが支払われます。
こうしたブロックチェーンの取引を承認する際にPCのパワーと電力を使って最初にブロックを生成した人にだけ報酬を与える仕組みをPoWと呼びます。
承認作業の「仕事量」に応じて報酬が与えられる点が特徴です。
ブロックチェーンにはそれまでの取引がすべてブロックとして繋がっているため、どれか一つの取引を改ざんしようとしても全てのブロックを書き換える必要があります。
膨大な電力を消費してマイナーが行っていたすべての承認作業を一から行うのは事実上不可能なためブロックチェーンは改ざんが不可能と言われています。
・中央集権ではないため低コストかつサーバーダウンのリスクが低い
・ブロックをすべて書き換えるのは不可能なためトラストレス(信用を証明する必要がない)
がPoWのメリットです。
反対にPoWのデメリットは、
・マイニングに膨大な電力を消費する
・悪意のあるマイナーが計算量の過半数を支配してしまうとブロックの改ざんが可能になる(51%攻撃)
・巨大な資本力を持つ一部のマイナーが取引を掌握してしまう
といったものがあります。
PoWのデメリットを解決しようと考えられたコンセンサス・アルゴリズムでPeercoinやNxt等、いろいろな仮想通貨に使われています。
有力なアルトコインのEthereumも段階的にPoWからPoSに移行する計画になっています。
PoS(プルーフ・オブ・ステーク)は「保持しているコインの量と年数に応じてマイニングの難易度が上下する仕組み」です。
持っている仮想通貨の量が多くて期間が長いとマイニングにかかる計算の難易度が簡単になるため、PoWよりも少ない電力でマイニングが可能になります。
また、先ほど説明した51%攻撃もPoSは理論上起こりにくいとされています。
PoSで51%攻撃を行う場合は大量の該当コインを保持する必要がありますが、仮想通貨を集めるコストが莫大なものになります。また、51%攻撃で信頼性が低下したコインは価格が下がるため大量のコインを保有しているマイナーほど利益を損ないます。
PoSを採用することで「51%攻撃をして得られる利益よりも普通にマイニングをしたほうが得」になります。うーん。賢いですね…。
復習するとPosのメリットは
・PoWより少ない電力消費でマイニングが可能
・51%攻撃が起こりにくい
です。
反対にデメリットは、
・保有量と期間によってマイニングの難易度が下がるため、コインを売却するインセンティブが失われて流動性が下がる
・不正なブロックの承認をしても消費電力が少なく、かつ保有コインが没収されるわけでもないめ「とりあえずウソの取引を承認しよう」と考える人が出てくる
になります。
こうした問題点を解決するアルゴリズムも構想されており、2つ目の問題点(Nothing at Stake問題と呼ばれる)については「Slasher(スラッシャー)」が解決策として考えられています。
PoSの問題点を解決するコンセンサス・アルゴリズムも多く考えられており、代表的なのがDPoS(デリゲイテッド・プルーフ・オブ・ステーク)です。
仮想通貨LISKにも採用されているもので「ブロックを承認するマイナーを投票で決めてしまう。その投票権は保有しているコイン量に応じて増減する」という仕組みです。
DPoSは「間接民主制」のアルゴリズムとも呼ばれます。
日本でも有名な仮想通貨NEMにも採用されているコンセンサス・アルゴリズムです。
PoIは「コインの保有量だけでなく、残高・取引回数・取引量に応じてマイニングの難易度を調整する」仕組みです。
PoSの問題点の一つに「流動性が下がる」というものがありました。PoIは保有量以外の「重要度」をスコアリングしてマイニングの難易度が変わってくるため、コインを保有しているだけではマイニングの難易度は高いままになります。
こうしたPoSの問題点を解決しようと試みて作られたのがPoIです。
ちなみに私たちも公式のウォレット「Nano Wallet」を使ってNEMの取引をすることで少量ですがマイニング報酬(ハーベストと呼ばれる)がもらうことができます。
PoIのメリットは、
・電力消費が少ない
・流動性が保たれる
というものです。
反対にデメリットも指摘されており、
・資本力のある組織がコインを大量に保有、消費することでマイニング報酬を独占してしまう
・コインの価格が上がると小資本のマイナーがマイニングをできなくなる
といったものがあります。
個人的にはPoIは良くできたシステムだと思っていますが、NEMの価格が200円を超えるといったインフレが起こると結局大組織が得をする仕組みのため問題があると感じています。
PoC(プルーフ・オブ・コンセンサス)は日本人に大人気のリップル(XRP)に使わているコンセンサス・アルゴリズムです。
PoCは他のコンセンサス・アルゴリズムと異なり、「取引を承認する役割の人が最初から決まっていて、80%が承認すればブロックが生成される」仕組みです。
この取引を承認する人を「バリデーター」と呼びます。このバリデーターはリップル社及び、リップルをビジネスで使っている大企業(マイクロソフトやSBI)が担っています。リップルが正常に働かないと困る組織がバリデーターをしているので信頼性が高いと考えられています。
PoCのメリットは、
・マイニング競争の概念がないため、取引の承認が高速で行われる
・バリデーターの消費電力が少ない
ということが言えます。
特に取引が高速で行われる点は非常に有益だと思います。
BitcoinもEthereumも取引が増えれば増えるほど速度が遅くなる(スケーラビリティ問題)があるため様々な解決策が考えられていますが、PoCにはそうしたことを考える必要がありません。
反対に、
・一部の大企業が承認作業を掌握しているのは中央集権的
という批判もあります。
PoB(プルーフ・オブ・バーン)は仮想通貨Counterpartyに使われているコンセンサス・アルゴリズムです。
PoBは少し特殊で「コインを誰にも使えないアドレスに送ることで新しいコインを報酬としてもらえる」仕組みです。
承認作業はPoWと同じですが、マイニング報酬としてもらったコインを消失(Burn)することで新しいコインをもらえます。これによって初期マイナーがコインを独占することを防ぎ、新しいコインの発行をスムーズに行えることが可能です。
ソーシャルメディアのプロジェクト『ALIS』はICO後に保有コインをBurnすることですでに流通しているコインの価格を上げることに成功しています。
PoBは既存コインの流通量と新規コインの発行量を調整するためのコンセンサス・アルゴリズムとも言えます。
コンセンサス・アルゴリズムは今回紹介した代表的な5つ以外にも沢山あります。
「このコンセンサス・アルゴリズムの○○が良くないから新しいアルゴリズムを考えよう」と世界中のプロジェクトが日々新しい仕組みを生み出しています。
将来的にはこうした「コンセンサス・アルゴリズムを考える職業」が生まれるかもしれませんね。
国家が規制するよりも「上手い仕組み」を考える方が低コストで解決できる物事が世界中には沢山あると思います。
例えば「貧困問題解決に向けたブロックチェーンプロジェクトのコンセンサス・アルゴリズムを考える」なんて非常に価値が高い仕事になります。
今はまだ混迷期のブロックチェーンですが上手い仕組みを考えついた人が大きな利益を得る時代がもうすぐ来ています。
今回紹介したコンセンサス・アルゴリズムを勉強して、有望なプロジェクトを自分で見つけてみてください!
ご一読有難うございました。