マルチチェーンアカウントの抽象化の比較: ERC-4337とネイティブAAの重要な違い

マルチチェーンアカウントの抽象化解析:暗号化インフラストラクチャの未来の方向

2024年7月8日至11日,イーサリアムコミュニティ会議(EthCC)がベルギーのブリュッセルで開催されます。これはヨーロッパ最大のイーサリアム年次イベントで、技術とコミュニティに焦点を当てています。

本回イーサリアムコミュニティ会議(EthCC 7)では、350人以上のブロックチェーン業界の第一線の意見リーダーが講演を行いました。その中で、一人の開発者が招待され、テーマ「未来の明らかにする: マルチチェーンアカウントの抽象化解析」に関する講演を行いました。

プレゼンテーションの簡単な事実:

  • アカウントの抽象化(AA)は主に2つの重要なポイントを含みます: サインの抽象化と支払いの抽象化。サインの抽象化はユーザーが好きな検証メカニズムを選択できるようにし、支払いの抽象化は多様な取引支払いオプションの使用を許可します。この柔軟性はより安全で、より優れたユーザー体験を提供します。

  • ERC-4337とネイティブAAでは、「検証」段階のエントリーポイント関数は固定されていますが、「実行」段階ではネイティブAAのエントリーポイントのみが固定されています。トランザクションの検証制限とトランザクションの実行手順は、異なる実装においてそれぞれの特徴と制限があります。

  • EVM互換チェーン上でERC-4337を実装する際、2つの重要な違いがあります: ロールアップ設計におけるプロトコルの違いとアドレス計算方法の違いがあり、L1とL2の間でERC-4337を実装する際に注意が必要な開発の詳細が生じます。

以下はスピーチの全文です:

皆さん、こんにちは。今日はERC-4337とネイティブAAの概念について紹介し、それらの違いを議論し、L1とL2の4337標準の主な違いを重点的に分析します。

アカウントの抽象化の紹介

1. アカウントの抽象化とは何ですか

アカウントの抽象化(AA)は主に2つの重要なポイントを含みます: サインの抽象化と支払いの抽象化。

  • サインの抽象化: ユーザーは、特定のデジタル署名アルゴリズム(に限定されず、任意の好きな検証メカニズムを選択できます、例えばECDSA)。
  • 支払いの抽象化:ユーザーは、ERC-20資産をネイティブ資産の支払いの代わりに使用するなど、さまざまな取引支払いオプションを利用できるか、または第三者が取引をスポンサーすることができます。

この柔軟性は、より安全で優れたユーザーエクスペリエンスを提供します。アカウントの抽象化の目標は、さまざまな方法でこの2つの重要なポイントを実現することです。

! 暗号インフラストラクチャの未来は? マルチチェーンアカウントの抄録解析

2. ERC-4337とは何ですか

現在、イーサリアムプロトコルの外部所有アカウント(EOA)には、固定された署名方法や支払いの設計などいくつかの制限があります。ERC-4337は、より柔軟なアカウント管理と取引処理方法を導入することによって、これらの問題を解決します。

  • userOp 構造体: ERC-4337 では、ユーザーが userOp 構造体を Bundler に送信します。 Bundler は複数の userOps を収集し、handleOps 関数を呼び出して EntryPoint コントラクトに送信します。
  • EntryPointコントラクト:このコントラクトはオペレーティングシステムのように取引を処理し、主な機能は次のとおりです:
    • アカウント契約のvalidate関数を呼び出し、userOpがアカウントの所有者の承認を得ていることを確認します。
    • 手数料を徴収する。
    • アカウント契約のexecute関数を呼び出し、userOpの目標操作を実行します。

3. ネイティブAAとは何ですか

イーサリアムでは、アカウントはEOAとコントラクトアカウントに分かれています。しかし、ネイティブAAでは、各アカウントがコントラクトであり、取引処理メカニズムがブロックチェーンプロトコルに直接組み込まれています。

