PoW、PoS、XRP Consensus等各種コンセンサスアルゴリズムの違いをおさらい

PoW、PoS、XRP Consensus等各種コンセンサスアルゴリズムの違いをおさらい

モナコインの取引承認方法であるPoWの脆弱性をつかれ、ブロックチェーンのReorg(取引の巻き戻し)が起きてしまいました。

被害額は1000万円程度だということで、取引所への攻撃(CCの場合500億円以上)と比べると小規模でしたが、今回の攻撃は、ブロックチェーン(というかPoW)の脆弱性を突かれた攻撃であったため、仮想通貨そのものへの懸念が広がり、相場が下落してしまいました。

この事件をきっかけに、モナコインはPoWからPoSへ承認アルゴリズムの変更も示唆しています。

・・・PoWとかPoSってなに??

ということで、モナコインへの攻撃を機会に、この記事では各種コンセンサスアルゴリズムの違いと脆弱性をまとめていきたいと思います。

Sponsored Link

ブロックチェーンってそもそも何?

各種コンセンサスアルゴリズムの説明に移る前に、前提条件としてブロックチェーンの仕組みを知ってないとわからないので、まずはブロックチェーンってなんなのか、おさらいしていきます。

ブロックチェーンとは、一つ一つの取引情報をブロックにまとめ、それをチェーン状につないでいきます。

ブロックには、取引情報、前のブロックが正しいかどうか検証する値(ハッシュ値)、ナンス(ハッシュ値、取引情報と合わせて次のブロックを生成するための値)などが含まれています。

どのようにチェーン状につないでいるのかというと、各ブロックには前のブロックのハッシュ値が含まれており、このハッシュ値が次の新しいブロックを作るために使われ、さらにその次のブロックを生成するためにはひとつ前のブロックのハッシュ値がつかわれ・・・のように繋がっていきます。

次のブロックのハッシュ値を求めるためには、前のブロックのハッシュ値と、採掘したナンスが必要となるため、改竄することが難しいといわれています。

Sponsored Link

PoW(プルーフオブワーク)とは

では今回攻撃の対象となったPoW(プルーフオブワーク)とはどんな方法で取引を承認しているのか、解説します。

プルーフオブワークとは、仕事の対価として報酬を受け取る仕組みです。

ここでいう仕事とは、新しいブロックを生成するためのハッシュ値を作り出せるナンスを計算により導き出すことです。

次のブロックのハッシュ値がターゲット値より低い値になるよう、膨大な計算リソースを使いナンスを導き出します。

ナンス値を導き出したマイナー(ビットコインエコシステムを報酬をもらって維持している人々)には報酬としてビットコインが与えられます。

確率的ファイナリティと承認数

ブロックチェーンはその特性上、チェーンの分岐が起こります。

もし分岐が起こった場合、長い方のチェーンが正しいチェーンとして存続し、短いほうほチェーンに記述された取引情報はなかったことにされます。

そのため、理論的にはいつでも取引がなかったことになってしまうというリスクはありますが、確率的にこのあたりまでブロックチェーンが伸びれば、これ以上長いチェーンが現れることはないだろう。という閾値を各ウォレットで定め、そこまでチェーンが伸びれば完全に取引が終了したとみなしています。

これを確率的ファイナリティと言います。

ビットコインでは6承認(6ブロック)あれば確率的に取引が覆ることはないとしている取引所なり、ウォレットが多いようです。

関連記事

PoWの脆弱性

それでは、PoWの脆弱性にはどんなものがあるのでしょうか。

51%攻撃

まず一つ目は有名な51%攻撃。

これはマイナーがハッシュレート(ビットコイン採掘の計算能力)の51% を占めることにより、二重支払いや取引の取り消し、ある取引の被承認などの不正ができてしまいます。

現実的には一つのマイナーが51%のハッシュレートを占めるのは難しいので起こらないとされていますが、上位4つのマイナーが結託すれば仕掛けることが可能です。

2017年のBTC分裂問題では、場合によってはReorgが起こる可能性がありました。

Block withholding attack

今回モナコインに対し行われた攻撃がBlock withholding attackです。

通常マイナーは新しいブロックを生成できたら、報酬をもらうためにメインチェーンに繋げようとします。

この攻撃ではそれを行わず、ひたすら隠してチェーンを伸ばし、メインチェーンより長くなったタイミングで一気に繋げ、メインチェーンの取引を無効にしてしまうことができます。

たとえば、僕が100万円の商品をモナコインで買ったとします。

販売者に100万円分のモナコインを送り、販売者は6承認たったので、取引は安全に完了したとして、僕に商品を送ります。

実は僕は同時に100万円分のモナコインを自分へ送金する取引情報を、隠していたチェーンに送りつつブロックを掘り進め、メインチェーンより長くなったタイミングで攻撃を行うと、販売者の手元にあったモナコインはなくなり、僕の手元には100万円分のモナコインと、商品が手に入ります。

