著者: AndreasTzionis、出典: ethresear.ch、コンパイラ: Yvonne、MarsBit私は長い間、ロールアップが現在直面している問題のいくつかをマルチロールアップ (マルチロールアップ) 設計によって解決するというアイデアを持っていました。約 1 年半の間、誰かがそれを構築してくれるだろうと思っていましたが、そのようなシステムの詳細を深く掘り下げたり考えたりすることはありませんでした。かなり時間が経ちましたが、この記事で説明した問題を解決する単一の設計はないようです。そのため、誰かが解決してくれることを願って、できる限りこのシステムの詳細を記入するつもりです。そこからインスピレーションを得たり、既存のロールアップからアイデアを借りたりすることもできます。**導入**現在、Rollup が直面している問題の 1 つはユーザー エクスペリエンスです。多くの設計では、ロールアップは異なる特性を持つ独立したエコシステムです。相互運用する方法はありますが、複数の異種システムを接続するのは非常に困難です。さらに、これらすべてのロールアップにユーザーをサインアップさせるのは困難です。各ロールアップを個別に理解し、関連するスマートコントラクトを評価し、ウォレットを新しい RPC エンドポイントに接続し、資産をチェーンにブリッジするなどする必要があります。すべてのロールアップに統一されたエクスペリエンスを提供できる 1 つのロールアップ デザインがあるとしたらどうなるでしょうか?どのように見えるでしょうか?私はこの質問を自分自身に問い続け、次の 5 つの洞察にたどり着きました。> ロールアップ全体でさまざまなスマート コントラクトをクエリおよび呼び出すための統合 RPC を提供する必要があります。スマート コントラクトには、所属するロールアップに依存しない一意のアドレスが必要です。> 需要に基づいてスケールアップおよびスケールダウンできるようにする必要があります。トランザクションが増えると、それらを処理するロールアップも増える必要があり、ロールアップ間で不均一な負荷が分散される必要があります。> さまざまなロールアップのシーケンサーがオンラインを維持するよう奨励する必要があります。システムは、オフラインの仕分け機を他の仕分け機に置き換えることを奨励する必要があります。> インスタントクロスチェーン転送をサポートする必要があります。クロスチェーン操作が意味をなすように、トランザクションは十分迅速に決済される必要があります。> 軽量クライアントを維持し、複数のマージにわたってエクスプローラー機能をブロックする必要があります。ブロック エクスプローラーはブロックチェーンの統一されたビューを提供する必要があり、軽量クライアントは低コストの検証を可能にする必要があります。! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-24cc855280-dd1a6f-6d2ef1)これらすべてを考慮して、ロールアップ ハブと可変数のサブロールアップで構成される設計を思いつきました。ロールアップ ハブは登録センターであり、すべてのサブロールアップのロード バランサーでもありますが、スマート コントラクトの処理は行いません。スマート コントラクトはサブロールアップで処理されます。次のセクションでは、上で述べた 5 つの考慮事項を説明する大まかな設計について説明します。**設計の概要**このシステムには、ロールアップ ハブとサブロールアップという 2 つの主要コンポーネントがあります。ロールアップ ハブ システムには、ロールアップ ハブとサブロールアップという 2 つの主要コンポーネントがあります。ロールアップ ハブは、すべてのサブロールアップのすべてのスマート コントラクト レジストリを含むロールアップで、どのロールアップがどのスマート コントラクトを担当するかを決定します。さらに、ロールアップ ハブには、別の子ロールアップのすべてのソーターのレジストリが含まれています。子チェーンは、スマート コントラクト レジストリのロールアップ ハブによって割り当てられたスマート コントラクトのトランザクションを実行する責任があります。シーケンサー レジストリには、各シーケンサー システムの 2 つの主要コンポーネント (ロールアップ ハブと子ロールアップ) が含まれています。ロールアップ ハブは、すべてのサブロールアップのすべてのスマート コントラクト レジストリを含むロールアップで、どのロールアップがどのスマート コントラクトを担当するかを決定します。さらに、ロールアップ ハブには、別の子ロールアップのすべてのシーケンサーのレジストリが含まれています。子チェーンは、スマート コントラクト レジストリのロールアップ ハブによって割り当てられたスマート コントラクトのトランザクションを実行する責任があります。シーケンサー レジストリには、各シーケンサー RPC エンドポイントと DA アドレスが含まれています。! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-30f0cf6d9f-dd1a6f-6d2ef1)**シーケンサー レジストリ**シーケンサー レジストリは、グローバル スマート コントラクト アドレスからスマート コントラクト アドレスへのマッピングとして機能します。これは、クエリまたは更新されたスマート コントラクトに対応する特定のシーケンサー RPC に RPC 呼び出しをルーティングするために使用されます。**スマート コントラクト レジストリ**スマート コントラクト レジストリは、グローバル スマート コントラクト アドレスからスマート コントラクト アドレスへのマッピングとして機能します。**ロールアップチェーン**通常、子チェーンには状態ルートがあり、この状態ルートはスマート コントラクトを直接呼び出すことによって更新できます。または、ロールアップ ハブがスマート コントラクトを別のロールアップに割り当てるときに更新できます。この場合、スマート コントラクトは削除する必要があります。 、他のスマートコントラクトに追加されます。**統合 RPC**目標: ロールアップごとに新しいチェーンに接続する必要をなくし、ロールアップ間のトランザクションをユーザーに透過的にすること。Unified RPC は、マルチ ロールアップ ネットワーク内の単一チェーンのユーザー エクスペリエンスを復元し、ユーザーは異なるロールアップを使用するために異なるネットワークに接続する必要がありません。! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-74756eed1e-dd1a6f-6d2ef1)システムは、ロールアップ ハブからのロールアップ注文者のレジストリを使用して、特定のスマート コントラクトに対応する注文者の RPC エンドポイントを見つけます。その後、リクエストはそのシーケンサーに直接送信されます。リクエストを異なるロールアップに送信することで、複数のトランザクションを完了できます。詳細については、次のセクションを確認してください。**どのように動作します**ロールアップ ハブは、すべてのサブチェーンのソーターのレジストリを維持します。ユーザーが新しいトランザクションを送信する場合、ユーザーのウォレットはスマート コントラクト レジストリにクエリを実行してスマート コントラクトの RollupID を取得し、シーケンサー レジストリにクエリを実行して同じロールアップ内のシーケンサーの RPC エンドポイントを取得します。次に、トランザクションはシーケンサーの RPC エンドポイントに送信されます。**ロードバランシング**目標: すべてのロールアップのコストのバランスを取るロード バランシングにより、ロールアップでのロード バランシングが可能になります。システムが詰まった場合、負荷を処理するために新しいロールアップを生成できます。あまり使用しない場合は、ロールアップを削除してリソースを節約できます。さらに、システムは、トランザクションの需要が高いスマート コントラクトを、より多くの利用可能な容量を持つロールアップに移動することで、料金の高騰を回避できます。! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-632aa78015-dd1a6f-6d2ef1)**どのように動作します**エポックごとに、ロールアップ ハブはシステム内のすべてのロールアップの負荷を評価します。大規模なスマート コントラクトの再割り当てを避けるために、エポックは数時間 (おそらく 6 ~ 24 時間) 継続する必要があります。ロールアップ ハブは、ガバナンスを使用するか、さまざまなスマート コントラクトのガス消費履歴を使用して自律的に決定することで、どのスマート コントラクトを再割り当てするか、いつロールアップを生成または削除するかを決定できます。ロールアップ ハブは、ロールアップのトランザクション負荷が平均を上回っている (つまり、手数料が高い) か、平均を下回っている (つまり、手数料が低い) かをチェックします。ロールアップの負荷が平均より高い場合、ロールアップ ハブはどのスマート コントラクトが最も多くのガスを消費するかを評価し、追加の負荷を処理できる別のロールアップにそれらを再割り当てします。その後、スマート コントラクトは、初期のホスト ロールアップ状態から削除されます。すべてのロールアップの平均負荷が平均より高い場合、ロールアップ ハブは新しいロールアップを作成し、いくつかのスマート コントラクトを新しいロールアップに割り当てます。同様に、すべてのロールアップの平均負荷が平均を下回る場合、ロールアップ ハブはロールアップを削除し、そのスマート コントラクトを他のロールアップに再割り当てします。ロールアップ チェーンは、エポックごとにロールアップ ハブを確認し、割り当てられた新しいスマート コントラクトのストレージをダウンロードし、責任を負わなくなったスマート コントラクトを削除する必要があります。注: 一部のスマート コントラクトのストレージをダウンロードすることは簡単な問題ではない可能性があります。まず、状態は DA 層では利用できず、サイズが非常に大きくなります。これにより最小エポック時間が制限され、スマート コントラクト ストレージを準備するための猶予期間が必要になります。**仕分けインセンティブ**目標: ネイティブ トークンの報酬の一部を使用して、バックアップ シーケンサーを奨励します。現在のロールアップのほとんどは単一のチェーン上に構築されており、ロールアップの稼働時間を最大化することを目的として、1 人またはごく少数の注文者によって管理されています。対照的に、マルチ ロールアップ システムでは、複数の独立したサブロールアップがあり、システム全体でアクティブな状態を維持するには、それぞれがオンラインである必要があります。仕分け者には当然、MEV を収集するために Rollup に参加するようインセンティブが与えられますが、より一貫性があり、MEV のようなインセンティブの調整を誤らないため、これらの仕分け者に適切な報酬を提供する方が良いでしょう。これらの報酬はロールアップハブ金融政策から得られるべきです。さらに、複数の注文者を待機させてすぐに参加できるようにしておくとよいでしょう。これらの注文者は、トランザクション需要が増加したときにシステムに参加し、コンピューティング リソースがなくなったときにシステムから離れることができます。! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-02c28a977e-dd1a6f-6d2ef1)スタンバイ シーケンサーはシーケンサー キューに残り、少額の可用性コミットメント報酬を受け取ります。ロールアップで交換すると、全額の報酬を受け取ります。報酬はロールアップ ハブの料金燃焼メカニズムから得られます。**使い方**ソーターは、財務保証金を送信することで、ロールアップ ハブのソーター キューに参加できます (現在のロールアップ システムと同様)。キュー内の注文者は、自分がロールアップ ハブ ステータスを持っており、いつでも読み取ってロールアップに参加できることを示す DA 証明を提供する必要があります。証拠を提出すると、システムのネイティブ トークンである報酬の一部を受け取ります。このトークンはロールアップ ハブのハンドルです。ロールアップ ハブが新しいロールアップが必要であると判断した場合、それらのハブが割り当てられ、全額の報酬を受け取ります。この報酬は、システム内で消費された手数料の総額によって決まります。**クロスロールアップトランザクション**目標: ロールアップ トランザクションは即座に実行され、ユーザーにとって透過的である必要があります。ロールアップ A とロールアップ B 間のクロスロールアップ トランザクションには 2 つの部分が必要です: 1) ロールアップ A のトランザクション 2) ロールアップ B のトランザクション。これはロールアップ A のトランザクションが成功して最終的な場合にのみ発生します。! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-6899964b00-dd1a6f-6d2ef1)迅速な確認のために、ユーザーウォレットはトランザクションが基礎となるDAレイヤーに送信されたかどうかを確認し、ZKを使用してそれが有効であることを証明できます。トランザクションが含まれており有効である場合、シーケンサーはその特定のトランザクションに対して同じ結論に達する必要があります。このアイデアの功績は、Mustafa Al-Bassam と Sovereign Labs に与えられます。**使い方**ユーザーは、ロールアップ A、B、C などの 3 つのロールアップを含むトランザクションを送信します。具体的な例を考えてみましょう。ロールアップ A にはステーブルコイン スマート コントラクトがあり、ロールアップ B には DEX があり、ロールアップ C には融資契約があります。この例では、ユーザーはステーブルコインを別のトークンに交換し、融資契約をデポジットしたいと考えています。ユーザーはまずロールアップ A トランザクションを送信して、ロールアップ B の DEX にステーブルコインを転送する必要があります。その後、ステーブルコインをロールアップ B の目的のトークンと交換するロールアップ B DEX トランザクションを送信できます。次に、トークンは RollupC に転送されることになっていたため、ユーザーは 3 番目のトランザクションを送信し、まさにそれが行われました。最後に、ユーザーは 4 番目で最後のトランザクションを送信し、トークンを融資プロトコルに預けます。**ライト ノードとブロック エクスプローラー**目標: ライト ノードはロールアップ全体でスマート コントラクトを検証できる必要があり、ブロック エクスプローラーはチェーンの統一されたビューを提供する必要があります。ブロックチェーン システムでは、誰でもノードを実行してチェーン自体を検証できるようにする必要があります。このマルチロールアップ設計では、スマート コントラクトがさまざまなサブロールアップに常に再割り当てされるため、これらの特定のスマート コントラクトを追跡する方法が必要です。これは、1 つ以上のチェーンの検証から 1 つ以上のスマート コントラクトの検証への考え方の変化です。ライトノードは、ZK 証明を使用して、すべての子ロールアップを低コストで検証できます。! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-69f308abb1-dd1a6f-6d2ef1)**仕組み (ライトクライアント)**ロールアップ ノードは、ソーター モードと同様に、検証モードをサポートする必要があります。検証モードは、トランザクション バッチを DA レイヤーに送信するシーケンサー モードとは異なり、単一のスマート コントラクトの状態を検証します。スマート コントラクトによってサブクラスターが変更された場合、バリデーターは再割り当てまでスマート コントラクト ストレージをすでに所有しているため、リッスンしているサブクラスターを更新するだけで済みます。スマート コントラクトは、一度に 1 つのロールアップで処理する必要があります。これらはロールアップに限定されているため、同じ仕様を持つバリデーターはそれらを追跡して検証できる必要があります。ライトノードは、ZK プルーフを使用してチェーンの状態を低コストで検証できます。ブロック エクスプローラーは、ブロックチェーン システムに不可欠な部分です。これらは、ネイティブ資産の残高クエリ、スマート コントラクト クエリを容易にし、最初のブロックから現在のブロックまでのトランザクション履歴を維持します。このマルチロールアップ システムでは、ブロック エクスプローラーはすべてのサブロールアップの統一されたビューを提供する必要があります。! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-217876ee66-dd1a6f-6d2ef1)**仕組み (ブロック エクスプローラー)**ブロック エクスプローラーは、ロールアップ ハブ (ネイティブ アセット用) の残高とすべてのサブロールアップのトランザクション履歴のクエリをサポートする必要があります。シングル ロールアップ システムと同様に、ブロック エクスプローラーはインデックスを使用してこれを実現します。マルチロールアップ システムでは、システム内のスマート コントラクトにクエリ サービスを提供するために、すべてのロールアップにインデックスを付ける必要があります。ロールアップ ハブがサブロールアップの数を拡張することを決定した場合、ブロック エクスプローラーはそれを処理する準備ができている必要があります。より多くのサブロールアップ容量を提供するか、サブロールアップを自動的にスケールアップするコンテナ オーケストレーション システム (Kubernetes など) を備えている必要があります。すべてのロールアップ間で一貫性を保つために、DA レイヤーからのブロック番号を使用する必要があります。**結論は**上記のデザインは現時点では単なるアイデアであり、これ以上実装することはないかもしれませんが、ビジョンに興味を持っていただければ幸いです。設計が合格すれば、ロールアップ プロジェクトで使用され、EIP-4844、Celestia、または Avail のスケーリング機能に近づくことが期待されます。
未来を広げる:マルチロールアップシステムの設計コンセプト
著者: AndreasTzionis、出典: ethresear.ch、コンパイラ: Yvonne、MarsBit
私は長い間、ロールアップが現在直面している問題のいくつかをマルチロールアップ (マルチロールアップ) 設計によって解決するというアイデアを持っていました。約 1 年半の間、誰かがそれを構築してくれるだろうと思っていましたが、そのようなシステムの詳細を深く掘り下げたり考えたりすることはありませんでした。
かなり時間が経ちましたが、この記事で説明した問題を解決する単一の設計はないようです。そのため、誰かが解決してくれることを願って、できる限りこのシステムの詳細を記入するつもりです。そこからインスピレーションを得たり、既存のロールアップからアイデアを借りたりすることもできます。
導入
現在、Rollup が直面している問題の 1 つはユーザー エクスペリエンスです。多くの設計では、ロールアップは異なる特性を持つ独立したエコシステムです。相互運用する方法はありますが、複数の異種システムを接続するのは非常に困難です。さらに、これらすべてのロールアップにユーザーをサインアップさせるのは困難です。各ロールアップを個別に理解し、関連するスマートコントラクトを評価し、ウォレットを新しい RPC エンドポイントに接続し、資産をチェーンにブリッジするなどする必要があります。
すべてのロールアップに統一されたエクスペリエンスを提供できる 1 つのロールアップ デザインがあるとしたらどうなるでしょうか?どのように見えるでしょうか?
私はこの質問を自分自身に問い続け、次の 5 つの洞察にたどり着きました。
! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-24cc855280-dd1a6f-6d2ef1)
これらすべてを考慮して、ロールアップ ハブと可変数のサブロールアップで構成される設計を思いつきました。ロールアップ ハブは登録センターであり、すべてのサブロールアップのロード バランサーでもありますが、スマート コントラクトの処理は行いません。スマート コントラクトはサブロールアップで処理されます。
次のセクションでは、上で述べた 5 つの考慮事項を説明する大まかな設計について説明します。
設計の概要
このシステムには、ロールアップ ハブとサブロールアップという 2 つの主要コンポーネントがあります。ロールアップ ハブ システムには、ロールアップ ハブとサブロールアップという 2 つの主要コンポーネントがあります。ロールアップ ハブは、すべてのサブロールアップのすべてのスマート コントラクト レジストリを含むロールアップで、どのロールアップがどのスマート コントラクトを担当するかを決定します。さらに、ロールアップ ハブには、別の子ロールアップのすべてのソーターのレジストリが含まれています。子チェーンは、スマート コントラクト レジストリのロールアップ ハブによって割り当てられたスマート コントラクトのトランザクションを実行する責任があります。シーケンサー レジストリには、各シーケンサー システムの 2 つの主要コンポーネント (ロールアップ ハブと子ロールアップ) が含まれています。ロールアップ ハブは、すべてのサブロールアップのすべてのスマート コントラクト レジストリを含むロールアップで、どのロールアップがどのスマート コントラクトを担当するかを決定します。さらに、ロールアップ ハブには、別の子ロールアップのすべてのシーケンサーのレジストリが含まれています。子チェーンは、スマート コントラクト レジストリのロールアップ ハブによって割り当てられたスマート コントラクトのトランザクションを実行する責任があります。シーケンサー レジストリには、各シーケンサー RPC エンドポイントと DA アドレスが含まれています。
! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-30f0cf6d9f-dd1a6f-6d2ef1)
シーケンサー レジストリ
シーケンサー レジストリは、グローバル スマート コントラクト アドレスからスマート コントラクト アドレスへのマッピングとして機能します。これは、クエリまたは更新されたスマート コントラクトに対応する特定のシーケンサー RPC に RPC 呼び出しをルーティングするために使用されます。
スマート コントラクト レジストリ
スマート コントラクト レジストリは、グローバル スマート コントラクト アドレスからスマート コントラクト アドレスへのマッピングとして機能します。
ロールアップチェーン
通常、子チェーンには状態ルートがあり、この状態ルートはスマート コントラクトを直接呼び出すことによって更新できます。または、ロールアップ ハブがスマート コントラクトを別のロールアップに割り当てるときに更新できます。この場合、スマート コントラクトは削除する必要があります。 、他のスマートコントラクトに追加されます。
統合 RPC
目標: ロールアップごとに新しいチェーンに接続する必要をなくし、ロールアップ間のトランザクションをユーザーに透過的にすること。
Unified RPC は、マルチ ロールアップ ネットワーク内の単一チェーンのユーザー エクスペリエンスを復元し、ユーザーは異なるロールアップを使用するために異なるネットワークに接続する必要がありません。
! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-74756eed1e-dd1a6f-6d2ef1)
システムは、ロールアップ ハブからのロールアップ注文者のレジストリを使用して、特定のスマート コントラクトに対応する注文者の RPC エンドポイントを見つけます。その後、リクエストはそのシーケンサーに直接送信されます。リクエストを異なるロールアップに送信することで、複数のトランザクションを完了できます。詳細については、次のセクションを確認してください。
どのように動作します
ロールアップ ハブは、すべてのサブチェーンのソーターのレジストリを維持します。
ユーザーが新しいトランザクションを送信する場合、ユーザーのウォレットはスマート コントラクト レジストリにクエリを実行してスマート コントラクトの RollupID を取得し、シーケンサー レジストリにクエリを実行して同じロールアップ内のシーケンサーの RPC エンドポイントを取得します。
次に、トランザクションはシーケンサーの RPC エンドポイントに送信されます。
ロードバランシング
目標: すべてのロールアップのコストのバランスを取る
ロード バランシングにより、ロールアップでのロード バランシングが可能になります。システムが詰まった場合、負荷を処理するために新しいロールアップを生成できます。あまり使用しない場合は、ロールアップを削除してリソースを節約できます。さらに、システムは、トランザクションの需要が高いスマート コントラクトを、より多くの利用可能な容量を持つロールアップに移動することで、料金の高騰を回避できます。
! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-632aa78015-dd1a6f-6d2ef1)
どのように動作します
エポックごとに、ロールアップ ハブはシステム内のすべてのロールアップの負荷を評価します。大規模なスマート コントラクトの再割り当てを避けるために、エポックは数時間 (おそらく 6 ~ 24 時間) 継続する必要があります。
ロールアップ ハブは、ガバナンスを使用するか、さまざまなスマート コントラクトのガス消費履歴を使用して自律的に決定することで、どのスマート コントラクトを再割り当てするか、いつロールアップを生成または削除するかを決定できます。
ロールアップ ハブは、ロールアップのトランザクション負荷が平均を上回っている (つまり、手数料が高い) か、平均を下回っている (つまり、手数料が低い) かをチェックします。
ロールアップの負荷が平均より高い場合、ロールアップ ハブはどのスマート コントラクトが最も多くのガスを消費するかを評価し、追加の負荷を処理できる別のロールアップにそれらを再割り当てします。その後、スマート コントラクトは、初期のホスト ロールアップ状態から削除されます。
すべてのロールアップの平均負荷が平均より高い場合、ロールアップ ハブは新しいロールアップを作成し、いくつかのスマート コントラクトを新しいロールアップに割り当てます。同様に、すべてのロールアップの平均負荷が平均を下回る場合、ロールアップ ハブはロールアップを削除し、そのスマート コントラクトを他のロールアップに再割り当てします。
ロールアップ チェーンは、エポックごとにロールアップ ハブを確認し、割り当てられた新しいスマート コントラクトのストレージをダウンロードし、責任を負わなくなったスマート コントラクトを削除する必要があります。
注: 一部のスマート コントラクトのストレージをダウンロードすることは簡単な問題ではない可能性があります。まず、状態は DA 層では利用できず、サイズが非常に大きくなります。これにより最小エポック時間が制限され、スマート コントラクト ストレージを準備するための猶予期間が必要になります。
仕分けインセンティブ
目標: ネイティブ トークンの報酬の一部を使用して、バックアップ シーケンサーを奨励します。
現在のロールアップのほとんどは単一のチェーン上に構築されており、ロールアップの稼働時間を最大化することを目的として、1 人またはごく少数の注文者によって管理されています。対照的に、マルチ ロールアップ システムでは、複数の独立したサブロールアップがあり、システム全体でアクティブな状態を維持するには、それぞれがオンラインである必要があります。
仕分け者には当然、MEV を収集するために Rollup に参加するようインセンティブが与えられますが、より一貫性があり、MEV のようなインセンティブの調整を誤らないため、これらの仕分け者に適切な報酬を提供する方が良いでしょう。これらの報酬はロールアップハブ金融政策から得られるべきです。
さらに、複数の注文者を待機させてすぐに参加できるようにしておくとよいでしょう。これらの注文者は、トランザクション需要が増加したときにシステムに参加し、コンピューティング リソースがなくなったときにシステムから離れることができます。
! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-02c28a977e-dd1a6f-6d2ef1)
スタンバイ シーケンサーはシーケンサー キューに残り、少額の可用性コミットメント報酬を受け取ります。ロールアップで交換すると、全額の報酬を受け取ります。報酬はロールアップ ハブの料金燃焼メカニズムから得られます。
使い方
ソーターは、財務保証金を送信することで、ロールアップ ハブのソーター キューに参加できます (現在のロールアップ システムと同様)。
キュー内の注文者は、自分がロールアップ ハブ ステータスを持っており、いつでも読み取ってロールアップに参加できることを示す DA 証明を提供する必要があります。
証拠を提出すると、システムのネイティブ トークンである報酬の一部を受け取ります。このトークンはロールアップ ハブのハンドルです。
ロールアップ ハブが新しいロールアップが必要であると判断した場合、それらのハブが割り当てられ、全額の報酬を受け取ります。この報酬は、システム内で消費された手数料の総額によって決まります。
クロスロールアップトランザクション
目標: ロールアップ トランザクションは即座に実行され、ユーザーにとって透過的である必要があります。
ロールアップ A とロールアップ B 間のクロスロールアップ トランザクションには 2 つの部分が必要です: 1) ロールアップ A のトランザクション 2) ロールアップ B のトランザクション。これはロールアップ A のトランザクションが成功して最終的な場合にのみ発生します。
! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-6899964b00-dd1a6f-6d2ef1)
迅速な確認のために、ユーザーウォレットはトランザクションが基礎となるDAレイヤーに送信されたかどうかを確認し、ZKを使用してそれが有効であることを証明できます。トランザクションが含まれており有効である場合、シーケンサーはその特定のトランザクションに対して同じ結論に達する必要があります。
このアイデアの功績は、Mustafa Al-Bassam と Sovereign Labs に与えられます。
使い方
ユーザーは、ロールアップ A、B、C などの 3 つのロールアップを含むトランザクションを送信します。
具体的な例を考えてみましょう。ロールアップ A にはステーブルコイン スマート コントラクトがあり、ロールアップ B には DEX があり、ロールアップ C には融資契約があります。この例では、ユーザーはステーブルコインを別のトークンに交換し、融資契約をデポジットしたいと考えています。
ユーザーはまずロールアップ A トランザクションを送信して、ロールアップ B の DEX にステーブルコインを転送する必要があります。
その後、ステーブルコインをロールアップ B の目的のトークンと交換するロールアップ B DEX トランザクションを送信できます。
次に、トークンは RollupC に転送されることになっていたため、ユーザーは 3 番目のトランザクションを送信し、まさにそれが行われました。
最後に、ユーザーは 4 番目で最後のトランザクションを送信し、トークンを融資プロトコルに預けます。
ライト ノードとブロック エクスプローラー
目標: ライト ノードはロールアップ全体でスマート コントラクトを検証できる必要があり、ブロック エクスプローラーはチェーンの統一されたビューを提供する必要があります。
ブロックチェーン システムでは、誰でもノードを実行してチェーン自体を検証できるようにする必要があります。このマルチロールアップ設計では、スマート コントラクトがさまざまなサブロールアップに常に再割り当てされるため、これらの特定のスマート コントラクトを追跡する方法が必要です。これは、1 つ以上のチェーンの検証から 1 つ以上のスマート コントラクトの検証への考え方の変化です。ライトノードは、ZK 証明を使用して、すべての子ロールアップを低コストで検証できます。
! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-69f308abb1-dd1a6f-6d2ef1)
仕組み (ライトクライアント)
ロールアップ ノードは、ソーター モードと同様に、検証モードをサポートする必要があります。
検証モードは、トランザクション バッチを DA レイヤーに送信するシーケンサー モードとは異なり、単一のスマート コントラクトの状態を検証します。
スマート コントラクトによってサブクラスターが変更された場合、バリデーターは再割り当てまでスマート コントラクト ストレージをすでに所有しているため、リッスンしているサブクラスターを更新するだけで済みます。
スマート コントラクトは、一度に 1 つのロールアップで処理する必要があります。これらはロールアップに限定されているため、同じ仕様を持つバリデーターはそれらを追跡して検証できる必要があります。
ライトノードは、ZK プルーフを使用してチェーンの状態を低コストで検証できます。
ブロック エクスプローラーは、ブロックチェーン システムに不可欠な部分です。これらは、ネイティブ資産の残高クエリ、スマート コントラクト クエリを容易にし、最初のブロックから現在のブロックまでのトランザクション履歴を維持します。このマルチロールアップ システムでは、ブロック エクスプローラーはすべてのサブロールアップの統一されたビューを提供する必要があります。
! [Rollup] (https://img-cdn.gateio.im/resize-social/moments-40baef27dd-217876ee66-dd1a6f-6d2ef1)
仕組み (ブロック エクスプローラー)
ブロック エクスプローラーは、ロールアップ ハブ (ネイティブ アセット用) の残高とすべてのサブロールアップのトランザクション履歴のクエリをサポートする必要があります。
シングル ロールアップ システムと同様に、ブロック エクスプローラーはインデックスを使用してこれを実現します。マルチロールアップ システムでは、システム内のスマート コントラクトにクエリ サービスを提供するために、すべてのロールアップにインデックスを付ける必要があります。
ロールアップ ハブがサブロールアップの数を拡張することを決定した場合、ブロック エクスプローラーはそれを処理する準備ができている必要があります。より多くのサブロールアップ容量を提供するか、サブロールアップを自動的にスケールアップするコンテナ オーケストレーション システム (Kubernetes など) を備えている必要があります。
すべてのロールアップ間で一貫性を保つために、DA レイヤーからのブロック番号を使用する必要があります。
結論は
上記のデザインは現時点では単なるアイデアであり、これ以上実装することはないかもしれませんが、ビジョンに興味を持っていただければ幸いです。設計が合格すれば、ロールアップ プロジェクトで使用され、EIP-4844、Celestia、または Avail のスケーリング機能に近づくことが期待されます。