見出し画像

Arbitrumの技術的概要をわかりやすく解説


アーキテクチャの概要


* Arbitrum (L2) はEthereum (L1) のスケーラビリティー・ソリューションとして存在するためArbitrumアーキテクチャーの一部は L1 上に一部は L2 上に存在します。



* L1 に存在するArbitrumのコンポーネントはEthereumコントラクトのセットである「EthBridge」です。


* 「EthBridge」はArbitrum Rollupプロトコルのレフリー(審判)と、チェーンの受信ボックスと送信ボックスの維持を担当します。


* チェーンの受信ボックスと送信ボックスは、ユーザー、L1 コントラクト、フル ノードがトランザクションをチェーンに送信し、それらのトランザクションの結果を観察できるようにするものです。


* 「Arbitrum Virtual Machine(AVM)」は、L1 と L2 の間のゲートウェイであり、「EthBridge」が提供する機能です。


* 「Arbitrum Virtual Machine(AVM)」は、入力を読み取り、これらの入力に対して計算を実行して出力を生成することができるものです。


* 「ArbOS」は「Arbitrum Virtual Machine(AVM)」上で実行され、Arbitrumチェーンでのスマートコントラクトの実行を保証します。


* 「ArbOS」は完全にL2上に存在し、Ethereumで実行されるのと同じようにEVMコントラクトを実行します。

画像1


Arbitrum アーキテクチャの概要


「The Rollup protocol」



* チェーンの受信ボックス内のメッセージの順序によって、トランザクションの結果が決まります。その後、受信ボックスを見ている人は誰でも、トランザクションを実行するだけでトランザクションの結果を知ることができます。


* 「The Rollup protocol」は、すでに実際に発生したトランザクションの結果を確認する役割を果たします。


* プロトコルに参加するユーザーは「validators」と呼ばれます。「validator」がEthを「deposit contract」にステークした場合、彼らは「staker」になり、Rollupチェーンのブロックにステークすることができます。「validator」と「staker」の両方の役割はパーミッションレスです。


* セキュリティの観点から、チェーンの正しい実行を強制するために必要なのは 1 つの正直な「validator」だけです。これによりRollupチェーンはイーサリアムのメインチェーンと同じ程度の「trustlessness」となります。Arbitrum は、少なくとも 1 つの正直な「validator」の存在を前提としています。


* Rollupプロトコルは、イーサリアムチェーンとは別に存在するRollupブロックのチェーンであるRollupチェーンに作用します。


* チェーンに追加する新しいブロックを提案するのは「validator」ーの役割です。


* 提案されたすべてのブロックは、最終的にプロトコルによって確認または拒否されます。


* 各ブロックはいくつかのフィールドで構成されており、ブロック番号フィールドを除いて、これらのフィールドのそれぞれに与えられたデータは、ブロックの提案者によって作成されたアサーションであり、正しい場合と正しくない場合があります。アサートされたフィールドのいずれかが正しくない場合、プロトコルは最終的にブロックを拒否します。


* ブロックが提案されると、確認の期限を受け取ります。


* 「validator」がブロックに同意しない場合、彼らは自分自身の正しいブロックを提案する必要があります。これにより、最終的に不正確なブロックで不正が証明されることになったときに、正直な「validator」が何らかの報酬を得ることができます。


ステーキング


* ステーカーがロールアップ ブロックをチェーンに追加するには、追加するブロックにステークを配置する必要があります。


* ステーキングは許可不要で、ステーキングが可能なブロックであれば誰でも賭けることができます。


* ブロックに賭けた後は、そのブロックが確認されるまで賭け金を引き出すことはできません。


* ブロックをステーキングするとき、ブロックが正しいことを確認し、最後に確認されたブロックとステーキングしているブロックの間のチェーン内のすべてのブロックが正しいことを確認します。


* 賭けたブロックが正しくない場合、または最後に確認されたブロックと賭けているブロックの間のチェーン内のブロックが間違っている場合、賭け金は没収されます。


