『マスタリング・イーサリアム』の翻訳に参加しました。

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

プロジェクト紹介

前回の記事ではCasperの概要について、PoSの一般的な説明も含めて紹介しました。Casperに関してはまだ未確定な(少なくとも発表はされていない)部分が多く、今後アップデートされる過程で少なくない部分が変更されていくと思います。また今月1日よりメキシコのカンクンでDevcon(Developers Conference)が開催されています。私は最近Vlad氏の「Casperの歴史シリーズ」を読んだこともあって、彼が考案した「Casper the Friendly GHOST: Correct-by-Construction」のプレゼンを聞くのを楽しみにしています。Casperには、これとは別にVitalik考案のPoW/PoSハイブリッド型アルゴリズム「Casper the Friendly Finality Gadget」も開発中で、最終的にどのようなアルゴリズムが採用されるかは現時点では分かっていません。

本記事ではjon choi氏の記事を参考に、Casperの設計原理について簡単に紹介します。説明の簡易化のために、元記事では個別に說明されている原理をまとめて紹介したり、順番を変えたりしています。さらにCasperのみならずビットコイン等の他のプロジェクトにも当てはまりそうなものは省略しています(再生能力による分散型であることの定義など)。

また私自身もEthereumやPoSについて調査している段階ですので、情報の正確性を高める必要のある方は一次ソースを参照することを強くお勧めします。私が参照したソースは全て記事末に記載しています。

Casperの簡潔な説明は前回の記事をご覧下さい。

イーサリアムのPoS「Casper FFG」の概要をまとめてみる
EthereumはSerenityにおいてPoW(プルーフオブワーク)からCasperと呼ばれるPoS(プルーフオブステイク)への移行を計画しています。現在Serenityの一つ前であるMetropolisの前半が完了したところで、Metr...

