【比較アルゴリズム論】PoWとPoSの違い -ブロック生成者編-

本シリーズではPoWとPoSの比較を通じて、コンセンサスアルゴリズムについて考察していきたいと思います。本記事では第一弾としてブロック生成を担うマイナーとバリデーターに焦点をあてて二つのコンセンサスアルゴリズムを比較してみます。特に言及がなければ、PoWはビットコインのPoWを、PoSはEthereumのPoS(Casper)を指します。またマイナーとバリデーターのことをまとめてブロック生成者と呼ぶことがあります。私自身コンセンサスアルゴリズムに詳しいわけではないので、誤りを含む可能性があります。

ブロック採掘確率を左右するもの

これについては過去に何度か触れているので詳述はしませんが、PoWはハッシュパワーに応じて、PoSはステイクに応じてブロックを採掘できる確率が決定されます。ハッシュパワーはコンピュータの計算能力、ステイクはステイクしている(リスクに晒している)資産と言い換えることが可能です。本記事はCasperに関する知識を前提にはしていませんが、Casperについて概要を掴みたい方は以下の二つの記事をご覧下さい。

EthereumのPoS「Casper」の概要をまとめてみる

Ethereum PoSアルゴリズム「Casper」6つの設計原理

マイナーは外、バリデーターは内

プロトコルとブロック生成者の位置関係について考えてみます。プロトコルはルールのようなもので、ビットコインにもEthereumにもそれぞれのルールが定まっており、ネットワークに参加するマイナーやノードは全てこのルールに従うことになります。どのようなアルゴリズムを採用するか、発行量をいくらにするか、ブロックサイズをいくらにするか、などはプロトコルによって決定されます。このルールを変更する際にフォークが発生するわけです。フォークには後方互換性の有無によってソフトフォークとハードフォークに分類されます。詳しくは以下をご覧下さい。

【しりとりで学ぶフォーク】ハードフォークとは何なのか?ソフトフォークとは何が違うのか?

PoWのハッシュパワーは独立、コピー不可、移動可能

PoWの場合、プロトコルとマイナーは別物であり、マイナーはプロトコルの外に存在します。これは「ビットコインからのフォークによって生まれたPoWコインは、マイナーのハッシュパワーをも引き連れてフォークすることはできない」ということをイメージして頂ければ理解しやすいかと思います。ビットコインからフォークしたコインが、オリジナルのビットコインと同じだけのハッシュパワーを持てるわけではありません。マイナーのハッシュパワーがどのコインの採掘に割り当てられるかは、マイナーに委ねられており、それはビットコインのプロトコルによって操作することはできません。しかしマイナー側も、ビットコインの採掘に参加する場合は、プロトコルに従う必要があります。

現在SHA256というハッシュ関数を用いたPoWのアルゴリズムを採用するコインの中で有力なものにはビットコインとビットコインキャッシュがあります。ビットコインキャッシュの登場によってマイナーはより収益性の高い方のコインを採掘することができるようになりました。ビットコインキャッシュの採掘難易度が緊急難易度調整機能の発動によって急激に下がった際に、ビットコインキャッシュの収益性がビットコインの収益性を上回ることがあり、その際にはビットコインのハッシュパワーの一部がビットコインキャッシュに流れるわけです。コインの収益性は主に採掘難易度とコインの価格によって決定されます。

ビットコインのマイニングには採掘専用の機器であるASICが必要で、長らくSHA256を採用する有力なコインが存在しなかったため、マイナーにはビットコインを採掘するか、ASICのスイッチを切るかという選択肢しかありませんでした。それ故にビットコインマイナーとビットコインは一枚岩であるかのような印象を受けるかもしれませんが、実際にはマイナーはプロトコルから独立した存在です。プロトコルから独立しているからこそ、ビットコインがハードフォークによって分裂したとしても、どのコインに自身のハッシュパワーを振り分けるかは自分たちで決定できるわけです。マイナーはプロトコルの枠を飛び越えて、類似アルゴリズム圏内(ビットコインASICの場合SHA256圏内)を自由に移動することが出来ます。類似アルゴリズム圏内と表記したのは、EthereumとMoneroのようにアルゴリズムが異なっても同じGPUで採掘できるケースがあるからです。

  • PoWのマイナーはプロトコルの外側に存在する独立した主体である
  • プロトコルはマイナーのハッシュパワーを操作することはできない
  • ハードフォークによってハッシュパワーをコピーすることができない
  • マイナーの生存圏はプロトコルを超越した類似アルゴリズム圏内

PoSのバリデーターはプロトコル内の機能、各プロトコルが設定、流動性は高い

PoSの場合、プロトコルとバリデーターは表裏一体で、バリデーターはプロトコルの内に存在します。これはバリデーターの行動様式をプロトコルが規定することが理論的には可能だということです。バリデーターに対するインセンティブや罰則を適切に設計することにより、バリデーターの行動をある程度プログラムできます。

バリデーターはプロトコル内に限定された機能なので、PoWのハッシュパワーとは異なり、あるPoSコイン内のステイクを、別のPoSコイン内のステイクとして使うことはできません。ただし、ステイクはネットワーク内における通貨や燃料といった換金性の高いものを用いるため、ステイクの流動性は高いといえるでしょう。つまり市場取引を通じて、あるプロトコル内の通貨や燃料を交換することにより、バリデーターは自身のステイクとしての資産の置き場を変更することが可能です。これは流動性の高い取引市場さえ用意されていれば、手数料等によってエネルギー(資産)を摩耗させることなくステイクを変換させることができるということです。

  • PoSのバリデーターはプロトコルの内側に存在する機能である
  • プロトコルはバリデーターのステイクに対する影響力を持つ
  • ハードフォークによってネットワークが分裂した場合でも自前のバリデーターを用意することができるのでプロトコル外が存在に依存する必要がない
  • バリデーターの生存圏はプロトコルの内側に限定されるが、PoSのステイクは換金性が高いためプロトコル間の移動が容易であり流動性は高くなる

