コンテンツへスキップ
0%

アカウントアブストラクションとは? ERC-4337を解説

Alchemy team headshot

執筆者 Alchemy

2026年10月19日 公開読了時間 1 分

アカウントアブストラクション(account abstraction)は、1つの秘密鍵の代わりに、スマートコントラクトをアカウントとして機能させる仕組みです。アカウントは、署名、ガスの支払い、呼び出しの実行について独自のルールを定められます。ERC-4337は、プロトコルを変更せずに、EthereumなどのEVMチェーンでこれを実現する標準です。

現在、ほとんどのEthereumユーザーは外部所有アカウント(EOA)を使っています。EOAは1つの秘密鍵で管理され、1つの方式で署名し、何かを実行する前にETHが必要です。鍵を失えば、アカウントも失います。アカウントアブストラクションは、こうした制限を取り除きます。実現する標準は2つあります。独自のアドレスを持つスマートアカウント向けのERC-4337と、既存のEOAをその場でアップグレードするEIP-7702です。この2つは連携して動作します。

アカウントアブストラクションとは?

アカウントアブストラクションとは、アカウントのルールをプロトコルではなくコードに持たせることです。標準的なEOAは固定のルールに従います。ECDSA署名が1つ、nonceが1つ、ガスは送信者がETHで支払います。アカウントアブストラクションでは、スマートアカウント(ERC-4337の仕様ではsmart contract accountと呼びます)が独自の検証ロジックを定義します。

ERC-4337の仕様は、この考え方を「各アカウントがスマートコントラクトのコードとして実行される独自の検証ロジックを提供でき、プロトコルは最小限の制約だけを課すモデル」と説明しています。

この1つの変更によって、EOAでは提供できない機能が使えるようになります。

  • ガスのスポンサー。アプリが手数料を支払うので、新規ユーザーはETHが不要です。
  • トークンでのガス支払い。ユーザーはUSDCなどのERC-20で支払えます。
  • バッチ処理。複数の呼び出しを1つのアトミックな操作としてまとめて実行します。
  • セッションキー。アプリやエージェントに、期限付きで範囲を絞った権限を与えます。
  • パスキーなどの署名手段。ユーザーはシードフレーズが不要になります。
  • カスタムリカバリー。アカウント自身のルールで、アクセスの回復方法を決めます。

ERC-4337とは?

ERC-4337は、コンセンサスレイヤーの変更を必要としない、アカウントアブストラクションのためのEthereum標準です。Vitalik Buterinと共著者が2021年に提案し、EntryPointコントラクトは2023年3月1日にEthereumメインネットで稼働を開始しました。

以前の提案はEthereumのコアプロトコルを変更するものでした。ERC-4337はそれを避けます。UserOperationという疑似トランザクション、それらのための別のmempool、EntryPointというシングルトンコントラクトを追加します。すべてがコンセンサスレイヤーの上に置かれるため、EntryPointがデプロイされているEVMチェーンならどこでも動作します。

仕様の目標の1つは、ユーザーがEOAを持たなくてもよくすることです。スマートアカウントはパスキーなど任意の方式で署名でき、トランザクションを送信するためにEOAが必要なのはBundlerだけです。

ERC-4337はどのように動作するのか?

ERC-4337のトランザクションは5つのステップで進みます。

  1. ユーザーがUserOperationに署名します。何を有効な署名とみなすかは、スマートアカウントが決めます。
  2. アプリがeth_sendUserOperationでBundlerに送信します。
  3. Bundlerがシミュレーションを行い、他のUserOperationと一緒にまとめ、EntryPointのhandleOpsを呼び出すトランザクションを1つ送信します。
  4. EntryPointがスマートアカウントのvalidateUserOpを呼び出します。Paymasterが関わる場合はvalidatePaymasterUserOpも呼び出します。誰かがガスを負担できることを確認します。
  5. EntryPointがスマートアカウントを呼び出して要求された操作を実行し、その後Bundlerに払い戻します。
ERC-4337のアカウントアブストラクションのフロー図:UserOperation、Bundler、EntryPoint、Paymaster

UserOperationとは?

UserOperationは、ユーザーが行いたい操作を記述する疑似トランザクションオブジェクトです。送信者(スマートアカウント)、nonce、呼び出しデータ、ガス上限と手数料フィールド、署名、任意のPaymasterフィールドを含みます。通常のトランザクションと違い、署名はアカウント自身のコードが検証します。複数の命令を含めることもできます。フィールドの完全な一覧はUserOperationのガイドをご覧ください。

Bundlerは何をするのか?

Bundlerは、UserOperationのmempoolを監視し、各操作をシミュレーションして、有効なものを1つのオンチェーントランザクションにまとめるオフチェーンのサービスです。ガスを先に支払い、EntryPointが後から払い戻します。ERC-4337でEOAを保有する必要があるのは、Bundlerだけです。仕組みと競争の様子はBundlerとはをご覧ください。