各ブロックチェーンネットワークにおけるAA設計:

  • ERC-4337 アカウントの抽象化: Ethereum、Arbitrum、Optimism、Base、Linea、Scroll、Polygon PoS
  • ネイティブアカウントの抽象化はERC-4337に従います:StarkNet & zkSync時代
  • プライバシーデザインのネイティブアカウントの抽象化:Aztec

アステカネイティブAAまたはEIP-3074またはEIP-7702に興味がある場合、今日はERC-4337の後のネイティブAAに焦点を当てます。

ERC-4337とネイティブAAの違い

1. オペレーティングシステムの役割

AA OSは以下の質問に答える必要があります:

  • 誰がGas価格を決定しますか?
  • 誰が取引の順序を決定しますか?メモリプールはどこですか?
  • 誰がエントリーポイント関数をトリガーしましたか?
  • 取引処理のプロセスを決定するものは何ですか?

ERC-4337 では、これらのロールは Bundler と EntryPoint コントラクトを通じて協力して行われます。

ネイティブAAでは、ユーザーはそのuserOpsを公式サーバーのオペレーター/ソート者に送信します。BundlerやEntryPoint Contractではありません。

StarkNetでは、Sequencerがこれらすべてのタスクを処理します。

zkSyncにおけるEraと他のAA実装の主な違いは、Operatorがbootloader(システム契約)と連携して作業する必要があることです。Bootloaderは新しいブロックを開き、そのパラメータ(を定義し、ブロックパラメータや他のGasパラメータ)を含み、Operatorからの取引を受け取って検証します。

! 暗号インフラストラクチャの未来は? マルチチェーンアカウントの抽象解析

2. コントラクトインターフェース

3つのステップが存在するため、アカウント契約インターフェースは異なる実装で類似しており、これらのエントリポイント関数はAA OSによってのみ呼び出すことができます:

  • ERC-4337:ユーザー アクションの認証
  • zkSync:トランザクションの検証、トランザクションの支払い、トランザクションの実行
  • StarkNet:実行、検証、validate_declare、validate_deploy

ERC-4337とネイティブAAにおいて、"検証"ステージのエントリーポイント関数は固定されていますが、"実行"ステージでは、ネイティブAAのエントリーポイントのみが固定されています。

3. 検証ステップの制限

コスト制限がないため、(本質的に、取引の検証はビューファンクションの呼び出し)であり、攻撃者はメモリプールに対してDoS攻撃を行うことができ、バンドル器(EIP-4337)や演算子/ソート器(のネイティブAA)を破壊することができます。

EIP-4337は、禁止されているオペコードとストレージアクセスの制限方法を定義しています。zkSync Eraは、一部のOpCodeの使用を緩和しました:

  • コントラクトのロジックは自分のストレージスロットにしかアクセスできません。アカウントコントラクトのアドレスがアドレスAの場合、アクセスできるのは:
    • アドレスAに属するストレージスロット
    • 他のアドレスAに属するストレージスロット
    • 他のアドレスに属するストレージスロットkeccak256 (A || X): これは、アドレスをマッピングのキー(として直接使用することを意味します。たとえば、マッピング (address => value) )は、スロットkeccak256 (A || X)にアクセスするのと同等です。たとえば、ERC-20コントラクト内の資産残高。
  • コントラクトロジックはグローバル変数にアクセスできません。例えばブロック番号。StarkNetは外部コントラクトの呼び出しも許可していません。

4. 実行ステップの制限

zkSyncでは、システムコールを実行するには、システムフラグの存在を確認する必要があります。たとえば、nonceを増やす唯一の方法はNonceHolderと対話することであり、契約を展開するにはContractDeployerと対話する必要があります。システムフラグは、アカウント開発者が意識的にシステム契約と対話することを保証します。

ERC-4337とStarkNetでは、実行フェーズに特別な制限はありません。

5. ランダム数

  • ERC-4337では、エントリーポイントの乱数の設計により、192ビットのキー値と64ビットの乱数値が区別されています。
  • zkSyncにおいて、NonceHolderシステムコントラクトはnonceを管理し、厳密に増加することを保証します。すなわち、ランダム数を1増加させます。
  • StarkNetでは、nonceも厳密に増加しますが、特定のコントラクトによって管理される抽象nonceはありません。

