*原題:Exploring Eclipse's Canonical Ethereum Bridge and Proving System
Eclipse は 3 つのレイヤーで構成されています。
以下の図は、これらのモジュールがどのように相互作用するかを示しています。
この記事の残りの部分では、図に示すように、Eclipseのイーサリアムブリッジに焦点を当てます。 Blobstream は、Celestia のバリデーター セットによって署名された証明を中継し、Eclipse のスロットのバッチのデータが正しく公開されたことを Ethereum に証明します。 これにより、Eclipseのブリッジは、Celestiaからの署名されたデータルートに対して、不正防止のために提供されたデータを検証できます。 このセクションの残りの部分では、次のプロセスの概要を説明します。
ユーザーがネイティブのイーサリアムブリッジを介してEclipseに入金するときの流れは、次のように要約されます。
下の図は、上記の入金フロー中のEthereum、Celestia、SVM Executor間の相互作用を示しています。
EclipseのスロットのバッチをデータBLOBとしてCelestiaに公開するフローを以下にまとめます。
以下のCelestiaの図は、特定のCelestiaブロック内のデータのコミットメントがブロックヘッダーにどのように格納されるかを示しています。
不正証明を使用する他のL2(Arbitrum、Fuelなど)と同様に、Eclipseからの引き出しには、無効な状態遷移の場合に検証者が不正証明を提出できるチャレンジ期間が必要です。
この最後のセクションでは、 Anatoly Yakovenko 氏と John Adler氏に触発されたEclipseの不正防止システム設計について詳しく説明します。 一般に、不正の証拠のために、検証者は次のことを行う必要があります。
Eclipseの場合、(1)Celestiaは、EclipseのSVMエグゼキュータが投稿するブロックのバッチのブロブをマークリゼーションし、Merklewitnessを介してトランザクションの包含証明を可能にします。 (2)については、マークルルートをグローバルステートツリーにポストするEVMベースのL2とは異なり、パフォーマンス上の理由から、Eclipseはトランザクションごとにグローバルステートツリーを更新しませんが、入力の正確性を保証する方法を以下で詳しく説明します。 最後に、(3)の場合、Eclipseのベリファイアは、EVMベースのL2で一般的な インタラクティブな検証ゲームのアプローチ とは異なり、特定のトランザクションの出力のzkプルーフを生成します。
すべてのEclipseトランザクションは、入力アカウントのリストを取得し、トランザクションを実行し、結果の出力アカウントのリストを生成するものとして表すことができます。
当社の不正防止設計における重要な観察は、トランザクションの実行のためには、S_InputAccountが以前のトランザクションのS_OutputAccountでなければならないということです。 これにより、グローバルステートツリーにマークルの証人を提供する代わりに、特定のインプットアカウントを生成したチェーン内の最後のトランザクションを参照することができます。 設計の結果として、前のトランザクションへの参照が有効でなかったり、入力アカウントが後のトランザクションですでに「使用」されていたりするなど、追加の不正告発タイプが導入されています。 このプロセスについて、以下で詳しく説明します。
さらに、Celestiaに投稿されたトランザクションデータのバッチは、そのコミットメントがイーサリアムコントラクトに中継されます。 コミットメントは以下で構成されます。
上記で説明したように、バッチが正しくないことがわかる方法はいくつかあります。
コミットメント・バッチが不正確であることが判明した場合、Eclipse ブリッジ・コントラクトは、ブリッジを最後の証明可能な正しいバッチ・コミットメントのブリッジにロールバックします。 不正の場合でも、トランザクションはチェーンから削除されないため、再計算する必要があるのはコミットメントのみであることに注意してください。
この記事は、イーサリアム上のEclipseの信頼最小化ブリッジの概要ガイドを提供し、不正防止設計の詳細を説明することを目的としています。 L2のモジュール性とテクノロジースタックの初期段階を考えると、今後数週間のうちにEclipseのさまざまな側面に関する記事やドキュメントをリリースし続ける予定です。
Eclipse Testnetに参加するには、 こちらの指示に従ってください。 TwitterまたはDiscordで、テストネット、ブリッジ、または技術的な質問に関する具体的な質問をすることができます。
[1]: SVM トランザクションの結果を計算し、最終的な出力を Eclipse の新しい状態に適用するノード
[2]: イーサリアムとエクリプスの間でオンチェーンイベントを渡すオペレーター
[3]: シーケンサーではなく、エグゼキューターがこれをポストすることに注意してください。 シーケンサーによって投稿されたデータに含まれていると、シーケンサーがカウントをスキップして、エグゼキューターが正しくジョブを実行できなくなるという複雑さが加わります。 これは、不正防止設計で補うことができますが、複雑さが増します。 エグゼキューターのみがカウントをポストすることの2つ目の利点は、必要に応じてトランザクションのオーバーライドをCelestiaにポストすることを容易にすることです。
[4]: SVM アカウントは一意のハッシュで表すことができます。 このハッシュを変更する唯一の方法は、トランザクションを使用することです。
[5]: 過度なハッシュ化を行わずにこれを行うために、実行された各プログラムに対してトレースを実行して、使用されている各 sysvar のどの部分が実際にアクセスされているかを確認します。 これは可能ですが、SolanaのBPFインタプリタを変更する必要があります。
[6]: これには、実行に失敗したトランザクションのデータが含まれます。
*原題:Exploring Eclipse's Canonical Ethereum Bridge and Proving System
Eclipse は 3 つのレイヤーで構成されています。
以下の図は、これらのモジュールがどのように相互作用するかを示しています。
この記事の残りの部分では、図に示すように、Eclipseのイーサリアムブリッジに焦点を当てます。 Blobstream は、Celestia のバリデーター セットによって署名された証明を中継し、Eclipse のスロットのバッチのデータが正しく公開されたことを Ethereum に証明します。 これにより、Eclipseのブリッジは、Celestiaからの署名されたデータルートに対して、不正防止のために提供されたデータを検証できます。 このセクションの残りの部分では、次のプロセスの概要を説明します。
ユーザーがネイティブのイーサリアムブリッジを介してEclipseに入金するときの流れは、次のように要約されます。
下の図は、上記の入金フロー中のEthereum、Celestia、SVM Executor間の相互作用を示しています。
EclipseのスロットのバッチをデータBLOBとしてCelestiaに公開するフローを以下にまとめます。
以下のCelestiaの図は、特定のCelestiaブロック内のデータのコミットメントがブロックヘッダーにどのように格納されるかを示しています。
不正証明を使用する他のL2(Arbitrum、Fuelなど)と同様に、Eclipseからの引き出しには、無効な状態遷移の場合に検証者が不正証明を提出できるチャレンジ期間が必要です。
この最後のセクションでは、 Anatoly Yakovenko 氏と John Adler氏に触発されたEclipseの不正防止システム設計について詳しく説明します。 一般に、不正の証拠のために、検証者は次のことを行う必要があります。
Eclipseの場合、(1)Celestiaは、EclipseのSVMエグゼキュータが投稿するブロックのバッチのブロブをマークリゼーションし、Merklewitnessを介してトランザクションの包含証明を可能にします。 (2)については、マークルルートをグローバルステートツリーにポストするEVMベースのL2とは異なり、パフォーマンス上の理由から、Eclipseはトランザクションごとにグローバルステートツリーを更新しませんが、入力の正確性を保証する方法を以下で詳しく説明します。 最後に、(3)の場合、Eclipseのベリファイアは、EVMベースのL2で一般的な インタラクティブな検証ゲームのアプローチ とは異なり、特定のトランザクションの出力のzkプルーフを生成します。
すべてのEclipseトランザクションは、入力アカウントのリストを取得し、トランザクションを実行し、結果の出力アカウントのリストを生成するものとして表すことができます。
当社の不正防止設計における重要な観察は、トランザクションの実行のためには、S_InputAccountが以前のトランザクションのS_OutputAccountでなければならないということです。 これにより、グローバルステートツリーにマークルの証人を提供する代わりに、特定のインプットアカウントを生成したチェーン内の最後のトランザクションを参照することができます。 設計の結果として、前のトランザクションへの参照が有効でなかったり、入力アカウントが後のトランザクションですでに「使用」されていたりするなど、追加の不正告発タイプが導入されています。 このプロセスについて、以下で詳しく説明します。
さらに、Celestiaに投稿されたトランザクションデータのバッチは、そのコミットメントがイーサリアムコントラクトに中継されます。 コミットメントは以下で構成されます。
上記で説明したように、バッチが正しくないことがわかる方法はいくつかあります。
コミットメント・バッチが不正確であることが判明した場合、Eclipse ブリッジ・コントラクトは、ブリッジを最後の証明可能な正しいバッチ・コミットメントのブリッジにロールバックします。 不正の場合でも、トランザクションはチェーンから削除されないため、再計算する必要があるのはコミットメントのみであることに注意してください。
この記事は、イーサリアム上のEclipseの信頼最小化ブリッジの概要ガイドを提供し、不正防止設計の詳細を説明することを目的としています。 L2のモジュール性とテクノロジースタックの初期段階を考えると、今後数週間のうちにEclipseのさまざまな側面に関する記事やドキュメントをリリースし続ける予定です。
Eclipse Testnetに参加するには、 こちらの指示に従ってください。 TwitterまたはDiscordで、テストネット、ブリッジ、または技術的な質問に関する具体的な質問をすることができます。
[1]: SVM トランザクションの結果を計算し、最終的な出力を Eclipse の新しい状態に適用するノード
[2]: イーサリアムとエクリプスの間でオンチェーンイベントを渡すオペレーター
[3]: シーケンサーではなく、エグゼキューターがこれをポストすることに注意してください。 シーケンサーによって投稿されたデータに含まれていると、シーケンサーがカウントをスキップして、エグゼキューターが正しくジョブを実行できなくなるという複雑さが加わります。 これは、不正防止設計で補うことができますが、複雑さが増します。 エグゼキューターのみがカウントをポストすることの2つ目の利点は、必要に応じてトランザクションのオーバーライドをCelestiaにポストすることを容易にすることです。
[4]: SVM アカウントは一意のハッシュで表すことができます。 このハッシュを変更する唯一の方法は、トランザクションを使用することです。
[5]: 過度なハッシュ化を行わずにこれを行うために、実行された各プログラムに対してトレースを実行して、使用されている各 sysvar のどの部分が実際にアクセスされているかを確認します。 これは可能ですが、SolanaのBPFインタプリタを変更する必要があります。
[6]: これには、実行に失敗したトランザクションのデータが含まれます。