EntryPointコントラクトは何をするのか?

EntryPointは、すべてのアカウントとBundlerが信頼するシングルトンのスマートコントラクトです。各UserOperationを2つのフェーズで実行します。検証フェーズでは署名を確認し、資金があることを確かめます。実行フェーズでは呼び出しを実行し、Bundlerに払い戻します。共有された監査済みのコントラクトが1つあることで、全員に同じルールが適用されます。

Paymasterは何をするのか?

Paymasterは、UserOperationのガスを支払う任意のコントラクトです。アプリが手数料をスポンサーしたり、ユーザーがETHの代わりにERC-20トークンで支払ったりできるようにします。EntryPointは、操作を実行する前にPaymasterへ承認を求めます。種類とセキュリティ上のトレードオフはPaymasterとはをご覧ください。

Aggregatorは何をするのか?

Aggregatorは、多数のUserOperationに対する1つの集約署名をまとめて検証する任意のコントラクトです。バンドルが多数の署名ではなく1つの署名を持つため、calldataを節約でき、特にロールアップで効果があります。Aggregatorは最適化です。ほとんどのアカウントには必要ありません。

どのEntryPointバージョンを使うべきか?

EntryPointには複数のリリース済みバージョンがあります。それぞれが独自のアドレスを持つ別のコントラクトで、スマートアカウントは1つのバージョン向けに作られます。

  • v0.6: 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
  • v0.7: 0x0000000071727De22E5E9d8BAf0edAc6f37da032
  • v0.8: 0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108。EIP-7702をネイティブにサポートします

eth-infinitismのリリースノートにはv0.9も載っています。v0.9はpaymasterSignatureを追加し、Paymasterが並列で署名できるようにします。当社のホスト型Bundler APIはv0.6、v0.7、v0.8をサポートします。正確な一覧は、チェーン上でeth_supportedEntryPointsを呼び出して確認してください。新しいアカウントはv0.7またはv0.8で構築してください。Bundler FAQによると、v0.6のサポートは廃止が予定されています。

EIP-7702とは?

EIP-7702は、EOAが自分自身にコードを設定できるようにするプロトコルの変更です。2025年5月7日のPectraアップグレードでEthereumメインネットに導入されました。

署名済みの認可のリストを運ぶ、新しいトランザクションタイプ0x04が加わります。各認可は、0xef0100の後にコントラクトアドレスが続く委任インジケーターを、アカウントのコードに書き込みます。以降、そのEOAへの呼び出しは、そのアドレスのコードを実行します。

委任は永続的です。アカウントが新しい認可に署名するまで続き、ゼロアドレスへ委任すると解除されます。EOAのアドレス、残高、鍵はそのまま保たれます。そのコードはアカウント自身の残高とストレージで実行されるため、監査済みのコントラクトコードにのみ委任してください。詳しくはEIP-7702の解説をご覧ください。

ERC-4337とEIP-7702の違いは何か?

ERC-4337は、mempool、Bundler、Paymasterとともに、スマートアカウントを独自のアドレスで動かします。EIP-7702は、既存のアドレスをその場でアップグレードします。両者は競合しません。EIP-7702はアカウントが何になれるかを変え、ERC-4337はその操作を送信しスポンサーするためのインフラを提供します。

項目
通常のEOA
ERC-4337のスマートアカウント
EIP-7702で委任したEOA
アドレス
1つの鍵から導出
新しいコントラクトアドレス
既存のアドレスを維持
アカウントのコード
なし
smart contract account
コントラクトのコードに委任
プロトコルの変更
該当なし
なし
あり(2025年5月のPectra)
送信方法
通常のトランザクション
Bundler経由のUserOperation
タイプ0x04のトランザクション、またはeip7702Authを含むUserOperation
署名のルール
ECDSA鍵が1つ
アカウントが定義する任意のロジック
委任先のコントラクトが定め、EOAの鍵も引き続き使える
ガスのスポンサー
不可
可能(Paymasterまたはスポンサーポリシー経由)
可能(リレイヤー、Bundler、またはPaymaster経由)
EOAの鍵が必要か
必要
不要
必要

2つの標準は直接つながっています。ERC-4337の仕様はEIP-7702の認可をサポートしています。UserOperationにeip7702Authフィールドを含めることができ、Bundlerはその認可を、自身が送信するトランザクションのauthorizationListに追加します。EntryPoint v0.8は、委任もUserOperationのハッシュに含めます。そのため、委任されたEOAも、他のスマートアカウントと同様にBundlerとPaymasterを使えます。

