↓もし、良かったらSNSでの紹介よろしくお願いします。

Ethereum勉強メモ~Serenityを理解する(その1)

bootstrap

今年中にもイーサリアムがPoSへ移行すると言われています。
イーサリアムがPoSへ移行することのインパクトは大きいので、
もっとくわしく、PoSについて勉強しています。

英語が苦手な私ですが、日本だと情報が少ないので海外の記事を参考にしています。
そのなかでも参考になったものを備忘録をかねて、まとめています。

「イーサリアムの仕組みについてくわしく知りたい!」

という人のためになれば幸いです。

今回は、Serenityアップデートについて、
イーサリアムの創始者Vitalik Buterinが解説した記事の翻訳です。

Understanding Serenity, Part 2: Casper

Serenityアップデートの目玉はコンセンサスアルゴリズムの変更です。
いままで、PoWベースでしたが、これがCasper(PoW+PoS)へ変更になります。
CasperはPoSをメインに用いて、PoWを補助的に使ったアルゴリズムです。

今回紹介する記事はそのCasperの詳細に関する解説記事になってます。

PoSの簡単な説明

記事の紹介に入る前にPoSの概念を簡単にまとめておきます。
PoSでは、PoWでのマイナーが承認者(Validator)という役割に代わります。
これは、PoSではマイニングが、ブロックを承認する作業に変わるからです。

ブロック承認作業は、ブロックに持っているコインをベットする(賭ける)
ことによって行われます。

承認者は、承認されそうなブロックに、コインをベットします。
そして、ブロックがファイナライズ(承認結果が確定)され、
ベットしたブロックが承認されていた場合、報酬が支払われるという仕組みです。

コインをベットして積んである様子のことStakeと呼びます。
映画のカジノのシーンとかでよく見る光景です。

Proof of StakeのStakeはこれが由来です。

Consensus By Bet (コンセンサス バイ ベット)

Casperの肝となるメカニズムは公共経済学の分野における、根本的に新しい概念の導入です。
その概念はConsensus By Betと呼ばれるものです。

Consensus by betの核となるアイデアは単純です。
そのプロトコルは、承認者(Validator)に、
これからファイナライズされるブロックに対して、
ベットする機会を与えます。

ここでは、ブロックXを取引自体を指すものとします。
ブロックXは取引が認証されるほうにベットした承認者に対してYコインの報酬を与えます。
この報酬は単純に承認者に対して、どこからともなく払われます。
ただし、ブロックXが認証されない方にベットした人に対しては
Zコインのペナルティを与えます。

バリデーターは、Xが認証されることを十分、確信をもってからベットします。
その対価として、バリデーターは報酬を受け取ります。
これは、経済的な再帰性が働いていて興味深いです。

すべては、人々が大事にしている方を認証することです。
すなわち、ユーザークライアントが口座残高やコントラクトを確認したいときに、
見るのは、もっともベットされたブロックです。

したがって、承認者は他の承認者がベットした未来に対して
ベットするインセンティブが発生ます。
その結果、ブロックチェーンが収束するようになっています。

Proof of WorkはConsensus by betと考えられる

理解の助けとして、Proof of Workの例を用いて説明します。
Proof of Workはそれ自体、非常に独自性のあるプロトコルですが、
Consensus by betの一種としてモデル化できます。
この主張は次の通りです。

ブロックの先頭をマイニングするとき、
1秒ごとにEの電力コストがかかります。
そして、1秒ごとにPの確率でブロックを生成できます。

もし、すべてのフォークがあなたの生成したブロックを含む場合、
Rコインの報酬を受け取ります。
異なる場合は、報酬はあたえられません。

したがって、主のチェーンをマイニングしている場合、
毎秒、受け取れる報酬の期待値は(p×R)-Eで、
それ以外をマイニングしている場合、Eを失います。

これは、E:p×R-Eのオッズで、そのチェーンが勝つ方に
ベットしていると解釈できます。

例えば、Pを100万分の1、Rを25BTC≈$1,000、
Eを$0.007とすると、チェーンが勝ち続ける限り、
1秒あたりの利益の期待値は$0.003です。
チェーンが負けた場合は、電力コストにあたる
$0.007を失います。

