翻訳記事

Ethereum勉強メモ~On Stakeその1

  • このエントリーをはてなブックマークに追加

今年中にもイーサリアムがPoSへ移行すると言われています。
イーサリアムがPoSへ移行することのインパクトは大きいので、
もっとくわしく、PoSについて勉強しています。
英語が苦手な私ですが、日本だと情報が少ないので海外の記事を参考にしています。
そのなかでも参考になったものを備忘録をかねて要点をまとめ行く予定です。
英語が苦手だけど、イーサリアムの仕組みについてくわしく知りたいという
人のためになれば幸いです。
今回は次の記事の途中までまとめてみました。
https://blog.ethereum.org/2014/07/05/stake/

マイニングプールによる中央集権化がはじまっている

この2~3週間でマイニングの中央集権化が重大な問題となってる。
1ヶ月前にビットコイン最大のマイニングプールであるGHASH.ioがビットコインネットワーク全体の40%を越えるハッシュパワーを保持した。
さらに、2週間前に一時的にだが50%を越えた。
理論的にはGHASH.ioがビットコインのネットワークを独占的に制御できたこと意味する。
マイナーはすぐに、このプールを去りハッシュパワーは35%まで下がった。
しかし、この問題は根本的に解決していないのは明らかだろう。
同時に、ASICの生産はさらなる中央集権化を強めると恐れられている。
この問題の解決策の1つはCPUでマイニングをしやすいマイニングアルゴリズムを採用することである。

Proof of Stake

しかし、解決策は1つではない。
もう一つはマイニングを完全に廃止し、
それをコンセンサス得るための新しいモデルに置き換えることである。
2つめの解決方法はProof of Stakeと呼ばれる方法で、
その背後にある直感は次の通りである。
従来のProof of Workは、いくつか取引があったとき、
どの取引を支持するかをマイナーが投票する行為とみなせて、
CPUの演算能力に比例して多くの投票数を得ることができる。
Proof of Stakeにおいてはステークホルダーの投票権はドル(あるいは特定のシステムの内部通貨で)である。
どのように機能するかについての最も簡単なモデルは
“simulated mining rig”と呼ばれているモデルである。
このモデルでは、すべてのアカウントへ毎秒、有効なブロックを生成する機会を与えます。
また、この機会はアカウントの残高に比例して与えられます。
これを実現するためのブロック生成条件の最も簡単な式は次のとおりです。

SHA256(prevhash + address + timestamp) <= 2^256 * balance / diff
  • prevhash:前の取引のハッシュ値
  • address:マイナーのアドレス
  • timestamp:Unix時間
  • balance:マイナーの残高
  • diff:マイニングの難易度

または、balanceを残高の代わりにコイン年齢を重み付けに使う方法もある。
すなわち、保有し続けているコインとその保有期間をかけた値を使う方法である。
これにより、より公平な報酬の分配が保証されますが、結託攻撃の潜在的なリスクを高まる。
この理由から私は元々の保有量に基づくほうを好みます。
以降の議論は保有量に基づくProof of Workに対するものです。
他の解決方法でexcellence,bandwidth,storage,identityなどの"Proof of X"がいくつか提案された。
しかし、どれもコンセンサスアルゴリズムとしての利便性が低く、
どのシステムもProof of Stakeの特徴をそなえている。
本質的にコンセンサスアルゴリズムの多くは通貨分配のメカニズムのために
Proof of Stakeを利用している。
唯一の例外はソーシャルグラフ理論をもとに作られたRippleかもしれないです。
しかし、多くの暗号通貨の支持者は、そのようなシステムは信頼性に依存しすぎていると考えている。
この点については議論の余地がありますが、真の「分散型」を目指すためにはStakeについて議論するのが最善です。

Proof of Stakeのメリットとデメリット

メリット

  1. 膨大な量の電力を無駄にしない。
    たしかに、ステークホルダーはブロックを生成し続ける必要がある。
    しかし、一度に複数のブロック生成を試みることはできないため
    他の無駄のないインターネットプロトコルと同様の電力消費で済む。
  2. 間違いなく、より高いセキュリティレベルを保証している。
    Proof of Workは51%攻撃に必要なコンピューターの計算量の流通市場でのコストが
    ブロックチェーンネットワーク上での2時間分の報酬が同じであることが仮定されている。
    標準的な経済原理にもとづくと、2時間以内に提供されるブロック報酬と取引手数料の総額とほぼ等しい金額です。
    Proof of Stakeでは、この攻撃が成功する閾値が供給量の51%よりも高くなるとされています。
  3. どのアルゴリズムを採用するかによるが、取引処理を高速化できる可能性がある。
    NXTは数秒でブロックを生成する事ができる。
    これはイーサリアムでは1分かかり、ビットコインでは10分かかる処理である。

2番目のメリットについては否定的な意見があることを注意しておく。
大きな組織が51%の通貨を保有し、
その通貨を使ってネットワークを妨害し続ければ通貨価値が大幅に下落する。
その結果、通貨の買いしめが簡単になり攻撃が成功しやすくなります。
これはStakeのメリットを多少弱めるが致命的な欠陥ではない。
なぜなら、PoSにおいて50%の通貨を保有することのできる組織は
PoWにおいても51%攻撃を成功させる可能性が高いからである。

nothing at stake問題

ここまで説明してきたProof of stakeには重大な問題が1つある。
これはビットコインの開発者がnothing at stakeと呼ぶ問題である。
proof-of-workでは、
偶然や故意による二重支払いなどで競合する取引が生成され
ブロックチェーンにフォークがおこった場合、
マイナーはどちらの取引に貢献するか選ばなければならない。
このとき、マイナーは3つの選択肢がある。

  1. マイニングを辞めて、報酬を受け取らない
  2. Aチェーンをマイニングして、チェーンAが勝ったとき報酬を受け取る
  3. Bチェーンをマイニングして、チェーンBが勝ったとき報酬を受け取る

Proof of Workの場合、他の人がやってるのと同様の選択肢を選ぶのが良いです。
ネットワークの少なくとも51%が結託していない状況での
最良の方法は他の人がサポートしているチェーンをサポートすることです。
これは、多くのトランザクションを処理でき報酬が増え、51%攻撃を阻止できる
というインセンティブがあるからである。
他方、Proof of Stakeは、Aに投票するかどうか、そしてBに投票するかどうかの選択肢は独立している。
よって、最適な選択は、発見できた全てのフォーク上でマイニングすることである。
したがって、攻撃者は正当なチェーンでしかマイニングしない利他主義者を越えるだけで攻撃が成功する。
残念ながらこの問題はいくぶん本質的である。
Proof of Workでは、ハッシュ関数による検証はネットワークの外のものを
安全性の支えとして利用している点で(すなわちコンピューターパワーを用いることで)
優れています。
しかしながら、Proof of Stakeではそれ自身を安全性の支えしなけらばならない。
これにより、Proof of Stakeがより軽薄で不安定になることが直感的に分かる。
しかし、この理解は直感的な議論にすぎません。
これはProof of Stakeが安全性がインセンティブと紐づかないという数学的証明ではなく、
事実、この問題を回避するための方法がいくつかあります。

  • このエントリーをはてなブックマークに追加