6. 最初のトランザクションを使用してデプロイします

  • ERC-4337はuserOp構造の中にinitcodeフィールドを含み、最初のuserOpで送信者(アカウントコントラクト)をデプロイします。
  • StarkNetとzkSyncでは、ユーザーはアカウント契約を展開するために、最初の取引をオペレーター/ソートナーに送信しなければなりません。

7. zkSyncの特別なデザイン

もしあなたがETHをEthereum EOAからzkSyncに直接移動させると、カスタムアカウント契約をデプロイする必要がなく、同じアドレスを持つデフォルトアカウントを受け取ります。このアカウントはEthereum EOAのように機能し、対応するEthereum EOAの秘密鍵によって制御されます。

このアカウントタイプはバージョンNoneであり、version1ではありません。DefaultAccountの関数を呼び出すことはできません。なぜなら、それはカーネル空間にコードを展開していないからです。

L1の4337とL2の4337の違い

EVM互換チェーン上でERC-4337を実装するには、二つの重要な違いがあります: プロトコルの違いとアドレスの違い。

1. プロトコルの違い

Rollup設計において、L2は安全性と決済のためにデータをL1にアップロードする必要があります。ERC-4337の文脈では、このアップロードプロセスに関連する費用、例えばL1の安全費用やblob費用は、プレ検証Gasに含めるべきです。プレ検証Gasにおける適切なアップロード費用を決定することは大きな課題です。

2. アドレスの違い

zkSync ERAのcreate関数におけるアドレスエンコーディング方式は、EthereumやOPの集約とは異なります。また、StarkNetはアドレス計算に独自のハッシュ関数を使用しています。EVM互換チェーンにおけるERC-4337の文脈では、通常、各チェーンでのアドレス計算が一貫していると仮定されます。しかし、EthereumとL2のERC-4337実装間でアカウントコントラクトアドレスが異なる可能性がある注意すべき詳細があります。

重要な問題は、ハードフォークに新しいオペコードを追加することです。例えば、L2チェーンが上海のハードフォークをサポートしておらず、コンパイル時にEVMバージョンが指定されていない場合、push0の導入はバイトコードの変更を引き起こします。たとえSolidityコードが同じであっても。

! 暗号インフラストラクチャの未来は? マルチチェーンアカウントの抄録解析

まとめ

以上は、アカウントの抽象化に関するいくつかの核心的な概念と実装の違いです。異なるチェーン上のアカウントの抽象化の実装は共通の目標を持っていますが、具体的な詳細には多くの違いがあります。これらの違いは、各チェーンの設計と最適化における独自の考慮を反映しており、開発者やユーザーにより多くの選択肢を提供します。今後、技術の進歩に伴い、より革新的なアカウントの抽象化の実装が見られることを期待しており、ブロックチェーンエコシステムにより良いユーザー体験とより強力な機能をもたらすことを願っています。

! 暗号インフラストラクチャの未来は? マルチチェーンアカウントの抄録解析

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 6
  • リポスト
  • 共有
コメント
0/400
HashBanditvip
· 07-25 01:52
うーん…また別のAAハイプトレインがやって来る。正直なところ、私のマイニング時代にはこんな派手なものは必要なかった、ただの純粋なハッシュパワーと利益だけだった。
原文表示返信0
MaticHoleFillervip
· 07-22 02:32
ダックはまだブロックチェーンに参加していません。
原文表示返信0
TokenUnlockervip
· 07-22 02:32
ネイティブAA無敵
原文表示返信0
Anon4461vip
· 07-22 02:29
aaインフラは本当の大きなトレンドです
原文表示返信0
RooftopReservervip
· 07-22 02:25
AA技術の新しい初心者人をカモにするツール?
原文表示返信0
WagmiWarriorvip
· 07-22 02:13
派手なことはやめて、インフラを整備すればいい。
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)