イーサリアムにおけるコンセンサスアルゴリズムは何が結局ベストなのか

Megan
Ethereum Tech Lab. | イーサリアム研究所
11 min readAug 26, 2018

Ethereumに関するそれぞれのコンセンサスアルゴリズムの長所と短所からイーサリアムにおけるコンセンサスアルゴリズムはどうあるべきか考えます。

はじめに

ブロックチェーンのマイニングに際して必要となる合意形成の手法として存在するコンセンサスアルゴリズムですが、そのコンセンサスアルゴリズムにはいくつもの種類が存在しています。その代表例がPoW,そのそれぞれの種類についてメリットとデメリットを見ていきながら、イーサリアムにおいてはどのコンセンサスアルゴリズムがベストなのか、考えていきたいと思います。

PoW

PoW(Proof of work)はビットコインおよび当初のイーサリアムに用いられていた仮想通貨の原点とも言えるアルゴリズムです。このPoWは直訳すると「仕事の証明」となりますが、文字通りマイニングに参加するマイナーの仕事についての証明によって正しいブロックチェーンを一つに定めようとするものです。

ハッシュ関数とナンス値

すなわち、マイニングに参加しているマイナーは全員で取引データが格納されたブロックを既存のブロックチェーンに接続する権利をかけて一方向性を持つハッシュ関数の暗号問題を解きます。そして最も早く答えとなるハッシュ関数のナンス値を見つけた人がいた場合、この人がブロードキャストをして全員に答えを共有し、他のマイナーからの承認を得た場合、正しいブロックの追加権利とマイニング報酬を得られる仕組みです。より具体的に言えば、ナンス値とはあるデータXが与えられた時に、Xの結果に付加されるnのハッシュがYより小さい数であるというような数nのことをさし、暗号問題とは、あるハッシュ関数YについてデータXが与えられた時に、Xの結果に付加されるnのハッシュがYより小さい数であるというような数nを見つけることをさします。

メリット・デメリット

このPoWにおいてはチェーンを改ざんするためには常に過半数以上の処理能力を独占する51%攻撃を実行せねばならないことから、現実的な改ざんが不可能であるとされています。一方で現在ビットコインのマイニングを行なっているのは大手マイニングファームに集中しているという現状があり、寡占状態が進んでいます。またハッシュ関数を解くためだけにマシンパワーを消費せねばならないため、Vitalikが懸念しているように、環境にも悪影響を与えるとされています。

PoS

“Stake”による意思決定

イーサリアムは現在このPoSに向けて移行している最中です。PoS(Proof of Stake)では通貨の保有量に応じて報酬が支払われます。PoSにおいてはマイナーのことをバリデーター(Validator)と呼び、このバリデーターが新たなブロックを生成していきます。PoSでは保有量と保有期間に応じた確率で報酬が支払われ、さらに報酬を得た場合保有期間の係数はリセットされる構造です。

51%攻撃への耐性

このPoSにおいては通貨保有量が多いバリデーターほど取引の承認権を得やすくなる仕組みのため、PoWの問題点として懸念されていた51%問題に対してさらに耐性があるとされています。というのも多くの通貨を保有していなければブロックの承認確率をあげられないという性質からPoWに比べさらに攻撃にかかるコストが高い上に、多くのコインを保有した状態で攻撃をもし行えば自分自身が持つ通貨の価値も下がってしまうため、攻撃するインセンティブがありません。さらにPoWとは異なりマシンパワーを用いたマイニングを行わないため、環境への配慮もされています。

通貨流動性の低下

一方でPoSを採用した場合、通貨を保有しているほど報酬が得られて有利な状態になるため、すでに通貨を保有している人にはこれを手放すインセンティブが働きません。すなわち通貨の流通が阻害されてしまうのです。そのために決済機能プラットフォームとして活用したいDappsへの採用は不向きのアルゴリズムであるように思われます。

現在のEthereumにおける開発状況

現在のイーサリアムにおいてはPoWとPoSの混合型アルゴリズムを経て純粋なPoSに移行するものとされていますが、実はイーサリアムが移行を予定するコンセンサスアルゴリズムには2種類存在します。

一つはイーサリアム生みの親であるVitalik Buterinが発案したCasper the Friendly Finality Gadget(CFFG)、もう一つがイーサリアム開発者のひとりであるVlad Zamfirが発案したCasper the Friendly Ghost(CTFG)です。

両者はフォークする際のチェーンにおいてどのチェーンをメインに定めるかという点において異なっており、CFFGはファイナリティとビザンチン将軍問題の耐性の双方に基づいて合意形成を取ろうとするものであるのに対して、CTFGではPoWイーサリアムで使用されているGHOSTプロトコルをPoSに活用することを目指しています。どちらのアルゴリズムが採用されるか、また採用されたアルゴリズムについていつ移行するか等は確定していません。

DPoS

委任システムの採用

DPoS(Delegated Proof of Stake)はPoSのアレンジ版とも言えるアルゴリズムです。PoSのなかにさらにDelegated=委任する仕組みを取り入れたアルゴリズムになっています。

すなわち通貨を保有している人の中から、さらに取引を承認する人を投票により選出、彼らに委任します。そして選出された人は他の通貨保有者を代理して取引の承認行為を行い、得られた報酬を投票した人に配分する仕組みです