PoWとPoSのセキュリティ構造比較

プロトコルとブロック生成者の位置関係の違いによってセキュリティ構造にどのような差異が生まれるのか考えてみます。セキュリティの考え方は様々だと思いますが、ここでは単純にネットワークに対する攻撃コストが高ければ高いほどセキュアであるという基準で統一します。PoWにもPoSにもそれぞれセキュリティ上の課題がありますが、ここではそれらの課題については扱いません。また攻撃を51%アタックに限定して考えています。51%アタックは、ネットワークにおけるブロック生成権の過半数を取得することにより、自身の利益となるようにチェーンを改竄することです。51%アタックにより二重支払いが可能になるためネットワークが使い物にならなくなります。「51%アタックを実行するには、実は51%のハッシュパワーは必要なく、もっと低いハッシュパワーで実行可能である」や「PoSの場合は掌握すべきステイクの率が異なる」などの指摘もここでは触れません。攻撃を行うにはネットワーク内のハッシュパワーやステイクの51%を掌握する必要があると仮定して話を進めます。

PoWのセキュリティは価格を後追いする

PoWにおける攻撃コストは、51%以上のハッシュパワーを何らかの形で得るために必要なASIC代と電気代です。自身でASICを用意するか、すでにASICを所有しているマイナーを買収したり、マイナー同士でカルテルを組んでハッシュパワーを掌握する必要があります。ASIC代や電気代は地域差があるとはいえ時間の推移と共に大きく変わるものではないので、攻撃コストは現行のハッシュパワーの多寡によって決定されます。

ではハッシュパワーはどのようにして決定されるのでしょうか。潜在的マイナーは、マイニングにおける収益が、その潜在的マイナーにとっての機会費用よりも高ければマイニングに参入します。潜在的マイナーにとっての機会費用はそれぞれ異なりますが、収益率は採掘難易度と価格によって決定されます。ここで重要なのは価格です。BTCの価格が上昇することにより、マイニングの収益率が上がり、マイナーの新規参入や既存マイナーの追加投資を促します。

このあたりは反対意見もあるでしょうが、基本的には価格の推移をハッシュパワーが後追いする形になると私は考えています。ハッシュパワーが上がったからといって価格が上がるわけではなく、価格はあくまで相場の気分によって自由に変動し、ハッシュパワーがそれを追うという順序です。

つまり結局は価格が重要だということです。

  • PoWにおける攻撃コストはネットワークに投入されているハッシュパワーによって決定され、ハッシュパワーは市場価格を追う形で推移する

PoSのセキュリティは価格に一致する

ここではCasperを前提にします。冒頭で紹介した過去の記事にも書きましたが、EthereumのPoSには攻撃コストを高めるための仕組みが実装される予定で、プロトコルによって悪質であると判断されたバリデーターはステイクを没収されてしまいます。先述の通り、PoSにおいてはプロトコルがバリデーターのステイクを直接コントロールすることが可能なので、ステイクを奪うことも可能なわけです。PoWでは「マイナーはプロトコルから独立しているが、ネットワークに参加する際にはプロトコルに従い、またマイニングのためのランニングコストを払わなければならない」という制約がある一方、PoSでは「バリデーターはランニングコストを払わずにブロック生成競争に参加することができるが、プロトコル内ではステイクする必要があるため独立ではいられない」という相違点があります。

PoSではネットワーク内の通貨や燃料をステイクとして用いるため、51%以上のブロック採掘率を獲得するためには51%以上のステイクを確保する必要があります。つまり価格そのものが攻撃コストに反映されます。

やはりPoSにおいても価格が重要だということです。価格の攻撃コストに対する影響が直接的か間接的かという違いはありますが、両者とも価格がセキュリティを決定するという共通点があるようです。

  • PoSにおける攻撃コストは、ネットワークにステイクされている通貨や燃料の量とその市場価格によって決定される

ではPoSを採用するプロトコルの通貨や燃料の価格はどう維持され得るのか?

PoWの場合は、収益性の高さが新たなハッシュパワーを呼び込むメカニズムによって、価格が上昇し続けない限り新規に投入されるハッシュパワーの量に反比例してマイナーの利益が逓減していく仕組みになっています。

PoSの場合は、バリデーターはリスクは負っているものの、コストはほとんど掛かりません。故にEtherが止め処なく新規発行される場合には、富の偏在化を止めることが出来ません。故にEtherの新規発行を止める、もしくは極めて低く抑えるというインセンティブがプロトコル側に働くのではないかと私は見ています。

ステイクは流動性が高いため、ブロック報酬が低いプロトコルにはバリデーターが残らない可能性もありますが、新規発行を際限なく行い、大規模バリデーターへの富の偏在化を是正しなければ、そのネットワークに留まる理由が失われ、価格の下落によってセキュリティが脆弱になってしまいます。そしてセキュリティが脆弱であるネットワークの価値は低いので、そのようなネットワークのバリデーターになるインセンティブは、ブロック報酬は低いもののセキュリティはより強固であるネットワークのバリデーターになるインセンティブよりも低いものだと考えられます。

  • セキュリティの観点から価格の維持は重要であり、価格の維持を行うにはバリデーターへの富の集中と価値の希釈を防がなければならない。そしてそのためにはバリデーターへのブロック報酬=新規発行Etherの最小化が必要である

今回は以上です。何かあればTwitterまで。