Zelcore

ERC-4337のアーキテクチャ:EntryPoint、バンドラー、ペイマスターをわかりやすく解説

14分で読めます
EntryPoint、バンドラー、ペイマスターで構成されるERC-4337のアーキテクチャ

Ethereumのアカウント抽象化では、覚えておきたい標準アドレスが2つあります。EntryPoint v0.6のアドレスは0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789です。2024年初頭にデプロイされたEntryPoint v0.7のアドレスは0x0000000071727De22E5E9d8BAf0edAc6f37da032です。メインネット、Arbitrum、Optimism、Base、Polygon、その他大半のEVMチェーンにおけるERC-4337トランザクションは、いずれか一方のシングルトンを経由します。これらのコントラクトの役割と、その周囲にある5つの役割を理解すれば、ERC-4337の全体像がわかります。

この記事はSmart Accountsシリーズの第2回です。第1回では、EOAをデフォルトにするべきでない理由を取り上げました。今回は仕組みを詳しく見ていきます。6つの役割、UserOperation構造体、スマートアカウントからトークンをスワップするときに実際に起こること、v0.6からv0.7への変更点、ペイマスター、公開alt-mempoolとプライベートバンドラーの違い、そして想定される追加コストを解説します。

6つの役割を1つの図で見る

ERC-4337では、EOAが1つのステップで行う処理を、連携する6つの役割に分けています。Ethereumのハードフォークは必要ありませんでした。このシステムはすべて、コントラクトとオフチェーンのインフラで構成されています。

この6つの役割を念頭に置いてください。この記事の残りは、これらが互いにやり取りする仕組みを説明します。

UserOperation構造体

UserOperationは、JSON-RPCで扱いやすい形式にまとめられたフィールド群です。署名すると、まだL1に送信せずに実行の意図を表せます。v0.7の構成には、論理上11個のフィールドがあります。

署名方式はウォレットによって異なります。secp256k1を使うECDSAが一般的ですが、P-256やパスキーによる検証、マルチシグ、ソーシャルリカバリーの閾値、セッションキーの署名者も、すべて同じインターフェースを通じて利用できます。この柔軟性こそが、ERC-4337の要点です。

エンドツーエンド:スマートアカウントでUSDCをETHにスワップするときの流れ

実際のスワップを追いながら、各役割が順に動く様子を見てみましょう。

  1. ウォレットの画面で「スワップ」をタップします。 ウォレットがUserOperationを作成します。sender = 0xUserSafe、callData = swapUSDCforETH(amount)を指定してUniswapを呼び出します。
  2. ガス代を見積もります。 ウォレットはバンドラーのRPCに対してeth_estimateUserOperationGasを呼び出します。バンドラーはEntryPointを使ってUserOpをシミュレーションし、3つのガス上限を返します。
  3. ユーザーが署名します。 ウォレットはEntryPointのアドレスとチェーンIDを使ってUserOpのハッシュを計算し、ユーザーに署名を求めます(パスキー、ハードウェアキーなど)。その後、署名を添付します。
  4. 送信します。 署名済みUserOpをeth_sendUserOperation経由で1つ以上のバンドラーに送ります。Ethereumの通常のトランザクション用mempoolとは別のP2Pネットワークであるalt-mempoolに入ります。
  5. バンドラーがシミュレーションします。 バンドラーはeth_callを使い、simulateValidationに対して再シミュレーションします。ERC-7562のストレージアクセス規則を確認します。検証中にUserOpがアクセスできるのは自身のストレージだけです。そうでなければ、バンドラーが攻撃を受けるリスクがあります。
  6. バンドルを作成します。 バンドラーはこのUserOpを最大約10件の他のUserOpとまとめ、EntryPointに対する1回のhandleOps([...userOps], beneficiary)呼び出しにします。
  7. オンチェーンで実行します。 EntryPointは各UserOpを順に処理します。送信者のvalidateUserOpを呼び出し、前払い分を差し引いた後、callDataを実行します。これにより、スマートアカウントからUniswapのスワップが実行されます。
  8. 返金します。 EntryPointは未使用のガス代を送信者(またはペイマスター)に返金し、バンドラーの受取人アドレスに支払います。

ステップ5に失敗すると、バンドラーはUserOpを破棄し、ユーザーにはAAxxエラーコードが表示されます。よくあるのは、AA21(前払い分の不足)、AA23(署名エラー)、AA25(nonceが無効)、AA33(ペイマスターがリバート)、AA40(検証用ガス上限超過)です。これらのコードは覚えておくとよいでしょう。実際に目にすることになります。

EntryPoint v0.6とv0.7の違い

v0.6は2023年3月に0x5FF1…2789でリリースされました。動作はしましたが、3つの課題がありました。3種類のガスを1つにまとめていたpaymasterAndDataのデータ、扱いにくいinitCodeのパッキング、送信者に過剰請求するガス計算です。v0.7では、これらすべてが修正されました。

v0.7の主な変更点は次のとおりです。

v0.6は現在も稼働しており、引き続き使われています。多くのウォレットがv0.7対応モジュールをリリースしたのは、2024年もかなり後になってからでした。ほとんどのチェーンでは、EntryPointの両バージョンが何年にもわたって並行稼働します。

ペイマスター:ガス代を支払うのは誰か

ペイマスターはEntryPointにETHのステークを預け、そのポリシーに合致するUserOpのガス代を負担するコントラクトです。主な方式は3つあります。

