下記記事をまとめて、やっとイーサリアム 2.0 のコンセンサスアルゴリズムの全貌を見えるようになりました。
- 基本的にはバリデーターたちが委員会を組んで、ブロック提案者が提案した新しいブロックを検証する
- エポック内でチェーンの分岐が起きたら、LMD-GHOST ルールに従ってチェーンを選択する
- エポックとエポックの繋がりで分岐が起きたら、Casper FFG ルールに従ってチェーンを選択する
LMD-GHOST + Casper FFG ということで、イーサリアム 2.0 のコンセンサスアルゴリズムは、Gasper と呼ばれています。
また、上記以外にコンセンサスの為に、他のルールもいくつあるので、合わせて紹介します。
報酬
報酬は、バリデータとしてブロックを提案したり、各投票に正しい投票をしたりの行為によって得られます。
バリデーターの総数と保証金の総金額によって基本報酬を決めてから、各行為によって重みを加算して算出します。
行為と重みについては、下記になります。
合計 64 の中
重み | 行為 |
---|---|
14 | FFG 投票において、正しい「ソース」に投票した |
26 | FFG 投票において、正しい「ターゲット」に投票した |
14 | LMD-GHOST 投票において、正しいブロックヘッダーに投票した |
2 | 委員会に選定された際に、正しく検証作業を行った |
8 | ブロック提案者に選定された際に、正常に新しいブロックを提案した |
- 委員会に選出され正しく投票を行い、ブロック提案者として新しいブロックを提案すると、
64 / 64 * 基本報酬
を貰える - ブロック提案者以外の委員会メンバーは、
(64 - 8) / 64 * 基本報酬
を貰える - 委員会以外のバリデーターは、
(64 - 8 - 2) / 64 * 基本報酬
を貰える
もう一種面白い報酬は、ブロック提案者が 他のバリデータの不正な行為の証拠を提出する
ことで報酬をもらえます。また、スラッシングを含めると スラッシングされるバリデータの有効な残高金 / 512
の報酬をもらえます。
罰則
罰則については、それほど厳しくありません。
- FFG と LMD-GHOST の投票を逃した場合は、単に受け取るはずだった報酬を得られなくなるだけ
- ブロック提案者は提案に失敗しても罰則はない
スラッシング
悪意の行為をしたバリデーターに対して、スラッシング(Slashing)と呼ばれる手段があります。
スラッシングとは、バリデーターをネットワークから強制的に排除しステークされた保証金を失う厳しい罰です。
下記3つの行為は、スラッシングされます。
- 同じスロットに対して、2つ異なるブロックを提案し署名する
- 別のブロックを囲むブロックに署名する(事実上歴史を変える)
- 同じブロックの2つの候補に署名する
1 と 3 は理解しやすいので、2 だけちょっと説明します。
投票は source -> target
というペアで、エポックナンバーを2つ提出します。たとえば、101 -> 102 という投票があるとします。
次にエポックになると、102 -> 103
や、101 -> 103
の投票はスラッシングではないが、100 -> 103
は、101 -> 102
を囲んでいるので、101 と 102 をなくすようになるため、スラッシングの対象になります
まとめ
PoW はシンプルですが、PoS になると、案外に複雑になってきました。