ユーザーがすでにEOAのアドレス、残高、履歴を持っていて、それを維持したい場合は、EIP-7702を選びます。アカウントが1つのECDSA鍵に依存すべきでない場合(パスキーのみのアカウントなど)や、そのチェーンでEIP-7702が有効になっていない場合は、独立したERC-4337のスマートアカウントを選びます。

モジュール式スマートアカウントとは?

モジュール式スマートアカウントは、機能を1つの固定されたコントラクトではなく、モジュールに分割します。検証モジュールは、誰が署名できるかを決めます(パスキーやセッションキーなど)。実行モジュールは新しい操作を追加します。フックは、支出上限などのチェックを追加します。アカウントのアドレスを変えずに、モジュールを追加・削除できます。

モジュールの接続方法を定義するERC標準は2つあります。ERC-6900の「Modular Smart Contract Accounts」と、ERC-7579の「Minimal Modular Smart Accounts」です。どちらもERC-4337の上に構築されています。当社のModular Account v2はERC-6900に準拠しています。

アカウントアブストラクションで何を作れるか?

アカウントアブストラクションは、オンチェーンアプリを新規ユーザーにとって難しくしている手順を取り除きます。

  • ガス不要のオンボーディング。新規ユーザーはETHなしで始められ、最初のトランザクションをアプリがスポンサーします。
  • ステーブルコインでのガス支払い。ユーザーはすでに持っているトークンで手数料を支払えます。
  • ワンクリックのフロー。承認とスワップを1つのアトミックなバッチとして実行するため、失敗したら両方が元に戻ります。
  • ゲームとエージェント。セッションキーにより、ゲームやAIエージェントは、アカウント全体へのアクセスなしに、設定した範囲内で動作できます。
  • パスキーアカウント。ユーザーはデバイスのパスキーでサインインし、シードフレーズを扱う必要がありません。
  • リカバリー。アカウントにガーディアンなどのルールを追加して、アクセスを回復できます。

AlchemyはどのようにAccount Abstractionをサポートしているか?

当社はERC-4337とEIP-7702の両方のインフラを運用しているため、新規のスマートアカウントと既存のEOAに、1つのフローで対応できます。

Bundler

当社のBundlerは、オープンソースのRust製BundlerであるRundler上に構築された、ホスト型のERC-4337 Bundler APIです。EntryPoint v0.6、v0.7、v0.8をサポートします。必要なチェーンはチェーン別の機能サポートで確認してください。

Gas Manager

Gas Managerは、ポリシーで定めたルールに従って、アプリがユーザーのガスを支払えるようにします。おすすめは、Bundler Sponsored OperationsによるGas Sponsorshipです。ヘッダーにポリシーIDを渡すだけで、Paymasterフィールドは不要です。ERC-20でのガス支払いが必要な場合や、フローにPaymasterが必要な場合は、Onchain Paymasterを使います。プランと上限はGas Manager FAQをご覧ください。

Modular Account v2

Modular Account v2は、当社が推奨するスマートアカウントです。ERC-6900に準拠し、ChainLightとQuantstampによる監査を受けています。モジュールを通じて、セッションキー、パスキー、許可リスト、支出上限、有効期限をサポートします。

Wallet APIs

Wallet APIsは、その上に位置するトランザクションレイヤーです。スポンサー、バッチ処理、リトライ、セッションキーを備えて、スマートアカウントから呼び出しを送信します。署名者は、Privy、Turnkey、viem互換の任意の署名者など、お好きなものを持ち込めます。

EIP-7702のサポート

Wallet APIsはEIP-7702もサポートしています。新しいEIP-7702アカウントは、デフォルトでModular Account v2に委任されるため、EOAは新しいアドレスなしで、同じバッチ処理、スポンサー、セッションキーを利用できます。

構築を始める準備はできましたか?まずWallet APIsのドキュメントを読み、Gas Managerで最初のトランザクションをスポンサーし、当社のBundlerでUserOperationを送信しましょう。

過去の提案はどのようにERC-4337につながったのか?

開発者たちは、ERC-4337よりずっと前からアカウントアブストラクションを実現しようとしてきました。

  • 2020年のEIP-2938は、コンセンサスレイヤーでのアカウントアブストラクションを提案しました。その後、取り下げられています。
  • 同じく2020年のEIP-3074は、EOAがコントラクトに制御を委任できるよう、AUTHとAUTHCALLオペコードを追加しました。EIP-7702に置き換えられました。
  • 2021年のERC-4337は、別の道を取りました。すべての変更をコンセンサスレイヤーの上に置いたため、ハードフォークなしでリリースできました。

その後、EIP-7702がEOA自体にコードを持たせ、ERC-4337の仕様もそれをサポートするようになりました。並べて比較するには、EIP-3074 vs EIP-7702 vs ERC-4337をご覧ください。