EntryPointの検証フェーズでは、ペイマスターのvalidatePaymasterUserOpが実行されます。これがリバートするとAA33が発生します。ステークが不足するとEntryPointが没収し、損失はバンドラーが負担します。そのため、バンドラーはペイマスターの評価リストを管理しています。ERC-7562ではこうした評価ルールが定められ、バンドラーのmempoolがスパムに強い状態に保たれます。同じ仕組みを踏まえると、DeFiの承認とマルチシグを適切に管理する方法が4337でもそのまま活かせる理由がわかります。脅威は同じで、仕組みの枠組みが変わるだけです。

パブリックな代替mempoolとプライベートバンドラー

UserOpをオンチェーンに送る方法は2つあります。

パブリックな代替mempool:ERC-7562に準拠したバンドラーは、libp2pネットワーク上でUserOpをゴシップします。Pimlico、Stackup、Alchemy、Etherspot、Voltaireのノードを運用している人なら誰でも、あなたのUserOpを取得できます。許可不要で検閲耐性がありますが、通常のEthereumトランザクションと同じMEVの懸念があります。サーチャーは取り込まれる前にあなたのオペレーションを確認できます。

プライベートバンドラー:eth_sendUserOperationをプロバイダー1社のRPCに直接送信します。プロバイダーはシミュレーション、バンドル、送信を非公開で行います(多くの場合Flashbots経由です)。処理は速く、MEVから保護されますが、検閲やフロントランをしないバンドラーを信頼する必要があります。2026年時点では、一般向けウォレットの多くがデフォルトでプライベートバンドラーを使用しています。

このトレードオフは、通常のトランザクションにおけるパブリックmempoolとFlashbots Protectの比較に似ています。L1の時代以降、基礎となるトランザクションのライフサイクルを確認していない場合は、バンドラーが介在すると何が変わるのかを、その解説で確認できます。

アグリゲーター、普及状況、コスト

アグリゲーターは、1回の署名検証でバッチを検証するコントラクトです。代表的な用途はBLSです。BLSで署名された50件のUserOpを集め、署名を1回のペアリング検証にまとめることで、署名にかかるガスを約95%削減できます。BLS署名に対応するウォレットの開発が難しく、取引量が多くなければガス削減の効果が出ないため、普及は遅れています。2026年半ば時点で、メインネットのUserOpのうちアグリゲーターを使うものは1%未満です。

普及状況(bundlebear.comによる2026年第1四半期の数値):全チェーン合計の累計UserOp数は約380,000,000件で、その大半をBase、Polygon、Arbitrumが占めています。メインネットのシェアは約6~8%で、件数では最も少ない一方、移転額では最大です。一般向けの利用ではCoinbase Smart Wallet、Farcaster、Argentが大きな割合を占めています。

追加コスト:v0.7のUserOpは、同等のEOAトランザクションより約30,000~40,000ガス多くかかります。これはEntryPointのループ処理、検証、バンドルの管理にかかるコストです。メインネットで20 gweiの場合、1件あたり1ドル未満の額です。factoryDataによる初回のアカウント展開には、さらに約250,000ガスかかります。calldataが主なコストとなるL2では、追加コストの割合は1桁台です。スポンサー付きUserOpではこのコストをdAppが負担するため、一般向けアプリでは無料のトランザクションを見かけますが、本格的なDeFiではそうではありません。より広範なトランザクション手数料の解説では、この追加コストが各種の手数料市場でどのように反映されるかを説明しています。

要点は、ERC-4337が6つの役割(送信者、UserOp、バンドラー、EntryPoint、ペイマスター、アグリゲーター)と1つの構造体、覚えておくべき2つのEntryPointアドレスを備え、任意の署名方式、ガス代のスポンサー、バッチ処理、並列ノンスを実現する代わりに、約30,000~40,000ガスの追加コストがかかるということです。このシリーズの第3部では、EIP-7702を取り上げます。これはPectraで並行して進められている仕組みで、既存のEOAがアドレスを変更せずに同じ機能を利用できるようにします。


関連記事

ウォレット、ガス代、承認:DeFiユーザーが理解しておくべき3つのこと

ウォレット、ガス代、承認:DeFiユーザーが理解しておくべき3つのこと

スワップ、貸し出し、ファーミングを始める前に、DeFiでのあらゆる操作に欠かせない3つの基本要素、ウォレット、ガス代、トークンの承認について理解しておく必要があります。

10分で読めます
アカウント、コントラクト、EVM:Ethereumは実際にどのように実行されるのか

アカウント、コントラクト、EVM:Ethereumは実際にどのように実行されるのか

EthereumはBitcoinのUTXO方式の保管モデルを、膨大なアカウントテーブルとガスで計量されるスタックマシンに置き換えています。状態、オペコード、ERC-20の送金が実際にどのように機能するかを解説します。

16分で読めます
Ethereumのガスの仕組み:EIP-1559、優先手数料、Dencun以降のBlob手数料

Ethereumのガスの仕組み:EIP-1559、優先手数料、Dencun以降のBlob手数料

2026年のEthereumのガス手数料の仕組みを解説します。EIP-1559の基本手数料オークション、優先手数料のチップ、Dencunで始まりPectraで拡張された独立したBlob市場を取り上げます。

14分で読めます

ニュースレターに登録

月に一度、Zelcoreの最新情報をお届けします。スパムは送りません。

ニュースレターに登録