* ブロックに賭けていない場合は、最後に確認されたブロックに賭けることができます。


* ロールアップ ブロックにステークしている場合、ステークしているブロックの後続ブロックまでステークを延長できます。


* 賭けに必要な金額は動的です。


* アービトラム チェーンのパラメーターとして指定された基本ステーク量があり、ほとんどの場合に使用されます。


* 攻撃者がステークを失ってもネットワークの速度を低下させることを防ぐためのセキュリティ対策として、最初の未解決ノードの期限が過ぎたため、ステーク量は時間に対して指数関数的に増加する係数で乗算されます。


* これは、攻撃の間、そのような攻撃のコストを増加させるためです。


* この賭け金の増加は一時的なものであり、チェーンがブロックを確認するための進行が遅い場合にのみ発生します。


チャレンジプロトコル


* 2 人のステーカーが異なるブロックにステークし、一方のブロックが他方のブロックの後継ではない場合、彼らが同意しない特定のブロックがあり、チャレンジが発生します。


* ほとんどのチャレンジは Arbitrum チェーンで発生し、L1 コントラクトによって参照されます。


* チャレンジは、L2 で発生するインタラクティブな複数ラウンドの解剖ゲームと、L1 で実行される 1 ステップの証明で構成されます。


* 係争中のブロックを提案した利害関係者は、反対している利害関係者に対して自分の主張を擁護しています。


* 防御側のステーカーは本質的に、前のブロックから開始することにより、仮想マシンによっていくつかのN個の命令が実行された後、前のブロックの状態が提案されたブロックで指定された状態に進むと主張しています。


* 防御側のステーカー (アリス) は、N 命令をサイズ N/K の K パーツに分解することにより、解剖ゲームの最初の動きを行います。


* サブセクションは、ステップ数に関してサイズが同じではなく、消費される Arbgas の量に関してサイズが同じであることに注意してください。


* また、各セグメントには当然始点と終点があることに注意してください (これは些細なことですが、次のドット ポイントを理解しやすくします)。


* 反対側のステーカー (ボブ) も命令セットをサイズ N/K の K 部分に分割しますが、ボブの K セグメントの 1 つがアリスの対応するセグメントのエンドポイントとは異なるエンドポイントを持つことになります。


* これは本質的に、彼が同意しないセグメントを特定するボブです。


* 次に、ボブはアリスの最初のステップと同じアクションを実行し、セグメントの 1 つをサイズ N/K の K 個のサブセグメントに分割し、識別されたサブセグメントを含むこのセグメントをアリスに送り返します。


* その後、アリスはボブの最初のステップと同じアクションを実行し、エンドポイントと一致しないサブセグメントを特定します。


* この解剖プロセスは、アリスとボブが意見の一致しない単一の指示を特定するまで続きます。


* この命令は、それを実行して紛争の勝者を決定する L1 コントラクトに送信されます。


* 紛争の敗者は賭け金を没収され、その一部は燃やされます - 攻撃者が賭けをヘッジするのを避けるために - そして残りの賭け金は報酬として正直な賭け金に与えられます。


* 解剖プロセス全体の間、ゲームをレフェリーしている L1 コントラクトは、指示自体についての情報を一切知らず、各プレーヤーが解剖ゲームのルールに従っているかどうかをチェックするだけです。


* 紛争中、他のすべてのバリデーターは、紛争が終了する前に、紛争の結果を自分自身で判断できます。つまり、本質的にソフト フォークが発生し、バリデーターが正しいチェーンでロールアップ ブロックを送信し続けることができます。


* チャレンジ期間には、ステーカー 1 人あたり約 1 週間の制限時間が課されます。


* 各ステーカーは、割り当てられた週の範囲内ですべての動きを行わなければなりません。さもないと、論争に負けてしまいます。 チェスの時計を思い浮かべてください。

画像2

チャレンジ プロトコル中に 2 人のステーカーがプレイするマルチラウンドのインタラクティブなダイセクション ゲームのデモンストレーション。実際には、争われているアサーションにはさらに多くの指示 (波線のある行) が含まれているため、より多くのラウンドが再生されますが、原則は同じです。


