メインコンテンツへスキップ
Change page

Gasper

Gasperは、Casper the Friendly Finality Gadget(キャスパー・FFG)とLMD-GHOSTフォーク選択アルゴリズムを組み合わせたものです。これらのコンポーネントが連携して、プルーフ・オブ・ステーク (PoS) 版イーサリアムを保護するコンセンサス・メカニズムを形成します。Casperは、特定のブロックを「ファイナライズ済み」にアップグレードするメカニズムであり、ネットワークへの新規参加者が正規のチェーンを同期していると確信できるようにします。フォーク選択アルゴリズムは、蓄積された投票を使用して、ブロックチェーンでフォークが発生した際にノードが正しいものを簡単に選択できるようにします。

注: キャスパー・FFGの元の定義は、Gasperに組み込まれる際にわずかに更新されました。このページでは、更新されたバージョンについて考察します。

前提条件

この資料を理解するには、プルーフ・オブ・ステーク (PoS)の入門ページを読む必要があります。

Gasperの役割

Gasperは、ノードがセキュリティのデポジットとしてイーサを提供し、ブロックの提案や検証において怠惰であったり不正を働いたりした場合にそのイーサが破棄される可能性がある、プルーフ・オブ・ステークのブロックチェーン上で機能します。Gasperは、バリデータがどのように報酬や罰則を受け、どのブロックを承認または拒否し、ブロックチェーンのどのフォーク上に構築するかを決定するメカニズムです。

ファイナリティとは何か?

ファイナリティとは、特定のブロックが持つ特性であり、重大なコンセンサスの失敗が発生し、攻撃者がステークされた総イーサの少なくとも3分の1を破棄しない限り、そのブロックを元に戻すことができないことを意味します。ファイナライズ済みのブロックは、ブロックチェーンが確信を持っている情報と考えることができます。ブロックがファイナライズ済みになるには、2段階のアップグレード手順を経る必要があります。

  1. ステークされた総イーサの3分の2が、そのブロックを正規のチェーンに含めることに賛成の投票を行う必要があります。この条件により、ブロックは「ジャスティファイド」にアップグレードされます。ジャスティファイドなブロックが元に戻される可能性は低いですが、特定の条件下では起こり得ます。
  2. ジャスティファイドなブロックの上に別のブロックがジャスティファイドになると、元のブロックは「ファイナライズ済み」にアップグレードされます。ブロックをファイナライズすることは、そのブロックを正規のチェーンに含めるというコミットメントです。攻撃者が数百万イーサ(数十億米ドル)を破棄しない限り、元に戻すことはできません。

これらのブロックのアップグレードは、すべてのスロットで行われるわけではありません。代わりに、エポックの境界にあるブロックのみがジャスティファイドおよびファイナライズ済みになります。これらのブロックは「チェックポイント」と呼ばれます。アップグレードでは、チェックポイントのペアが考慮されます。古いチェックポイントをファイナライズ済みに、新しいブロックをジャスティファイドにアップグレードするには、連続する2つのチェックポイント間に「スーパーマジョリティ・リンク」が存在する必要があります(つまり、ステークされた総イーサの3分の2が、チェックポイントBはチェックポイントAの正しい子孫であると投票すること)。

ファイナリティには、ブロックが正規のものであるという3分の2の合意が必要であるため、攻撃者は以下の条件なしに代替のファイナライズ済みチェーンを作成することはできません。

  1. ステークされた総イーサの3分の2を所有または操作する。
  2. ステークされた総イーサの少なくとも3分の1を破棄する。

最初の条件は、チェーンをファイナライズするためにステークされたイーサの3分の2が必要であるために生じます。2番目の条件は、総ステークの3分の2が両方のフォークに賛成票を投じた場合、3分の1は両方に投票したことになるために生じます。二重投票は最大限に罰せられるスラッシングの条件であり、総ステークの3分の1が破棄されることになります。2022年5月現在、これには攻撃者が約100億ドル相当のイーサをバーンする必要があります。Gasperでブロックをジャスティファイドおよびファイナライズ済みするアルゴリズムは、Casper the Friendly Finality Gadget(キャスパー・FFG) (opens in a new tab)をわずかに変更したものです。