取引速度と分散性

DPoSは承認者を事前に限定することで取引承認に必要な承認数を減らしているため、取引速度を向上させることができます。またブロック生成時間が数十秒と短いためチェーンのフォークもほとんど発生せず、発生したとしてもすぐに修正することが可能です。

もっとも、もし通貨を保有している人が少数に集中し通貨の寡占状態が進んだ場合には、独裁的なブロック生成行為を行うマイナーを選出できてしまうため、不正行為を起こすことができないわけではありません。Vitalikはこの問題について「投票に際して収賄し、カルテルを作るインセンティブがある」として批判しています。何より承認者が限定されていることは分散性にやや欠けており、分散性が重要視される価値の保存を行うベースレイヤーやWeb3アプリケーションの所有権を記録するには不向きでしょう。一方で分散性よりも高いスループットが要求されるSNSやゲームには分散性を犠牲にして高スループットを実現するDPoSは有用であるように思われます。

PoA

Authorityを賭ける

PoA(Proof of Authority)とは直訳すると「権威の証明」となり、その名の通り信頼された参加者のみがブロック生成の権利を持つコンセンサスアルゴリズムです。いわばPoAはPoWおよびPoSの両者のメリットをいいとこ取りしたシステムと言えます。

PoAでは、バリデーターはトランザクションの検証の際に自身のアイデンティティを賭けています。この「アイデンティティを賭ける」とはブロックを生成する権限を得る対価として自分の身元を自発的に明かすということです。自身の身元を自ら公開させることでバリデーターが不正を働こうとするインセンティブを無くそうとしています

Stakeの公開

従来PoSでは、各バリデーターが自身の保有する通貨の一部をStakeとしてデポジットし、このデポジット量が多いほどブロックの生成難易度が下がり、結果としてブロックの生成が容易になる仕組みでした。ただ自身の総通貨保有量に対するデポジットされたStakeの割合を無視し、デポジットの絶対量でブロックの生成難易度を決定しようとしていたことからPoSの報酬インセンティブが適切に機能しない環境においては脆弱なコンセンサスアルゴリズムであるとされていました。

しかしPoAにおいてはAuthorityは自身の持分を公開するためこの問題が解決されます。そして権限者間でのコンセンサスが取りやすい分ファイナリティが早く得られ、チェーンの分岐も避けられます。同時にPoWとは異なり、CPUやGPUに依存したアルゴリズムではないため、ネットワークを維持するためのコストも安く抑えることができます。

一方でPoAは分散性を著しく落としたコンセンサスアルゴリズムと言えます。特定のAuthorityに権限が集中するため、仮に彼らが不正を働かなかったとしても、ブロックの生成権限を限定することになるため、かなり中央集権的な意思決定を行うことになってしまいます。

諸コンセンサスアルゴリズムの是非

考慮されるべきトレードオフの関係

ここまでそれぞれのコンセンサスアルゴリズムについて、長所と短所をそれぞれ見てきました。では結局どれがイーサリアムに適しているのかを考えていきたいのですが、その際にはそもそもブロックチェーンのコンセンサスアルゴリズムは「分散性」「スケーラビリティ」「セキュリティ」がトレードオフの関係にあることを考慮せねばなりません。その上で通貨の性質が決済を目的としているのか等の条件を加味して適切なアルゴリズムを決定しなければなりません。

その点でいうと、イーサリアムはワールドコンピュータとしてプラットフォーム機能を拡張していくことを目的としています。そしてイーサリアムの上でICOやDappsといったアプリケーションを動作させることを想定しているのですから、いかに早く合意形成をしチェーンを生成し、処理を高めるかがイーサリアムが現実世界で実装されるかを左右すると言えます。個人的にはチェーンの分岐可能性が低くかつ素早くチェーン生成が行えるDPoSとPoAが適しているように思われますが、分散性を欠いているのでイーサリアムのようなワールドコンピュータには不適切だという批判もあるでしょう。結局のところ重要なのは、自身が追求するアプリケーションがデジタルゴールドのように分散性を重視するものか、ゲームやソーシャルネットワーキングのような高スループットを必要とするものなのかといった適正を見極め、それに適したアルゴリズムを採用することであるように思われます。

EthereumTech Lab.はイーサリアムのモバイルウォレットを開発している”Wei Wallet Team”(*https://github.com/popshootjapan/WeiWallet-iOS) が中心となり、活動を行っています。そのため、オフラインでのイベント/ミートアップ実施の機会も多く開催していく予定です。

ご興味のある方は、こちら

EthereumTech Lab | イーサリアム研究所

今後の記事更新のお知らせ・イベント情報・最新ニュースはFacebookグループへの参加がおすすめです。

CryptoAgeでは #ブロックチェーン世代 から大きなうねりを創り出すことを目的に、こういった情報発信/リサーチをはじめ、世界トップレベルのブロックチェーンプロジェクトのファウンダーや開発者を招いたミートアップもすでに多数開催しています。

一緒にリサーチなど行う仲間を常に募集しているので、興味のある方はこちら

CryptoAge

公式サイト
Facbeookグループ

今後の記事更新のお知らせ・イベント情報・最新ニュースはFacbeookグループへの参加、Twitterフォローがおすすめです。

--

--