6つの設計原理

  1. 攻撃コストの最大化
    100万円の損害を与えるための攻撃のコストが1万円であってはならない。攻撃を行うことの経済合理性を減らすことによってセキュリティを確保する。

    PoSではブロックの承認を行うためにETHをステイクしなければならず、そのステイクを没収できる仕組みを作ることで攻撃コストを最大化しています。

    PoWにおけるマイナーのリスクは、将来のリワードを得られないことによる機会損失と電気代、ASIC費用ですが、PoSにおけるバリデーターのリスクはリワードの数百倍から数千倍に及ぶであろうステイクを失うことです。「ネットワークを攻撃するために必要な費用がネットワークのセキュリティの堅牢性を表す」という前提が成立するのであれば、EthereumのPoSモデルは潜在的攻撃者の資金を人質に取り、その資金を没収する権利をプロトコルに埋め込むことで、攻撃コストを高めていると言えそうです。

  2. 公共の費用と便益に対する配慮
    プロトコルによる経済は、パブリックブロックチェーンをスケーリングする過程で公共の費用と便益に対して説明責任を負う。エネルギーコストや環境への影響、富の分配が例である。

    ブロック生成の過程における富の分配はむしろPoWの方が公平だという意見もありますが、Ethereumは規模の経済が成り立たないブロックの生成過程を支持しているのだと思います。

  3. 脱中央集権化
    中央集権化はパブリックチェーンを弱体化させる。規模の経済の成立を防ぐことにより、中央集権化を予防し、よりセキュアなブロックチェーンを作り上げる。

    規模の経済は大量生産により製品1つあたりの生産コストが下がる現象と同じように、より多くのコストを掛けることができるマイナーやバリデーターが有利になることです。

  4. 寡占市場を前提にしたデザイン
    プロトコルは規模の経済等の固有の中央集権化の問題を完全に緩和することはできないため、協力ゲームがゲームの種類となる。これは自己利益追求型のカルテルなどが含まれる。特にプロトコルは、カルテル参加組がカルテル不参加組に不利益をもたらすインセンティブをなくなさなければならない。

    前回の記事では、賄賂を導入したゲーム理論のモデルを紹介しましたが、現実的に暗号通貨の保有残高やマイニングパワーはパレート分布のような分布をしているため、PoSにおいても寡占状態における少数による共謀を予想し、その予防策をプロトコルに組み入れなければなりません。

    Vlad氏はTendermintやゲーム理論との邂逅を経て、「ブロックチェーンアーキテクチャは寡占市場のためのメカニズムデザインである(上手く行けばの話だが…)」と興奮気味にブログに綴っています。
    The History of Casper — Chapter 4 – Vlad Zamfir – Medium

  5. 責任所在の明確化
    可能な限り障害を悪者のせいにできるデザイン。Casperは障害の原因となるようなビザンチン的な行動を罰する機能に依存する。

    Casperは懲罰的デザインを採用しており、これによってNothing at Stake等の問題を解決しようとしています。PoWプロトコルはマイニングパワーを直接操作することはできませんが、PoSプロトコルはバリデーターのステイクを操作することが可能です。それ故に”悪”の定義を効果的且つ厳密に行う必要があります。

    jon choi氏の意図とは異なるかもしれませんが、暗号通貨界における人の行動をプロトコルレベルでコントロールするという発想は、今後より良い世界を作るために非常に重要だと思います。

  6. 検閲意欲の喪失(Disincentivize censorship)
    バリデーターはオフラインになることによる新しい攻撃手法が可能になるというトレードオフであるが、検閲耐性の方がより重大である。

    検閲というのは、例えば一部のマイナーやバリデーターがカルテルを組んだ際に、カルテルに参加していないマイナーやバリデーターを意図的に無視することです。51%の(ステイクを占める)バリデーターが参加するカルテルは、カルテルに参加していないバリデーターを無視することによって、自身のリワードを引き上げることが可能です。

    PoSで検討されているのは、この検閲に対する意欲を喪失させるようなルールをプロトコルに組み込むことです。Vlad氏の言葉を借りれば「カルテルはバリデーターの不在は検閲できない(カルテルはバリデーターが行方不明であるという事実を隠すことはできない)」ので、バリデーターが行方不明になった際=カルテルによって検閲されていると考えられる場合には、カルテルは罰せられなければならないということです。

    以下は2016年12月30日の彼の記事からの引用です。一年近く前の投稿なので、内容は変わっているかもしれません。Jae Kwon氏とEthan Buchman氏にはこのアイディアを否定されたそうです。この部分がどうデザインされるか、今回のDevconで明確になるのではないかと期待しています。

    「もしバリデーターが自身のブロックをチェーンに組み込ませることができなかった場合、そのチェーンに自身のブロックを持っている全てのバリデーターが罰せられる。カルテルによる検閲に対する耐性のコストは、バリデーターは意図的にオフラインになることによってオンラインのバリデーターのステイクを失わせることができるということだ。そうであるならば、検閲されているのか、それとも自身の意図でオフラインになっているのかをプロトコルが区別することはできないので、オフラインになるバリデーターも罰する必要がある。」

PoS/Casperの課題や批判は?

既に多数指摘されています。例えばTuur DemeesterはPoSに対する批判記事を書き、ヴィタリックとの議論に発展しました。また機会があればこちらについても記事にしたいと思います。

Tuur Demeesterとヴィタリックの議論については以下をご覧下さい。

Critique of Buterin’s “A Proof of Stake Design Philosophy”
This statement is misleading, because he is really only talking about what a 51% attacker could…
Response to Buterin’s Criticism of my Proof-of-Stake Piece
There’s a long history of nationalization to prove that after governments (IMO the most likely…


Ethereum Casper 101 – jon choi – Medium
The History of Casper — Chapter 3 – Vlad Zamfir – Medium
The History of Casper — Chapter 4 – Vlad Zamfir – Medium
The History of Casper — Chapter 5 – Vlad Zamfir – Medium
A Proof of Stake Design Philosophy – Vitalik Buterin – Medium