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

プルーフ・オブ・ステーク (PoS) イーサリアムにおけるリオーグのゲーム

Caspar Schwarz-Schillingが、プルーフ・オブ・ステーク (PoS) イーサリアムにおけるブロックのリオーグ攻撃に関する研究を発表し、攻撃ベクトル、防御メカニズム、および導入されているプロトコルレベルの緩和策について解説します。

Date published: 2022年11月29日

このプレゼンテーションでは、プルーフ・オブ・ステーク (PoS) イーサリアムで発生し得るブロックのリオーグの種類と、それを防ぐために設計された緩和策について探ります。イーサリアム財団のRobust Incentives Groupの研究者であるCaspar Schwarz-Schillingが、事後(ex-post)および事前(ex-ante)のリオーグの仕組みを解説し、プルーフ・オブ・ワーク (PoW) とプルーフ・オブ・ステーク (PoS) のセキュリティ状況を比較します。

このトランスクリプトは、リスコンが公開した元のビデオのトランスクリプト (opens in a new tab)のアクセシブルなコピーです。読みやすさのために軽く編集されています。

はじめにと背景 (0:03)

ようこそ。本日は、プルーフ・オブ・ステーク (PoS) イーサリアムで発生し得るリオーグについてお話しします。

私は最近、イーサリアム財団、特にRobust Incentives Groupに加わりました。基本的には、インセンティブに関するあらゆることに焦点を当てた研究チームです。この話は短くしておきます。今回のトークは内容が盛りだくさんですし、私たちの研究のほとんどはGitHubで見つけることができます。

2種類のリオーグ (0:44)

本日はリオーグについてお話ししたいと思います。特に、プルーフ・オブ・ステーク (PoS) イーサリアムの領域で発生し得る2つの異なるタイプのリオーグについて概説します。

一つは事後(ex-post)リオーグ、もう一つは事前(ex-ante)リオーグです。少し気取ったラテン語の名称で申し訳ありませんが、これで意味は通じます。

事後リオーグは、私たちがリオーグについて話すときに通常思い浮かべるようなものです。攻撃者はブロックを見て、それが価値のあるものであれば、リオーグを試みようとするかもしれません。ここの図では、ブロックN+1が攻撃者がリオーグで排除したいブロックであり、同じ親ブロックNの上に構築することで、うまくいけばブロックN+3がブロックN+2の上に構築されます。これは通常通りの流れです。

一方、事前リオーグは少し異なります。攻撃者は、どのブロックをリオーグで排除するかを知る前に攻撃を開始する必要があるという考え方です。大まかにどのように機能するのでしょうか?非常に高いレベルで言えば、ブロックN+1はNの上に構築されますが、すぐには公開されません。誠実なノードはN+1が存在することすら知らないため、Nの上に構築し続けます。その後、何らかのメカニズムを通じてN+1が公開され、N+3はN+1がリードしていると見なしてその上に構築される可能性があり、その結果、N+2が実際にリオーグで排除されます。

なぜこのようなリオーグを行いたいのか疑問に思うかもしれません。そうですね、まだ獲得できるMEVがあるからです。運が良ければ、ブロックN+2には多くのMEVが含まれており、そのブロックの内容を単にコピー&ペーストするだけでそれを獲得できます。最悪の場合でも、基本的には2スロット分のトランザクションを監視することができます。

プルーフ・オブ・ワークにおける事後リオーグ (2:49)

このトークのメイントピックである事前リオーグに入る前に、事後リオーグについて簡単に振り返り、特にプルーフ・オブ・ワーク (PoW) のコンテキストから始めましょう。

基本的には、おなじみのメンバーであるGeorgiosとVitalikによるブログ記事の要約です。ぜひ読んでみてください、素晴らしい内容です。

一言で言えば、プルーフ・オブ・ワーク (PoW) イーサリアムにおいて、事後リオーグは困難ですが不可能ではありません。10%のハッシュレートを持つマイナーは、連続して複数のブロックをマイニングする可能性が比較的あり、インセンティブが十分に高ければ(例えば、獲得できる100 ETH相当のMEVを含むブロックが1つあると考えてください)、1%の成功率でもリオーグを試みる価値があるかもしれません。

プルーフ・オブ・ステークにおける事後リオーグ (3:39)

プルーフ・オブ・ステーク (PoS) では、状況が全く異なります。途方もない量のステークが必要になるという話です。それがどれほど馬鹿げたほど難しいかを強調するために、どのようにそれを行うかについて説明します。