これは、7:3のオッズでベットしていて、
70%以上の確率で勝てる限り、マイニングし続けます。

Proof of Workでも経済的な再帰性が以上の説明より働きます。
クライアントは、残高を計算するとき、
裏ではもっともベットされたチェーンを参照してます。

Consensus by betはProof of Workを包含するフレームワークみなせます。
さらに、インセンティブが収束するほかのコンセンサスプロトコルへ
適応することができます。

従来のビザンチン障害耐性を持つコンセンサスプロトコルを例にとると、
最終決定の前に行う「事前投票」と「事前決定」という概念があります。
これをConsensus by betに当てはめると参加者は各段階で、
ベットすることができて、後のステージの参加者は
前のステージの参加者の意図を確認し、
大きな確信をもって投票をすることができます。

51%攻撃への対策

Consensus by betは不特定多数者間での合意で正しい行動を促すことにも使えます。
ただし、それは51%攻撃などの特殊な状況を克服出来ている必要があります。

Proof of Stakeの場合、誰かが半分のコインを買い占めたとき、
コミュニティは単に攻撃者の作ったフォークをクライアントが
無視するようなパッチを当てるだけで対策できます。
そして、その攻撃者と、その協力者は全てのコインを失います。

大きな野望としては、そのフォークの選択を自動で行うことです。
もし、これが成功すれば、Consensus by betにこの仕組みが
組み込まれるでしょう。

過去のビザンチン障害耐性の研究によると、
強力なネットワーク同期を仮定すると、
ほとんどのノードが攻撃したとしても、
残りのノードは、依然として合意をとれる
という重要な結果がある。

オッズの決め方

Consensus by betは他のコンセンサスプロトコルと
異なる点があります。

それは、誰がベットを許可し、どのようなオッズを設定するかです。
Proof of Workでは、ベットの要求方法が1つしかありません。
ベットは、自分の所有するブロックがチェーンに含まれいるとき
E:p×R-Eのオッズでベットすることができます。

一般的なConsensus by betでは、
scoring ruleというメカニズムを利用します。
それは、ベットする機会をオッズ例えば、1:1から少しずつ
1.000001:1,1.000002:1,…と大きくして要求する方法です。

ベットの大きくする幅を各段階の成功確率に応じて決めます。
一般的に、このテクニックはブロックが承認される可能性
を承認者から正確に読み取とることで実現します。

もし、90%の確率でブロックが承認されると思った場合、
承認者は9:1以下のオッズでベットし、
それ以上のオッズではベットをしません。

これによって、ブロックが90%以上の確率で承認されることを
読み取ることができます。

実際にRevelation principleにより、
ブロックの承認確率を承認者の意見を元に
確認することが妥当な考え方です。
なので、オッズはバリデータの振る舞いによって決めます。
Consensus by betに一般化する理由はこれによるものです。

Proof of Workは、時間がたつにつれて、
線形的に経済的な重みが増えます。
もし、6つのブロックが承認された場合、
6つを承認しなおす必要があるため
コストがブロック報酬の6倍になります。
これが600だと、600倍のコストがかかることになります。

これをConsensus by betにあてはめると、
経済的な重みは指数的に増加します。
もし、10:1のオッズで承認者がベットした場合、
あなたは、20:1へベットするリスクを負うかもしれません。
そして、ほとんどの人が20:1へベットした場合、
あなたは40:1にベットすることになりコストが増加します。
したがって、ブロックは事実上、ファイナライズされた
状態になるかもしれません。

承認者の自信やブロック報酬によっては、
数分間で、承認者はすべての所持金をステークするでしょう。

ここまでのまとめ:ブロックチェーンはそれ自身の市場予測。

のこりは次回の記事で…

Understanding Serenity, Part 2: Casperは長い記事でここまでの内容で約1/4を解説しました。
ここで一区切りなので今回はここまでです。
残りの部分については、近日、公開予定です。乞うご期待!

続きの記事を公開しました。

https://www.tech-tech.xyz/archives/understanding-serenity2.html