インセンティブとスラッシング

バリデータは、ブロックを誠実に提案および検証することで報酬を得ます。イーサが報酬として与えられ、ステークに追加されます。一方、不在で呼び出されたときに行動を起こさないバリデータは、これらの報酬を逃し、既存のステークのわずかな部分を失うこともあります。ただし、オフラインであることに対するペナルティは小さく、ほとんどの場合、報酬を逃すという機会費用にとどまります。しかし、同じスロットに対して複数のブロックを提案する、同じスロットの複数のブロックに証明を行う、または以前のチェックポイントの投票と矛盾するなど、バリデータの行動の中には誤って行うことが非常に難しく、何らかの悪意のあるインテントを示すものがあります。これらはより厳しく罰せられる「スラッシング対象」の行動であり、スラッシングによりバリデータのステークの一部が破棄され、バリデータはバリデータのネットワークから排除されます。このプロセスには36日かかります。1日目には、最大1 ETHの初期ペナルティが科せられます。その後、スラッシングされたバリデータのイーサはエグジット期間を通じてゆっくりと失われていきますが、18日目には「相関ペナルティ」を受けます。これは、同時期にスラッシングされるバリデータが多いほど大きくなります。最大のペナルティはステーク全体です。これらの報酬とペナルティは、誠実なバリデータにインセンティブを与え、ネットワークへの攻撃を抑止するように設計されています。

インアクティビティ・リーク

セキュリティに加えて、Gasperは「もっともらしいライブネス (plausible liveness)」も提供します。これは、ステークされた総イーサの3分の2が誠実に投票し、プロトコルに従っている限り、他のアクティビティ(攻撃、レイテンシの問題、スラッシングなど)に関係なく、チェーンがファイナライズできるという条件です。別の言い方をすれば、チェーンのファイナライズを防ぐには、ステークされた総イーサの3分の1が何らかの形で侵害される必要があります。Gasperには、ライブネスの失敗に対する追加の防衛線があり、「インアクティビティ・リーク」として知られています。このメカニズムは、チェーンが4エポックを超えてファイナライズに失敗した場合にアクティブになります。マジョリティのチェーンに積極的に証明を行っていないバリデータは、マジョリティが総ステークの3分の2を回復するまでステークが徐々に失われ、ライブネスの失敗が一時的なものにとどまることを保証します。

フォーク選択

キャスパー・FFGの元の定義には、follow the chain containing the justified checkpoint that has the greatest height というルールを課すフォーク選択アルゴリズムが含まれていました。ここで、高さ(height)はジェネシス・ブロックからの最大距離として定義されます。Gasperでは、元のフォーク選択ルールは非推奨となり、LMD-GHOSTと呼ばれるより洗練されたアルゴリズムが採用されています。通常の条件下では、フォーク選択ルールは不要であることを理解することが重要です。すべてのスロットには単一のブロック・プロポーザーが存在し、誠実なバリデータがそれを証明します。フォーク選択アルゴリズムが必要になるのは、ネットワークの非同期性が大きい場合や、不正なブロック・プロポーザーが二重提案(equivocation)を行った場合のみです。しかし、そのようなケースが発生した場合、フォーク選択アルゴリズムは正しいチェーンを保護する重要な防衛手段となります。

LMD-GHOSTは「latest message-driven greedy heaviest observed sub-tree(最新メッセージ駆動の貪欲な最も重い観測部分木)」の略です。これは専門用語を多用した定義ですが、要するに、証明の累積された重みが最も大きいフォークを正規のものとして選択し(greedy heaviest subtree)、バリデータから複数のメッセージを受信した場合は最新のもののみを考慮する(latest-message driven)アルゴリズムです。最も重いブロックを正規のチェーンに追加する前に、すべてのバリデータはこのルールを使用して各ブロックを評価します。

参考文献