モナコインではPoWコインである以上避けられない問題だとして、PoSへの移行も視野に入れていく必要があると考えているようです。

Sponsored Link

PoS(プルーフオブステークス)とは

それでは、Block withholding attackが起こらないPoS(プルーフオブステークス)とはどんなものなのかまとめます。

プルーフオブステークスとは、PoWの仕事量の代わりに、ステーク(掛け金)を多く保持しているバリデータ(PoWでいうマイナー)ほど、新しいブロックが承認される確率が上がるという仕組みをとっています。

PoWは新しいブロックを作成するために莫大な計算リソースを使用します。この計算にはASICと呼ばれる専用のチップセットが用いられ、その使用電力があまりにも膨大なため、社会問題になるかもしれません。

PoSでも計算が必要となりますが、PoWと比べると圧倒的に少ないコストでブロックを作ることができ、環境にやさしいコンセンサスアルゴリズムだとされています。

またコインの保有枚数が多いほど、ブロックが承認される確率が上がるという仕組み上、51%攻撃が仕掛けにくいというメリットがあります。

PoSの脆弱性

そんなPoWの弱点を改善したPoSですが、やはり脆弱性があります。

PoSの脆弱性をまとめていきます。

Nothing at Stake問題

Nothing at Stake問題とは、ノーリスクで不正なブロックを生成しようとすることができてしまう問題です。

PoWと比べ、ブロック生成にあまりコストがかからないPoSは簡単にブロックを生成できてしまいます。

電気代も計算に必要なチップセットも必要ないため、攻撃者はローコストで不正なブロックを生成する試みを行うことができます。

またPoWではメインチェーンの後ろにブロックを生成して初めて報酬がもらえるため、チェーンは収束していこうとする力が働きますが、PoSではブロック生成にコストがかからないため、チェーンが分岐した場合、両方のチェーンを伸ばそうとする力が働きます。

なぜなら、2つのチェーンにどんどん新規ブロックをキャストしたほうが、報酬がもらえる確率が上がるからです。

このようなことができるのも、ブロック生成にコストがかからないためです。

富の集中化

PoSではステーク(掛け金)が多いほど、ブロックが承認される確率が高くなるという仕様です。

コインを多く集められるお金持ちが(ブロックが承認される確率が高いので)どんどんお金持ちになり、そこにコインがとどまってしまうという懸念があります。

リップルのコンセンサスアルゴリズム

次にリップルのコンセンサスアルゴリズムを説明していきます。

PoWやPoSではマイナーやバリデータよばれる取引の承認者がいました。

この取引の承認者には、計算能力や掛け金があればだれでもなることができます。

XRP ledgerの承認者(バリデーター)にはリップル社に選出されたものしか(現在は)なることができません。

バリデーターは取引が正常かどうか、多数決で判断します。80%以上の承認が得られた取引のみが、XRP ledgerの台帳に記され、この時点で完全に取引は完了します。(完全なファイナリティが得られます)

PoWやPoSと比べ、非常に速い速度で承認することができるという特徴があります。

マイナーやPoSのバリデータは、報酬を得るためにネットワークを維持しますが、XRP ledgerのバリデーターは、ネットワークを使うことにより恩恵を受ける企業が、その恩恵を維持するためにネットワークを維持するという仕組みをとっているため、報酬は支払われないという特徴もあります。

先ほど(現在は)と書きましたが、バリデーターになるためのプログラムは誰でも動かすことができ、ノードとして稼働できますが、承認されたバリデーターが持っているリストに載っていないノードは承認作業に加わることができません。

現在はリップル社が配ったリストをそのままつかっているバリデーターのみなので、新しいノードはバリデーターとなることができないというわけです。

XRP Consensusの脆弱性

高速でファイナリティがあるXRP Consensusですが、脆弱性もあります。

RippleNetのユーザーはバリデーターは不正をしないという信用をして、システムを使わなければならないという点。

この脆弱性をなくすために、バリデーターの数を増やすとともに、現在ではリップル社が配ったリストに載っているバリデーターしか承認作業ができないため、リップル社が選出したバリデーター以外をリストに加える必要があります。

コンセンサスアルゴリズムまとめ

PoWやPoS、XRP Consensusなど、仮想通貨の取引承認アルゴリズムには様々な方法、脆弱性があることをまとめました。

その取引が何を目的にしているかによって、合っている承認方法の仮想通貨を採用していく流れになるのではないか、と思います。

例えば、銀行業務などはファイナリティが確実じゃないと絶対ダメ(2日後に振り込みがなかったことにされた。なんてあってはいけないのです。)なんで、PoWとかPoS等、Reorgが起こりえる承認方法は採用しにくいわけです。

それぞれの取引に適切に対応した通貨が生き残っていくんじゃないかと考えています。

仮想通貨カテゴリの最新記事