まずは基本から始めましょう。プルーフ・オブ・ステーク (PoS) イーサリアムの時間はスロット単位で進行します。各スロットの長さは12秒です。各スロットには2つの役割があります。プロポーザー(正確に1人のプロポーザー)と、P2Pレイヤーで受信したブロックに対してアテステーションを行うことになっている数千人のアテスターからなるコミッティです。彼らはフォーク選択を実行することでチェーンのヘッドを決定します。これは基本的に、ブロックツリーを入力として受け取り、チェーンのヘッドを出力する関数です。

有効なブロックを受信した場合、またはスロット開始から4秒経過した場合のいずれか早い方で、ブロックに対してアテステーションを行うことになっています。したがって、何らかの理由でブロックN+1のプロポーザーがオフラインであり、スロット開始から4秒経過してもブロックがない場合、ブロックNに対してアテステーションを行います。時間通りに受信した場合は、ブロックN+1に対してアテステーションを行います。シンプルですね。

これらのすべてのアテステーションはブロックに重みを与え、この重みはフォーク選択によって最新のヘッドを決定するために使用されます。

それでは、1ブロックのリオーグについて見ていきましょう。最初はすべて通常通りです。攻撃者を含め、全員がブロックNに対してアテステーションを行います。その後、N+1がNの上に構築されますが、攻撃者はリオーグで排除しようとしているブロックに重みを与えたくないため、代わりにブロックNに対してアテステーションを行います。攻撃者がコミッティの3分の2を占めているため、ブロックNは多くの重みを獲得します。これは、大まかに言って全体のステークの3分の2を制御する必要があることを意味します。

誠実な人々の3分の1がN+1に対してアテステーションを行い、3分の2がNに対して行いました。次にブロックN+2が来ます。当然、攻撃者はそれをNの上に構築し、自身のブロックに対してアテステーションを行います。誠実なバリデータの視点からは、N+1とN+2の両方がブロックNの全体の重みを継承しているため、重みの点ではN+1が依然としてリードしていますが、N+1にはN+2に欠けているこの3分の1のアテステーションもあります。

これを集計すると、ブロックN+1には3分の1プラス3分の1、つまり3分の2に相当するアテステーションがあり、ブロックN+2にも3分の2があります。簡単にするために、同点の場合は攻撃者に有利に働くと仮定しましょう。すると、N+3はN+2がリードしていると見なし、その上に構築されます。

これらの仮定がどれほど馬鹿げているかをお伝えすると、たとえ65%のステークを持つステーカーであったとしても、任意のスロットでコミッティの3分の2を制御できる確率は0.05%です。これは、並行したアテステーションの力が本物であることを示しています。プルーフ・オブ・ステーク (PoS) イーサリアムにおいて、事後リオーグは事実上不可能ではないにしても、信じられないほど困難です。

事前リオーグ攻撃のメカニズム (7:34)

次に、事前リオーグについてお話しします。この攻撃はNeuderらによる論文に基づいています。私たちは最近、この攻撃を大幅に改善しました。また、それに関する論文を執筆し、なんとか間に合うようにarXivにアップロードしました。

また、事前にお伝えしておきますが、心配しないでください。緩和策があります。それらはマージの前にマージ(統合)されます。

事前リオーグ攻撃はどのように機能するのでしょうか?最初はブロックNです。通常通り、全員がそれに対してアテステーションを行います。さて、あなたはN+1のプロポーザーです。あなたはそれを提案し、単一のバリデータでプライベートにアテステーションを行います。重要なのは、それをプライベートに保つことです。公開せず、P2Pレイヤーで伝播させません。

何が起こるかというと、誠実な人々はブロックN+1を見ないため、ブロックNに対してアテステーションを行います。これがトリックです。あなたはその重みを継承し、実際にそれと戦う必要はありません。

とりあえずレイテンシがゼロだと仮定しましょう。スロットN+2において、攻撃者として行うことは、ブロックN+1とプライベートなアテステーションをすべて同時に公開することです。スロットN+2の誠実なバリデータは、ブロックに対してアテステーションを行う必要があります。彼らの視点からは、ブロックN+2と、この1つのプライベートなアテステーションを伴うブロックN+1が見えます。フォーク選択を実行すると、N+1にはN+2にはないプライベートなアテステーションがあるため、ブロックN+1の方がブロックN+2よりも重みが大きいことがわかります。すべての誠実なバリデータでさえ、実際にブロックN+1に対してアテステーションを行います。N+3では、当然のことながら、N+1がチェーンのヘッドと見なされます。

ネットワークレイテンシと攻撃 (10:25)

私はレイテンシがゼロだと仮定しましたが、明らかに実際の仕組みはそうではありません。レイテンシは存在します。P2Pレイヤーでブロックやメッセージを伝播させるには時間がかかります。