アカウントアブストラクションを始めるには?

  1. アカウントの種類を選びます。新規ユーザーにはModular Account v2のようなERC-4337のスマートアカウント、既存のEOAにはEIP-7702の委任を使います。
  2. 署名者を選びます。パスキー、埋め込み署名者、既存のEOAのいずれも使えます。
  3. Bundler経由で最初のUserOperationを送信します。ユーザーのガスを不要にしたい場合は、スポンサーポリシーを付けます。
  4. 対象チェーンが必要な機能をサポートしていることを、機能サポート表で確認します。

Wallet APIsのドキュメントでは、各ステップをコード付きで説明しています。独自のスマートアカウントを書く場合は、対象とするEntryPointのバージョン向けにvalidateUserOpを実装してください。

よくある質問

アカウントアブストラクションとは?

アカウントアブストラクションは、1つの秘密鍵の代わりに、スマートコントラクトをアカウントとして機能させる仕組みです。アカウントのコードが、誰が署名できるか、誰がガスを支払うか、何を実行できるかを決めます。これにより、ガスのスポンサー、バッチ処理、パスキー、セッションキーが可能になります。Ethereumでは、ERC-4337がプロトコルの変更なしにこれを実現し、EIP-7702が既存のEOAに対応します。

ERC-4337とは?

ERC-4337は、コンセンサスレイヤーの変更を必要としない、アカウントアブストラクションのためのEthereum標準です。ユーザーはUserOperationに署名し、別のmempoolに送信します。BundlerがそれらをEntryPointコントラクトへの1つのトランザクションにまとめ、EntryPointが各操作を検証して実行します。Paymasterはユーザーに代わってガスを支払えます。

ERC-4337にハードフォークは必要か?

いいえ。ERC-4337は、既存のチェーンの上でスマートコントラクトとオフチェーンのBundlerネットワークとして動作するため、EthereumおよびEntryPointがデプロイされたあらゆるEVMチェーンで動きます。EIP-7702は異なり、2025年5月7日のPectraアップグレードで導入されたプロトコルの変更です。

ERC-4337とEIP-7702の違いは何か?

ERC-4337は、UserOperationとBundlerを通じて、スマートアカウントを独自のアドレスで動かします。EIP-7702は、既存のEOAがその場でコントラクトのコードに委任できるようにするため、アドレスは変わりません。両者は補完関係にあり、ERC-4337の仕様はUserOperation内のEIP-7702の認可を受け付けます。

EIP-7702はERC-4337を置き換えるのか?

いいえ。EIP-7702はEOAをアップグレードしますが、mempool、Bundler、Paymasterは提供しません。それらは引き続きERC-4337またはリレイヤーが担います。委任されたEOAは、BundlerでUserOperationを送信し、Paymasterを使えます。実際には、このようにして2つの標準が組み合わさります。

UserOperationとは?

UserOperationは、ERC-4337が通常のトランザクションの代わりに使う疑似トランザクションです。送信者、nonce、呼び出しデータ、ガスフィールド、署名、任意のPaymasterデータを含みます。Bundlerは別のmempoolからUserOperationを集め、EntryPointコントラクトへオンチェーンで送信します。

BundlerとPaymasterは必要か?

UserOperationを送信するにはBundlerが必要です。オンチェーンへ送信できるのはBundlerだけだからです。Paymasterは任意です。ガスをスポンサーしたい場合や、ユーザーにERC-20トークンで支払わせたい場合に使います。Paymasterがなければ、スマートアカウントはEntryPoint上の自身のデポジットからガスを支払います。

どのEntryPointバージョンを使うべきか?

新しいアカウントはEntryPoint v0.7またはv0.8で構築してください。v0.8はEIP-7702をネイティブにサポートします。当社のホスト型Bundler APIはv0.6、v0.7、v0.8をサポートしており、Bundler FAQではv0.6の廃止が予定されています。お使いのチェーンでeth_supportedEntryPointsを呼び出して、一覧を確認してください。

AlchemyはERC-4337とEIP-7702をサポートしているか?

はい。当社は、オープンソースのRundler上に構築したホスト型のERC-4337 Bundler API、ガスのスポンサー向けのGas Manager、デフォルトのスマートアカウントとしてModular Account v2を備えたWallet APIsを運用しています。Wallet APIsはEIP-7702もサポートしているため、EOAはModular Account v2のコードに委任できます。

アカウントアブストラクションはどれくらい使われているか?

採用状況は急速に変わるため、固定の数字はすぐ古くなります。代わりに、リアルタイムの情報源を確認してください。BundleBearは、ERC-4337のUserOperationやEIP-7702の認可を含む、チェーン横断のスマートアカウントの活動を追跡する公開ダッシュボードで、継続的に更新されています。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。