バリデーター


* バリデーターは、ロールアップ プロトコルのアクティビティを監視し、チェーンの状態を進めることを選択した Arbitrum チェーン上のノードです。


* すべてのノードがバリデーターとして機能するわけではありません。


* Offchain Labs は、バリデーターが積極的、防御的、または監視塔のいずれかの戦略に従うことを期待しています。ただし、これはプロトコルによって強制されません。


* 「アクティブなバリデーター」は、新しいブロックを提案することでチェーンを前進させるために継続的に取り組んでいます。チェーンごとに 1 つの正直なアクティブ バリデーターのみが必要です。アクティブなバリデーターの数を増やしても、チェーンの効率は向上しません。


* 「防御バリデーター」はRollupプロトコルを監視し、不正行為を目撃した場合にのみ行動し、その時点で正しいブロックを提案するか、正しいブロックがすでに提案されている場合はそのブロックに賭けます。


* 「監視塔のバリデーター」は、防御的なバリデーターのようにロールアッププロトコルを監視しますが、不正な行動を目撃した場合、彼らは自分自身で正しいブロックを提案したり賭けたりするのではなく、他のバリデーターにそうするように警告するだけです。


* オフチェーン ラボは、フラグシップの Arbitrum チェーンでアクティブなバリデーターを実行します。


* ほとんどの場合、防御バリデーターと監視塔バリデーターは何もする必要がないため、攻撃者は防御バリデーターがいくつあるかを知ることはありません。


* 誰でもバリデーターになることができますが、バリデーターになることを選択する主要な当事者は、チェーンに投資された重要な資産を持っている当事者、または重要な投資を行っている人によってバリデーターとして雇われた当事者になることが予想されます。


フルノード


* Arbitrum のフル ノードは、イーサリアムのフル ノードと同じ役割を果たします。彼らはチェーンの状態を追跡し、他の人がチェーンと対話できるようにします


* 組み込みの AVM エミュレーターにより、完全なノードは、実際のロールアップ プロトコルの知識がなくても、チェーンを入力からの出力を計算する問題として扱うことができます。


* フルノードはチェーン上のアグリゲーターとして機能し、ユーザーのコスト効率をさらに高めます。


* Arbitrum には、ユーザーから料金を徴収する機能が含まれており、アグリゲーターとして機能している間に発生したコストをフル ノードに補償します。


* フルノードでは、トランザクションを圧縮して、L1 コールデータのコストをさらに削減することもできます。


* フルノードは圧縮されたトランザクションをチェーンの受信ボックスに送信し、arbOS はそれを受け取り、トランザクションを圧縮解除します。


* フル ノードは通常、圧縮と集約の両方を組み込んでいます。つまり、圧縮されたトランザクションのバッチをチェーンの受信ボックスに送信します。
シーケンサーモード


* Arbitrum チェーンが起動されるとき、シーケンサーで起動するオプションがあります。


* シーケンサーは、チェーンの受信ボックス内のトランザクションの順序付けのための追加の特権を持つ完全なノードです。


* これらの権限により、シーケンサーはトランザクションの結果を即座に保証できます。


* Arbitrum チェーンがシーケンサーで起動されると、チェーンの受信ボックスは効果的に 2 つに分割されます。


* 1 つの受信ボックスは、シーケンサーがない場合と同様に動作します。つまり、ノードはブロック番号とタイムスタンプでタグ付けされるメッセージを受信ボックスに送信できます。


* 2 番目の受信トレイはシーケンサーによって制御され、シーケンサーのみがこの受信トレイにメッセージを送信できます。


* シーケンサーがメッセージを受信ボックスに送信するとき、ブロック番号とタイムスタンプを指定して、メッセージにタグを付けることができます。


* これには、指定されたデルタブロックまでの過去のブロック番号とタイムスタンプ、過去のブロック、デルタ秒、過去の秒が含まれます。