攻撃者が依然としてこの種の攻撃を成功させることができる方法は、P2Pトポロジー上のさまざまな場所に多数のノードを配置することです。スロットN+2の誠実なプロポーザーがそのブロックを提案したとき、あなたは伝播プロセスの非常に早い段階でそれを知ることができます。その結果、過半数がブロックN+2について知る前にブロックN+1について知るように、これらすべての異なる場所からプライベートブロックを公開することができます。つまり、彼らはブロックN+1が重みでリードしていると見なし、実際にそれに対してアテステーションを行います。

ここで何が起こっているかを再度強調します。単一のアテスターを持つプロポーザーが、1ブロックのリオーグを成功させているのです。控えめに言っても、理想的ではありません。

より長いリオーグのためのバランシング・ストラテジー (11:42)

もし凝ったことをしたいのであれば、バランシング・ストラテジーを使用してより長いリオーグを成功させることができます。そのアイデアは、誠実なコミッティをチェーンの異なるビューに分割することです。

誠実なノードの約半数がブロックN+2について知る前に、あなたのプライベートブロックとアテステーションについて知るようにプライベートブロックを公開します。そうすることで、彼らはあなたのブロックに対してアテステーションを行います。残りの半数には、N+2に対してアテステーションを行う前にあなたのブロックを知られないようにします。

これで、誠実なコミッティの半数がN+1に対してアテステーションを行い、残りの半数がN+2に対してアテステーションを行うことになります。これがどのように役立つのでしょうか?誠実なコミッティは互いに相殺し合い、攻撃者であるあなたは彼らと戦う必要すらありません。これは基本的に攻撃者の夢が叶ったようなものです。

図に沿って説明します。ブロックNは通常通り、ブロックN+1も同じく公開しません。誠実なバリデータはブロックNに対してアテステーションを行います。ブロックN+2が現れ、あなたはそれを早く知り、誠実なコミッティの半数が前、半数が後に見るように、1つのアテステーション(「キャスティングボート」)を伴うブロックN+1を公開します。半数がN+1に投票し、残りの半数がN+2に投票します。実際には、N+2が1つ多くアテステーションを持つように1票差の分割を望むため、N+3はN+2の上に構築され、リオーグが継続します。

2ブロックのリオーグを終わらせるには、ブロックN+3が提案され、あなたはそれを早く知り、ブロックN+1と残りの2つのアテステーションを公開し、P2Pレイヤーをフラッディングして誠実な人々の過半数がブロックN+1に投票するようにします。これにより、ブロックN+3よりも重みが大きくなり、N+4がN+1の上に構築されます。

考えてみれば、これらの仮定の下でこれらのリオーグを行うのは比較的安価です。完璧な分割ができなくても、P2Pレイヤーが非常に大きいため、攻撃コストがコミッティサイズの平方根に比例して増加するようにターゲットにできる確率分布が存在します。

プロポーザー・ブーストによる緩和策 (15:17)

緩和策について話しましょう。基本的なアイデアは何でしょうか?プロポーザーにもう少し力を与えるということです。有効なブロックが時間通りに到着した場合、そのスロットの期間中、このブロックの重みをブーストしましょう。そのスロットが終了した後、通常のLMD-GHOSTスコアを再開し、通常通りに戻ります。

したがって、ブロックN+2が時間通りに提案され、それが有効である場合、このブロックにはブースト(例えばコミッティサイズの80%)が与えられます。これで、攻撃者からのこの可愛らしい小さなN+1のアテステーションは通用しなくなります。絶対に無理です。

バランシングの手法も機能しなくなります。なぜなら、50/50の分割があっても、ブーストが常にそれを一方向に傾けるからです。その50/50の分割を維持することは不可能です。

この緩和策が導入されることで、攻撃者のアテステーションは、誠実なバリデータを自分たちの好みに合わせて投票させるためにブーストと競合しなければならないという考え方です。これにより、バランシング・ストラテジーが破綻し、基本的にはすべてのリオーグが完全に禁止されます。良いニュースがあります。オープンなPR(プルリクエスト)があるので、基本的にはマージの前にマージ(統合)されます。

重要なポイント (16:48)

いくつかの重要なポイントです。事後リオーグと事前リオーグの違いについてお話ししました。プルーフ・オブ・ワーク (PoW) とプルーフ・オブ・ステーク (PoS) におけるリオーグの異なる状況について簡単に概説しました。事前リオーグを成功させる方法を示しましたが、重要なこととして、それを修正する方法も示しました。

これに興味がある場合は、はるかに詳細でニュアンスに富んだ論文があります。スライドもアップロードされます。興味があれば話しかけてください。Twitterでも見つけることができます。

これが皆さんにとって興味深いものであったことを願っています。どうもありがとうございました。

このページは役に立ちましたか?