本文へ移動

アカウント抽象化

ERC-4337スマートアカウント、EntryPointのバージョン、UserOperation、バンドラー、ペイマスター、nonceレーン、検証、実行、EIP-7702委任、手数料、リカバリーリスクを通じて、Ethereumのアカウント抽象化を理解します。

更新日

教育目的の参考情報であり、投資助言ではありません。投資により損失が生じる可能性があります。

直接の答え

アカウント抽象化は、アカウントの認可ルールと実行ルールをプログラム可能にします。Ethereumでは、ERC-4337がコンセンサス上のトランザクション種別を変更せずにこれを実現します。ウォレットは専用RPC基盤を通じて UserOperation を送り、バンドラーは一つ以上のオペレーションを特定バージョンの EntryPoint に宛てた通常のトランザクションにまとめ、スマートアカウントが自らのオペレーションを検証して実行します。リカバリー、パスキー、セッションキー、利用限度、バッチ処理、手数料スポンサーは、このフロー上に構築されるアカウントまたはサービスの機能であり、ERC-4337が自動的に保証するものではありません。

これは、コントラクトによるメッセージ署名の検証方法を標準化するERC-1271や、外部所有アカウント(EOA)がコードへ実行を委任できるEIP-7702とは異なります。これらは連携できますが、同一のインターフェース、nonce、デプロイ、安全性モデルを共有しません。アカウント抽象化によって、認証情報、Gasコスト、コントラクトリスクがなくなるわけではなく、正確なチェーンと実装を確認する必要も残ります。

ERC-4337の7ステップ

  1. 環境を固定します。chainId、スマートアカウントの実装とアップグレード管理、ファクトリー、EntryPointのバージョン、アドレス、デプロイ済みコードハッシュ、バンドラーの対応状況、チェーンでEIP-7702が有効かを確認します。あるEntryPointリリースやチェーンで有効なアドレスが、普遍的な定数になるわけではありません。
  2. バージョンに合うオペレーションを作成します。現在の論理フィールドには sendernoncefactoryfactoryDatacallDatacallGasLimitverificationGasLimitpreVerificationGasmaxFeePerGasmaxPriorityFeePerGas、任意のペイマスターフィールド、signature があります。オンチェーンではEntryPointがパック済み表現を受け取ります。ターゲット呼び出しは、汎用ターゲットフィールドではなく、アカウントが定義する callData 内にエンコードされます。
  3. 認可を正しいドメインに結び付けます。userOpHash は署名以外のオペレーションを対象にし、EntryPointとチェーンを結び付けることで、これらのドメインをまたぐ再利用を防ぎます。アカウントの validateUserOp が、所有者、マルチシグ、パスキー、セッション、その他の方針を検証します。ERC-1271の isValidSignature は別個のコントラクト署名インターフェースであり、任意のアグリゲーターは集約署名を検証できます。EIP-7702の認可タプルはUserOperationとは別に渡します。
  4. 手数料負担能力を示します。アカウントはEntryPoint残高から事前資金を用意でき、ペイマスターは自らのデポジットを原資に条件付きで支払責任を引き受けられます。ペイマスターは利用者へのスポンサー、トークンでの請求、許可リストや利用枠の適用、postOp の実行が可能ですが、こうした商業条件はERC-4337では定められていません。ステークとデポジットは別物です。ステークは検証とレピュテーションのルールを支え、デポジットはGasの支払いに使われます。
  5. ERC-7769 RPCで見積もり、送信します。バンドラーは受領時、選定前、バンドル構築時の各段階で検証します。ERC-7562は、検証段階のオペコードとストレージアクセスを制限し、サービス妨害行為に対するレピュテーション管理を支えます。このシミュレーションが確認するのは受け入れ可否と手数料の安全性です。業務上の実行結果を予測するには、別途フルコール・シミュレーションが必要です。
  6. バンドラーが handleOps を呼び出します。EntryPointは実行前に、許可されたデプロイ、アカウントとペイマスターの検証、事前資金の確認、任意の集約を行います。検証に失敗したオペレーションは実行されません。一方、受け入れ後にターゲット呼び出しがリバートし、Gasを消費することはあります。同一アカウントのバッチ内で、呼び出しが原子的にすべてリバートするか、部分成功を許すかは、アカウントの実行コードが決めます。
  7. レシートと状態を照合します。UserOperationレシート、基礎となるバンドルトランザクション、EntryPointイベント、アカウントのデプロイ、ターゲットイベント、実際のGas、トークン請求、返金、最終残高を突き合わせます。その後も、nonceレーン、所有者とリカバリー設定の変更、セッションキー失効、モジュール、実装アップグレード、代替バンドラーとペイマスター、リオーグ、移行またはEIP-7702の再委任を監視します。

