
この記事は、分散型金融コミュニティから転載され、著者:ChinaDeFi、許可を得て転載されています。
Arbitrum Rollup は、オンチェーンのイーサリアム コントラクトによって管理されるオフチェーン プロトコルです。 dApp 開発者は、Solidity で書かれた一連のコントラクトを持っており、開発者はこれを Arbitrum 仮想マシン (VM) にコンパイルして Arbitrum Rollup 上で実行します。私たちは彼らに速く走ってもらいたいと思っています。
ロールアップの基本
基本から始めましょう。 VM の状態はマークル ツリーとして編成されるため、VM 状態の暗号化ハッシュを計算できます。プロトコルのどの時点でも、VM の特定の状態が完全に確認されます。そのハッシュはチェーン上に保存されます。
プロトコルの参加者は、ある技術的前提条件の下で、特定の状態ハッシュから開始して、VM が指定された数の計算ステップを実行でき、その結果、指定された新しい状態ハッシュが得られ、VM指定された支払いを行い、その計算中に指定されたログ イベントを発行します。 DA は有効 (つまり、本物) または無効の場合があります。 DA を作成する当事者は、DA の有効性を寄託する必要があります。
異議のあるアサーションはプロトコルの決定点を作成します
左側に示すように、競合するアサーションにより、最終的にプロトコルを解決する必要がある論理的な決定ポイントが作成されます。 DA が有効な場合、システムは右上隅に新しい状態に入り、新しい状態ハッシュと副作用 (支払いとログ) が DA で指定されます。または、別のブランチでは、DA が無効であり、拒否され、ステータスは同じままです。
以前のアービトラムプロトコル
オリジナルの Arbitrum プロトコルは、紛争アサーションを一度に 1 つずつ処理します。 DAは誰かが獲得すると、誰でもDAに挑戦できる挑戦期間が経過します。異議がない場合は DA が承認され、そうでない場合は紛争プロトコルが実行され、DA はキャンセルされます。
これは単純ですが、2 つの欠点があります。まず、一度にアクティブにできる DA は 1 つだけであるため、VM の処理速度は制限されます。基本的に、プロセスは各チャレンジ中に停止する必要があります。第 2 に、悪意のある攻撃者は、VM によって作成されたすべての DA に意図的に挑戦することで、VM をフリーズする可能性があります。これにより、攻撃者はさまざまなコストを負担することになりますが、攻撃者がそのコストを支払う用意がある場合、少なくとも場合によっては、進行を長期間遅らせることができます。
新しく改良された Arbitrum プロトコル
新しい Arbitrum Rollup プロトコルは、これらの欠点の両方に対処します。複数の DA を「パイプライン化」することで、バリデーターの計算が VM をエミュレートするのと同じくらい迅速に VM を続行できるようになります。第 2 に、以下で説明するように、「悪意のある攻撃者は進行を遅らせることはできません。正直な攻撃者にとってはすでに「信頼できない結果」となっている結果のオンチェーン上の認識を一時的に遅らせることしかできません。
これはどのようにして可能でしょうか?
各状態の後に、最大 1 つの DA を付けることができます。 DA が状態に従わない場合は、誰でもそれに従う DA を作成でき、新しい分岐点が作成されます。その結果、将来のツリーが誕生する可能性があります。
誓約
誓約
プロトコルのもう 1 つの重要な部分はステーキングです。誰でも木の上の四角い箱に賭けることができます。スクエアをステークすることで、ユーザーはそのスクエアが最終的にプロトコルによって承認されることを主張できます。ユーザーは、現在の状態から配置した正方形までのパス上の各 DA で正しい分岐が取られると主張します。間違えるとユーザーは賭け金デポジットを失う可能性があります。
質権操作を取り消すことはできません。ユーザーは、各分岐点でデポジットを右に移動することはできますが、左に移動することはできません。これは、以前の誓約コミットメントを取り消すことと同じことになるためです。
係争中の請求を行う当事者は、その DA の「有効な DA 」後継者に賭けなければなりません。通常、既存のものを右に移動して、目的の後続の正方形に配置することで、この要件を満たすことができます。 (まれにこれができない場合がありますが、希望するマスに追加マージンを賭けることができます。ただし、一致しない 2 つのパスに賭けることになるため、最終的には 2 つのうち少なくとも 1 つを失う必要があることに注意してください。誓約 - 自分自身に矛盾するのは賢明ではありません。)
質権に関するもう 1 つの詳細は、ユーザーが質権したブロックが確認され、受け入れられた履歴記録になった場合、ユーザーは質権デポジットを引き出すことを選択できます。これは、ユーザーが正しければ、ステークを保持し、システムが自分自身に「追いつく」のを待つことができ、その後ユーザーはステークを取り戻すことができることを意味します。
より典型的な状態ツリー - 一連の真のアサーション
この時点で、ユーザは可能性ツリーとその分岐が非常に大きくなるのではないかと懸念するかもしれません。複数の当事者が相互に矛盾する結果に賭ける必要があるため、これは実際には起こりそうにありません。正解できるのは 1 人だけで、他の人はステーク ボンドを失います。おそらく、「ツリー」は実際には有効な DA チェーンであり、すべてが同じ結果に賭けられています。
誓約期限
時間がかかりすぎる前に、係争中の各主張について決定を下すシステムが必要です。したがって、DA がチェーンに追加されて分岐点が作成されると、有効期限がこの DA に関連付けられます。将来的には、期限が十分に長くなれば、誰もが DA が有効かどうかを確認する時間があり、そうすることを選択した場合は、DA の結果に基づいてオンチェーン トランザクションを取得できるようになります。このDAの有効性を支持または反対することを希望する人は、期限までにそうしなければなりません。 (ステーキングボンドは期限後も導入できますが、DA をサポートするかどうかの決定には関与しません。)期限に達すると、決定 DA に関連するすべてのステークボンドが判明します。
紛争
アリスとボブが異なるマスに賭けた場合、2 つのうちの 1 つが当てはまります。どちらか一方からもう一方へ、つまり彼らの主張が互いに一致するという右への道が存在するか、あるいはそのような道が存在しないかのどちらかです。アリスの四角形とボブの四角形を結ぶ右向きのパスがない場合は、何らかの方法で分岐する必要があります。両者の間には常に固有の争点が存在します。つまり、一方のステークが有効で他方のステークが無効となる固有の DA です。
アリスとボブは口論の準備をしている
二者間で紛争が発生した場合、システムは二者間で対話型の紛争解決プロトコルを開始できます。
紛争解決合意の結果、一方の当事者が不正確であることが判明します。その当事者は誓約保証金を失います。質権保証金は、それが置かれているマス目から消去されます。一部は紛争の相手方に渡され、残りは焼却されます。
複数の紛争を同時に進行させることができますが、各ステーカーは一度に最大 1 つの紛争にのみ関与できます。敗者の賭け金デポジットは消去されるため、紛争が発生するたびにシステム内の意見の相違の数が減少します。質権デポジットを失った当事者は、希望に応じて再度ステークすることができますが、新しい質権デポジットは質権期間を過ぎた DA に影響を与えることはできません。この結果、DA のステーキング期間が経過した後、紛争は DA の扱い方に関する意見の相違を徐々に解決することになるでしょう。
結果を検証する
DA のステーキング期限が過ぎ、タイムリーに残っているすべての (設定されたステーキング期限前に) ステークがその DA の同じフォーク上にあると、システムはその DA の結果を確認できます。 DA は受け入れられるか拒否され、現在の状態は DA の右側の適切な四角形に移動します。 DA が有効であると確認されると、その副作用 (支払いなど) がオンチェーンで実装され、これが VM の状態が進む方法です。
通常、当事者は虚偽の主張をして自分の権利を失いたくないので、正直に行動します。単一チェーンでは、有効な DA のみがアサートされ、誰も DA の無効なフォークにステークしません。この場合、各 DA はステーキング期間が終了するとすぐに確認できます。
なぜトラストレスなのか
Arbitrum Rollup の重要な特性は、トラストレスであることです。正直な当事者は、VM が正しく動作して進歩するように強制できます。なぜでしょうか? アリスが常に各 DA の実際のブランチにステークしており、ツリーが空の場合は DA をアサートすると想像してください。
アリスは本物の支部に賭けているため、参加するすべての紛争に勝ちます。他の人たちがアリスの意見に同意しない場合、(a) 第三者とは無関係の紛争で利害関係の絆を失うか、(b) 最終的にアリスとの紛争に巻き込まれて彼女との絆を失うことになります。いずれにせよ、アリスの意見に反対する人は全員、最終的にステーク債を失うことになります。アリスに同意する者だけが生き残るので、木を通るアリスの道は、最終的には時間を賭けた唯一の人となり、アリスの道も確認されます。
アリスが正直なら、他人が何をしようとも、最終的には緑の四角が確定する
この場合、システムはトラストレスであるため、アリスが広場に賭け、その広場への道が現実であると知っている場合、アリスは自分がいる広場が最終的に確認されることを確信できます。アリスにとって、この道は最後の道と同じくらい良い道です。
ユーザーがパスに賭けていない場合でも、数人がそのパスに賭けているのを見て、ユーザー自身がそのうちの少なくとも 1 人が正直であると信じている場合、このパスは最終的なパスと同じくらい優れています。
結果を信頼しないことの利点
トラストレス結果はなぜ価値があるのでしょうか? この典型的な例は、他のロールアップ プロトコルに関する以前の議論から来ています。 VM がアリスに金額を支払いたいとします。支払いイベントは正直なパスで行われますが、支払いが発生した広場のオンチェーン確認までにはしばらく時間がかかります。
不信感の結果、アリスは自分のお金にすぐにアクセスできるようになります。ボブがステーキングを解除したお金を持っている場合、アリスが今後の未確認の支払いをボブに割り当てる(さらにボブに最低料金を支払う)代わりに、そのお金をすぐにアリスに渡すことができます。ボブは、誠実な結果に賭けることでこれを確実にすることができ、最終的に支払いが確認されるまで自信を持って待つことができます。これができるのはボブだけではありません。絆を持っている人なら誰でも、アリスや彼女のような人たちに同じようにお金を貸すことができます。これらの人々は、より低い料金を提供することで互いに競争し、アリスが保証金を獲得するコストを下げることができます。
重要なのは、この市場メカニズムの存続可能性はトラストレスの最終結果に依存するということです。何かが最終的に確認されることを「全員」がすでに知っている場合、オンチェーンでの確認の遅れはそれほど迷惑ではありません。
これは支払いだけでなく、VM が行う他の処理にも当てはまります。 VM が何かが起こったことを通知するログ エントリを発行する場合、トラストレスな結果は、そのログ エントリがチェーン上で識別されることを誰もが確信できることを意味します。
遅延攻撃
システムはトラストレスであるため、悪意のある攻撃者が誤った結果を強制することはできません。彼らにできることはプロセスを遅くすることだけです。そうするためには、ステーキングデポジットを犠牲にする必要がありますが、ステーキングデポジットが大きい場合、費用が高くなる可能性があります。
誰かが遅延攻撃を開始したいとすると、彼らは誓約保証金を犠牲にすることをいとわないでしょう。彼らが与える可能性のある最悪の損害は何ですか?
まず注意すべきことは、悪意のあるアクターは、誠実なアクターがツリーの誠実なブランチを構築し続けるのを防ぐことができないということです。また、正直な信頼者が最終的に正直なフォークを確認したときに、信頼できない信頼を得ることを防ぐこともできません。
攻撃者ができることは、偽のブランチにステークして、チェーン上の正当なパスの確認を遅らせることだけです。彼らが賭け金を置くたびに、誠実な攻撃者にとってさらなる紛争が発生し、攻撃者の賭け金デポジットの大部分が奪われます。攻撃者のステークボンドがすべて取得されると、オンチェーンプロセスが続行されます。
攻撃者が間違った結果に対して複数のリスクを課した場合はどうなるでしょうか? その場合、これらの保証された保証金は紛争で 1 つずつ取り上げられます。複数の人々が正直な結果に参加している場合、それらの人々全員が攻撃者と紛争を開始し、並行して攻撃者の質権保証金を剥奪することができます。誰もが何が起こっているかを明確に把握しており、多くの人が実際の結果に賭けて行動に参加したいと考えていることに注意してください。そうすることで、攻撃者から強奪するために論争を利用する人々の群衆に加わることができます。住宅ローンの狂乱。正直な側に K 人がステークされている場合、攻撃者は K ステークのデポジットを使って紛争の遅延を購入します。これにより、攻撃者がより多くのステークを預けた場合、より誠実なステーカーを引き寄せる可能性があります。これは攻撃者にとって悪い状況です。
最適化
さまざまな最適化により、プロトコルの運用に必要なオンチェーンの簿記の量が削減され、オンチェーンのガスコストが削減される可能性があります。