研究: イーサリアム 2.0 のステートプロバイダーモデル
編集者注: この記事は以下から引用しましたイーサリアム愛好家 (ID: ethfans)編集者注: この記事は以下から引用しました
イーサリアム愛好家 (ID: ethfans)
導入
、著者: adietrichs、翻訳と校正: Pei Qi & A Jian、Odaily が許可を得て転載。
この記事は、villanuevawill と Quilt チームの多大な協力を得て、samwilsn と adietrichs との共著です。
導入
イーサリアム 2.0 のステートレス性は、トランザクションがアクセスしたい状態を保持する必要があることを意味します。より正確には、ブロック提案者 (BP) の場合、ブロックにはトランザクションを含むことに加えて、すべての状態と、すべてのトランザクションによってアクセスされる対応する監視情報も含まれる必要があります。トランザクションを作成するユーザーも BP も状態データを保存しないと仮定すると、ネットワークにはこれらの状態を保存して提供するために別のグループが必要になります。この役割は、ステータス プロバイダー (SP) と呼ばれることがよくあります。
ブロック提案者と状態プロバイダーが状態を交換する方法に関係なく、ユーザーはトランザクションを作成する前に状態を取得する必要がある場合があります。たとえば、契約のバイトコードを取得したり、ガス料金を見積もったり、アカウントの残高を確認したりできます。これは、状態プロバイダーがユーザーに対してプル型のインターフェイスを公開する必要があることを意味します。インセンティブ層はありませんが、無私の状態プロバイダーに依存するだけで、ユーザーに状態を提供することもできます (イーサリアム 1.0 がこれを行います)。支払いは状態チャネルを通じて実装することもでき、状態プロバイダーにインセンティブ層を追加します。
比較基準
状態アクセス制限
トランザクションの実行は実行時の状態に基づいて行われるため、基礎となる状態が変化すると、トランザクションの実行も変化します。特に、一部のトランザクションでは、状態アクセスの場所が変更される場合があります。これは、単純なジャンプ ステートメント (if など)、または訪問した場所が実行時に計算されることが原因である可能性があります。両方のケースをダイナミック ステート アクセス (DSA) と呼びます。ステートレス モードでは、これによりトランザクション作成プロセスが複雑になります。問題は、これらのトランザクションに事前に状態を提供できない可能性があることです (これらのトランザクションがどのグローバル状態にアクセスするかが事前にわからないため)。状態プロバイダーのパターンが異なれば、これらのトランザクションをサポートする範囲に応じて動作も異なります。
モードが動的状態へのアクセスを制限している場合、Eth1 は Eth2 実行環境 (EE) になれなくなる可能性が高く、多くの場合、特別な処理が必要になります。
副題
州プロバイダーの報酬は、次の 2 つの側面で比較されます。
補償金は誰が支払い、どのように計算されますか?
利他的な国家プロバイダーは最初からサポートされていますか? サポートされている場合、後でインセンティブを追加できますか?
副題
集中化のリスク
集中化のリスクはモデルごとに異なります。
誰がどの程度まで取引をレビューできるのでしょうか?
ブロック提案者と状態プロデューサーの間でどのレベルの相互信頼を達成する必要がありますか?時間の制約
ブロックプロデューサーがブロックをブロードキャストする時間は固定されています。そこで、その制限時間内でさまざまなモードがどのように実行されるかを具体的に検討します。
副題
Eth1 では、特定のトランザクションの署名検証と残高およびノンス チェックが完了すると、マイナーはトランザクションを含めるために報酬が支払われることを確信できます。 Eth2 では、ブロック提案者が報酬を受け取ることができるかどうかは、失われた状態が起因する過失であるかどうかによって決まります。そうであれば、たとえ状態損失によりトランザクションが失敗したとしても、ブロック提案者は依然として支払いを受けることができます。それ以外の場合、ロストステート トランザクション自体はアンパック可能ですが、ブロック プロポーザーはすべての (通常は長い) トランザクションが実行されるまでそれを検出できない可能性があります。 (翻訳者注: ここでの支払いは、ブロック提案者がパッケージ化されたトランザクションでトランザクション手数料を請求する必要があることを意味します。原因不明のエラーの場合、ブロック提案者はトランザクションをパッケージ化するためにコストを費やしますが、トランザクションをパッケージ化することはできません。取引手数料)