* これらのデルタ値は、通常、実時間の約 10 分に対応します。


* これで、arbOS が受信ボックスをチェックすると、通常の受信ボックスまたはシーケンサーの受信ボックスのいずれかの先頭にある最小のブロック番号のメッセージを受信します。


* シーケンサーがブロックをさかのぼってどこまで遡れるかの制限は、イーサリアムでファイナリティを達成するために必要な確認ブロックの数に関係しています。


* イーサリアムでファイナリティを達成するために x ブロックが必要な場合、シーケンサーは x ブロックだけ遡って、現在のトランザクションに先行するトランザクションを正確に認識します。


* Arbitrum チェーンでシーケンサー モードがアクティブ化されている場合、シーケンサーに送信されたトランザクションは、シーケンサーがない場合よりも x ブロック速くファイナリティを達成しますが、通常の受信ボックスに送信されたトランザクションは、存在する場合よりも x ブロック遅くファイナリティを達成します。シーケンサーではありませんでした。


* 即時ファイナリティと 5 分ファイナリティを 5 分および 10 分のファイナリティと比較すると、実質的に大きな違いがあるため、これは正のトレードオフと見なされます。


* ただし、悪意のあるシーケンサーは、これらの権限をある程度悪用することができます。


* 悪意のあるシーケンサーは、ユーザーのトランザクションを単にシーケンサーの受信トレイに含めないことで検閲でき、ユーザーは検閲されていることに気付いた後、通常の受信トレイに同じトランザクションを送信するよう強制します。


* シーケンサーには、ユーザーのトランザクションをフロントランする権限もあります。


* 最初の Arbitrum チェーンは、Offchain Labs によって実行されるシーケンサーで起動します。


* Cornell Tech のチームによる分散型の公平なシーケンサー アルゴリズムの開発に関するいくつかの成功した研究があり、さらにいくつかの作業を行うことで、これが Arbitrum の長期的なソリューションを形成します。




シーケンサーモードが有効/無効の場合のチェーンの受信トレイの違い。

画像3

ArbGas / 料金



* ArbGas は、Arbitrum チェーンの計算コストを測定するために使用されるという点で、イーサリアム ガスと同様に動作します。


* ただし、Arbitrum チェーンに課される ArbGas のハード制限はなく、ArbGas はイーサリアム ガスよりもはるかに高速に消費できます。


* ArbGas の重要な役割は、計算結果の検証にかかる時間の予測可能な測定値を提供することです。


* すべてのロールアップ ブロックには、チェーン内で消費される ArbGas の合計量に関するクレームが含まれています。つまり、現在のブロックのクレームと前のブロックのクレームとの差は、現在のブロックで ArbGas がどれだけ消費されているかを示す有効な指標となるはずです。


* このようにして、ブロックの有効性をチェックしているバリデーターは、ガス制限をこの量に設定することができ、ブロックの最後に到達する前に ArbGas を使い果たした場合、無効なブロックを特定し、チャレンジに成功したと確信できます。それ。


* ユーザーは、トランザクションをチェーンに送信するときに料金を請求されます。


* ユーザーがトランザクションをアグリゲーターに送信した場合、手数料の一部は、発生した費用としてそのアグリゲーターに自動的に支払われます。


* 残りの料金は、チェーンが安全に運営されることを保証するサービスの支払いに使用されるネットワーク料金プールに送信されます。


* L2 トランザクション、L1 コールデータ、計算、およびストレージには料金が発生します。


* 料金はEthで支払われます。


概要


* Arbitrum は、Offchain Labs によって開発された L2 スケーラビリティ ソリューションです。これは、複数ラウンドのインタラクティブなチャレンジ プロトコルを使用する楽観的なロールアップです。


* フラグシップの Arbitrum チェーンは 5 月 28 日に開発者にリリースされ、プロジェクトの定足数に達した時点でユーザーに公開されます。


* ユーザーの観点からは、アービトラム チェーンとの対話は、イーサリアムとの対話と同じ体験になります。



いいなと思ったら応援しよう!