4つの計算例

  • 単純化したGas上限。 あるオペレーションが実行Gasに 120,000、アカウント検証Gasに 90,000、ペイマスター検証Gasに 45,000、事前検証Gasに 40,000、ペイマスターの事後処理Gasに 30,000 を割り当てると、合計は 120,000 + 90,000 + 45,000 + 40,000 + 30,000 = 325,000 gas です。maxFeePerGas = 30 gwei なら、単純化した上限は 325,000 × 30 gwei = 0.009750 ETH です。実際の課金対象使用量が 210,000 gas、実効Gas価格が 22 gwei なら、費用は 0.004620 ETH です。EntryPointのバージョン別ルール、未使用Gasペナルティ、L1データ手数料、ロールアップの料金体系によって金額の追加や区分変更があり得るため、これは予算台帳であって普遍的な事前資金算式ではありません。
  • 並列nonceレーン。 192-bit key64-bit sequence を使う場合、キー 7 とシーケンス 42nonce = (7 << 64) | 42 = 129127208515966861354 = 0x7000000000000002a とエンコードされます。正常に取り込まれた後、そのレーンが期待する次のシーケンスは 43 であり、42 の再利用は失敗します。別のキーは独立したシーケンスを持てますが、アカウントロジックとバンドラーのルールに従います。
  • ペイマスターの処理能力。 ペイマスターに 0.50 ETH のデポジットがあり、受け入れるオペレーション1件につき最大 0.03 ETH の保証が必要だとします。floor(0.50 / 0.03) = 16 件を処理でき、0.48 ETH を予約して 0.02 ETH が残ります。17件目にはデポジットの追加または保証額の引き下げが必要です。ペイマスターのステークは、この手数料デポジットの代わりにはなりません。
  • 受け入れ後の実行リバート。 オペレーションが最大 0.0060 ETH を予約し、検証には成功したものの、ターゲット実行が 180,000 gas × 25 gwei = 0.0045 ETH を消費した後にリバートしたとします。ターゲットの状態変更は取り消されますが、アカウントまたはペイマスターは 0.0045 ETH を負担し、未使用の 0.0015 ETH は該当する精算・ペナルティ規則に従います。したがって、バンドラーのシミュレーション成功は、業務上の成功、取り込み、ファイナリティを保証しません。

リスクと管理策

  • チェーン、EntryPointアドレス、リリース、デプロイ済みコードハッシュを誤ると、オペレーションが無効化されたり誤送信されたりします。
  • チェーンまたはEntryPointのドメイン結合が欠けた署名は、リプレイを許すおそれがあります。
  • ファクトリー、カウンターファクチュアルアドレス、初期化データ、デプロイ用ソルトが差し替えられたり誤計算されたりする可能性があります。
  • EIP-7702委任により、EOAが広範なアカウント権限を持つ悪意あるコードや脆弱なコードを参照する可能性があります。
  • 初期化のフロントランニングや再初期化により、アカウントが奪取または破損される可能性があります。
  • プロキシのアップグレードやEIP-7702の再委任が、既存のストレージレイアウトと衝突する可能性があります。
  • アップグレード管理者やモジュール管理者が侵害されると、アカウントの挙動を置き換えられます。
  • 所有者、マルチシグ、パスキー、ERC-1271の検証不備により、盗難が認可されたり資金がロックされたりします。
  • リカバリーの閾値、遅延、ガーディアン、取消経路が機能しない、または乗っ取られる可能性があります。
  • セッションキーが、意図したターゲット、トークン、金額、期間、関数の範囲を超える可能性があります。
  • nonceレーンの衝突、欠番、リプレイ、依存オペレーションの停止が起こり得ます。
  • アグリゲーターの停止や署名集約の不具合により、本来有効なオペレーションが動かなくなる可能性があります。
  • バンドラーは検閲、停止、異なるローカル方針の適用、代替メンプール規則の拒否を行い得ます。
  • 公開UserOperationフローは意図を露出し、フロントランニング、相関分析、MEVを招く可能性があります。
  • 検証後の状態変化により、バンドル構築時点でオペレーションが無効になることがあります。
  • ペイマスターの方針でサービスが拒否される、デポジットが枯渇する、postOp が失敗する可能性があります。
  • トークン建てGas請求には、為替変動、アローワンス、スプレッド、サービス上乗せのリスクがあります。
  • Gasの過小見積もりはリバートを招き、上限の過大設定は予約額やペナルティのエクスポージャーを増やします。
  • アカウントのバッチ仕様が、利用者の期待する原子的リバートではなく部分成功を許す場合があります。
  • ターゲットプロトコルの不具合、悪意あるフロントエンド、チェーンのリオーグ、弱いファイナリティは、アカウント抽象化の範囲外です。

よくある誤解

  • 「アカウント抽象化で秘密鍵が不要になる。」変更されるのはプログラム可能な認証方針であり、操作を認可する何らかの認証情報は依然必要です。
  • 「ペイマスターがあればGasは無料になる。」ネイティブGasは支払われ、最終的には利用者、スポンサー、サービスのいずれかが費用を負担します。
  • 「バンドラーのシミュレーションで成功が保証される。」受け入れシミュレーションは、実行、取り込み、ファイナリティを保証しません。
  • 「ERC-1271、ERC-4337、EIP-7702は同じインターフェースである。」それぞれ署名、トランザクションフロー、委任という異なる課題を扱います。
  • 「すべてのチェーン、ウォレット、EntryPointは互換性があり、より安全である。」対応状況、バージョン、デプロイ、コード、モジュール、管理策を個別に確認する必要があります。

関連トピック

出典

ナビゲーション

Wiki を検索...