ブロック プロポーザーがエラーを見つけるためにトランザクションを実行する必要があるが、これらのトランザクションがパッケージ化されていない (つまり、トランザクション料金を支払えない) 場合、ブロック プロポーザーはコストがほぼゼロでサービス拒否攻撃に対して脆弱になります。
モデル
副題
ダイレクトプッシュモデル
状態アクセス制限
励起
トランザクションを作成するユーザーは、基本的にトランザクションの唯一の状態プロバイダーになります。一般的に言えば、将来的にトランザクションがオンチェーンになったときに、ユーザーが提供するステータスがすべてのアクセス ニーズを満たせることを保証する方法はありません。したがって、ダイレクト プッシュ モードでは、予測可能な状態アクセスを持つトランザクションのみを実行できます。トランザクションには静的状態を使用してのみアクセスできるため、コントラクトの作成者は、予測可能な状態アクセスができるようにコントラクトを設計する必要もあります。アクセス リストなどの注釈を使用して、実行時にコントラクトがアクセスできる場所を詳細に指定できます。このアプローチと、動的状態アクセスを回避するパターン (Eth1.x に関する Vitalik による関連ブログ投稿を参照) を組み合わせると、十分な機能を提供する新しいパターンが得られます。
ただし、これは現在の Eth1 システムとは大きく異なります。 Eth1 を Eth2 に変換する計画が台無しになる可能性があります。
励起
このパターンは、一般的な状態プロバイダー ネットワークのみに依存します。前述の通り、インセンティブ制度なしでも可能と思われる。
インセンティブ システムは、支払いチャネルを通じて追加することもできます。各ユーザーが 1 つ以上の州プロバイダーとの支払いチャネルを確立する必要があることを考えると、このアプローチは特に複雑になるはずです。
集中化のリスク
ユーザーは複数のクエリを複数の州プロバイダーに送信できるため、単一の州プロバイダーがトランザクションを検閲することはできません。
状態プロバイダーは状態の一部のみを保持できるため、必要に応じてハードウェア要件を軽減できます。
金銭的インセンティブは一部の州プロバイダーの集中化を促す可能性があるため、ユーザーが支払いチャネルを通じて州を購入する場合、相手を信頼する必要があります。
時間の制約
時間の制約はありません。
喪失状態の帰属性
キーポイント
主な利点: シンプルさ。特別なステータスプロバイダーやインセンティブシステムは必要ありません。特に時間の制約はありません。
主な欠点: すべての状態アクセスのニーズが事前にわかっているトランザクションにのみ適しています。これにより、システム全体の機能が制限されます。互換性の問題は解決できませんが、いくつかの緩和策は利用可能です。特に、このモデルでは、Eth1 が Eth2 の動作環境になることはできません。
副題
リレープッシュモデル
したがって、トランザクション パッケージ プール内のトランザクション パッケージが使用できないことが判明した場合でも、システムは引き続き実行できます。中継器はトランザクション パケットの存在を通知するだけです。ブロック提案者は中継者に直接連絡し、トランザクション パッケージを取得して新しいブロックに含めます。
励起
状態アクセス制限
制限なし。リレーラーがスロット (スロット) ごとに状態をトランザクション パッケージにプッシュして、状態アクセスのニーズが確実に満たされる限り、問題はありません。さらに、各新しいブロックにはデータ パケットが 1 つだけ含まれるため、トランザクション パケット間の干渉が防止されます。
励起
中継者向けのインセンティブ メカニズムの設計は、実際には非常に複雑です。状態および証人の情報が公開されると、ユーザーや BP は証人を回避してトランザクション パッケージを自分で再作成する機会が与えられるからです。
考えられる解決策は 2 つあります。
トランザクション プールがない場合、トランザクション パッケージはパブリックではありません。中継者は、状態付きトランザクションパッケージをブロック提案者に販売(手数料はトランザクション手数料より若干安い)し、トランザクションパッケージ市場を形成する。ブロック提案者にはいくつかのリスクがあります: トランザクションが別のブロックに含まれているために無効なトランザクションになっている可能性がある、または受け取ったトランザクション手数料が販売時に中継者が発表したものよりも少ないなどです。
あるいは、トランザクション プールの有無にかかわらず、トランザクションには特定の中継者への支払いを含めることができます。ユーザーは、ユーザーによって他のトランザクションが作成されない独占期間 (つまり、いくつかのタイムスロット) をコミットします。独占期間中にユーザーが同時に 2 つ以上のトランザクションに署名すると、ペナルティが課せられます。これを行うには、EE はユーザーを「斬る」方法を提供する必要があります。しかし、ユーザーは預金をロックしていないため、十分なアカウント残高がないユーザーにどのように罰金を科すかは明確ではありません。
集中化のリスク
集中化のリスクは、どの中継者のインセンティブが使用されるかによって異なります。
トランザクション バンドルのマージが (動的な状態アクセスのため) 複雑であることを考慮すると、トランザクション バンドル マーケットプレイスは高度な集中化につながり、個々の中継者がトランザクションをレビューできるようになります。上記のリストによって BP が被る可能性のあるリスクのため、BP はよく知られた信頼できる中継者と協力することを好みます。これらの有名な中継者と比較すると、個人ユーザーは十分に高い取引手数料の取引パッケージを提供することができません。
排他期間とトランザクション プールを使用すると、高度な分散化が実現しますが、ユーザーの利便性が犠牲になり、トランザクション プールの実装がより複雑になります。理論的には、どのユーザーもトランザクション プールからトランザクション パッケージを取得し、独自のトランザクションを追加してトランザクション パッケージを拡張し、より高いトランザクション手数料をかけてトランザクション パッケージを中継することができます。
時間の制約
すべての種類のトランザクションをサポートするには、ブロックに含まれるトランザクション パッケージに最新の状態が含まれている必要があります。リレーラーは前のブロックをダウンロードし、トランザクション パッケージに対応する更新を作成してブロック プロポーザーに送信する必要があります。ブロック プロポーザーは更新されたトランザクション パッケージを新しいブロックに含めます。これらのアクションはすべて、スロット時間内に完了する必要があります。 。
喪失状態の帰属性
状態損失は中継者に起因する可能性があります。ブロック提案者は、中継者 (または中継者が自主的に選択) に「返金トランザクション」をトランザクションに添付するよう依頼できます。これは、トランザクションが状態損失により失敗した場合にブロック提案者に返金するために使用されます。
キーポイント
主な利点: 州のアクセス制限がない。
欠点:
トランザクション プールがないとトランザクション パッケージを結合できないため、ブロックには単一のリレーラーによって提案されたトランザクション パッケージのみを含めることができます。中継者は検閲を集中化して導入することができます。
トランザクション プールを使用する場合でも、トランザクション バンドルの組み合わせが検閲の問題を完全に軽減するのに十分であるかどうかは不明です。
インセンティブ制度は複雑です。
副題
プルモデル (プルモデル)
ユーザーはトランザクションをネットワークに送信し、ノードは保留中のトランザクションのプールを維持します。ブロックを作成する前に、ブロック プロポーザーはトランザクション プールから保留中のトランザクションをいくつか選択し、トランザクション パッケージを形成してステータス プロバイダーに送信して、トランザクション パッケージのステータスを要求します。ステータスを受信した後、ブロック プロバイダーはトランザクション パッケージを新しいブロックにパックします。
状態プロバイダーがすべての状態を提供する前に、中間ノードとブロック提案者がトランザクションの正当性を検証するために、ユーザーは署名と料金支払い能力を検証するために必要な証人メッセージをトランザクションに添付する必要があります。したがって、この部分はさまざまな実行環境 (EE) 間で標準化する必要があり、すべての EE は最も単純な検証機能のオプションを提供する必要があります。
あるいは、Value-Holding EE (VHEE) を使用することもできます。すべてのトランザクションはこの VHEE を使用して手数料を支払います。ネットワーク内のノードは VHEE を理解するため、トランザクションの有効性を検証できます。
どちらの場合も、ネットワーク内のノードは、新しいブロックが到着したときに接続状態の監視情報を更新する必要があります。
状態アクセス制限
励起
一次取引には制限はありません。ブロック プロポーザーは、ブロックの作成時に状態プロバイダーにのみ連絡して、返された状態が最新であることを確認します。さらに重要なのは、トランザクションをバンドルし、トランザクション バンドルの単位で状態を要求することにより、状態が正確なコンテキストに関連付けられることです。このアプローチにより、提供された状態が常に十分であることが保証されます。これには、ダイレクト プッシュ モードとの重要な違いが含まれており、ダイレクト プッシュ モードでは、トランザクションがバンドルされる前に状態が追加されるため、状態へのアクセスが制限されます。
ユーザーは署名を検証している状態と料金を支払う能力を含める必要があるため、技術的には、トランザクション部分の制限はダイレクト プッシュ モデルに記載されているものと同じです。ただし、これらの制限は実際には重要ではありません。 Eth1 では、署名検証と料金支払いは予測可能な状態アクセスであるため、Eth1 と Eth2 の間の互換性は崩れません。また、VHEE の場合、その設計により予測可能な状態アクセスが確保され、さらなる制限が不要になります。
励起
ブロック提案者は、支払いチャネルまたはその他の手段を通じて、状態プロバイダーによって提供された状態に対して支払いを行うことができます。 BPと取引先SPの信頼度に応じて、取引数に応じて(これが信頼の最小化です)、または取引パッケージに応じて(これがより効率的です)、手数料を支払うことができます
集中化のリスク
状態プロバイダーはすべての状態を保存する必要があり、ストレージ要件が非常に大きくなります。状態プロバイダーはトランザクション パッケージを迅速に実行することも期待されているため、計算能力が必要です。
ブロック提案者は、信頼できる状態プロバイダー グループから状態を取得する傾向が高く、悪意のある損害のリスクが軽減され、それによって集中化の度合いが高まります。
ただし、トランザクション パッケージの作成と順序付けを担当するのはブロック提案者であるため、単一の状態プロバイダーはトランザクションを検閲することはできません。状態プロバイダーが特定のトランザクション パッケージに必要な状態を隠すことは可能ですが、そうすると評判が傷つき、ブロック提案者は別の状態プロバイダーで簡単に再試行する可能性があります。
時間の制約
ブロック提案者は、タイムスロット内にアップロードされるトランザクション パッケージに必要な状態を TA に提供できる状態プロバイダーに連絡する必要があります。
喪失状態の帰属性
状態プロバイダーは、常に、それが提供する状態に対して責任を負います。ブロック提案者は、状態が不十分なトランザクションをブロックに詰め込むことはできず、状態が十分であることを確認した後にのみ支払いを行います。
キーポイント
アドバンテージ:
関連する状態アクセス制限はありません。
時間的制約の問題が少なくなります。
重大な集中化のリスクはありません。特定の状態プロバイダーがブロック提案者専用に状態を提供することが予想されますが、単一の状態プロバイダーがプロセス全体に大きく干渉することはできません。状態プロバイダーが行うことのできる最悪のことは、要求されたときに状態を提供しないことです。
主な欠点: 検証スクリプトまたは VHEE を使用して、署名検証に関して一部の標準化を行う必要があります。
延長された議論
自立体験談情報&ガス代
トランザクションの開始者が残高を保証するのに十分な証人情報を提供できれば、状態へのアクセスはより安価になるでしょうか?証人情報もトランザクションに含めて署名すると、その確実性は保証されますが、複雑さが増します。
州手数料
ブロック提案者と州プロバイダーは州価格をどのように交渉するのでしょうか?ネットワーク側で設定されているのでしょうか?ブロックを生成するには、ブロック提案者は複数の州提案者に入札し、最も安価な提案者を選択する必要がありますか?
価格はステータスの訪問数に応じて計算されますか?それとも目撃データのサイズに応じて計算されるのでしょうか?
料金が監視データのデータ量に基づいている場合、BP は SP に余分なバイトが含まれていないことをどのようにして知るのでしょうか?
複数の取引で同じ証人情報を使用する場合、料金は均等に分割される必要がありますか?それとも取引ごとに全額を支払いますか?それとも、最初の取引のみ支払う必要があるのでしょうか?
状態の抽象化


