Ethereumスマートアカウント入門:UserOperation、バンドラー、ガススポンサー
ERC-4337のUserOperationがバンドラーとEntryPointを経て実行される流れ、paymasterによるガススポンサー、アカウント復旧と鍵の管理権限を解説します。
このガイドの内容スマートアカウントは契約にプログラム可能な認証ルールを持たせます
短い要約
アカウント抽象化では、スマートコントラクトアカウントが独自の検証ルールに従うUserOperationを、通常のEOAトランザクションとは別の経路で送信できます。 ERC-4337ではバンドラーが複数の操作を集めてEntryPointを呼び出し、任意のpaymasterはリクエストを承認した場合にガスをスポンサーできます。 ただし、自動復旧、取引の無料化、非カストディの保証を意味するわけではありません。
スマートアカウントは契約にプログラム可能な認証ルールを持たせます
外部所有アカウント(EOA)は秘密鍵の署名で操作権限を証明し、アカウントのnonceでトランザクションの順序を管理します。仕組みはシンプルですが、通常は同じ鍵ですべての操作を承認し、通常のトランザクションは一つのトップレベル呼び出しを開始し、そのコントラクトが内部で複数の呼び出しを行う場合もあります。
この違いは、ERC-4337ではなくEOAの取引プールを説明するEthereumの保留中トランザクション解説と区別するうえでも重要です。
スマートアカウントは資産を保持して呼び出しを実行できるコントラクトです。検証コードには、単一署名、複数署名の閾値、一定時間後に失効する権限など、そのアカウント固有のルールを設けられます。ERC-4337は特定のウォレット製品や復旧方針を定めず、コントラクトアカウントが操作を承認・実行するためのインターフェースを提供します。
Ethereum.orgのアカウント抽象化の概要では予備鍵、限定的な権限、ガススポンサーなどの可能性を紹介していますが、すべてのウォレットが各機能を実装しているとは限りません。
「スマートウォレット」という呼称だけでは、アカウントの安全性や管理者は分かりません。資産を保有するコントラクト、信頼するコードとEntryPoint、呼び出しを承認できる署名者を確認してください。アカウントのロジックがアップグレード可能なら、管理者権限や変更手順も資産の管理権限に関わります。
UserOperationはブロックに入ったEthereum取引ではありません
UserOperationはスマートアカウントが実行したい操作を表すオブジェクトです。通常は送信元アカウント、アカウント固有のnonce、呼び出しデータ、署名、ガス上限、手数料条件を含みます。新しいアカウントを作るfactoryの情報や、スポンサーを依頼するpaymasterの情報が加わることもあります。正確なフィールドはEntryPointのバージョンにより異なります。
ウォレットは通常のeth_sendTransactionでこのオブジェクトを直接チェーンに送るのではなく、eth_sendUserOperationなどのERC-4337 RPCを提供するバンドラーやリレーへ送ります。リクエストは通常のEthereum取引プールとは別のUserOperationプールを通ります。UserOperationのハッシュはリクエストを識別し、バンドラーが作るオンチェーントランザクションには別の取引ハッシュとレシートがあります。
ERC-7769は送信、ハッシュ照会、UserOperationレシート照会のRPCメソッドを定義しています。
バンドラーからの応答は、そのサービスの検査を通過し、同社のプールに入ったことを示す場合があります。ブロックに取り込まれた証拠でも、アプリの処理が成功した証拠でもありません。他のバンドラーへの共有方法は各社のインフラとポリシーに依存します。プロバイダーの受付応答と、チェーンに記録された結果を分けて確認してください。
バンドラーは検証をシミュレーションしてオンチェーン呼び出しを準備します
バンドラーはUserOperationを受け取り、EntryPointのバージョンとの互換性を確認してから、アカウントとpaymasterの検証ロジックをシミュレーションします。署名、アカウントがそのEntryPointを信頼しているか、nonce、ガス、スポンサー条件を検査します。ルールに違反する操作やシミュレーションで失敗する操作は拒否できます。
ERC-4337バンドラーガイドで、シミュレーションとバンドル送信の役割を確認できます。
承認可能な操作を一つ以上選ぶと、バンドラーはEntryPointのhandleOpsを呼び出す通常のEthereumトランザクションを一つ作ります。そのトランザクションがブロックに入るかどうかは、ブロック生成とネットワーク状況にも左右されます。返されたUserOperationハッシュだけでは、正規チェーン上で実行されたことを証明できません。
UserOperationプールはEOAの取引プールとは別で、すべてのプロバイダーが同じリクエストを共有するとは限りません。バンドラーが操作を拒否したり、待ち状態にしたりすることがあります。ウォレットやプロバイダーによって対応チェーン、EntryPointのバージョン、ポリシーが異なるため、ウォレット上の表示、操作レシート、バンドル取引のチェーンレシートを区別してください。
EntryPointは呼び出し前にアカウントの認証を確認します
EntryPointはバンドラーのhandleOps呼び出しを受け、各スマートアカウントの検証関数を呼びます。アカウントは信頼済みEntryPointからの呼び出しかを確認し、署名や独自の権限ルールを検証します。EntryPointはアカウントと各nonce keyに対応する64ビットの連番を検証してインクリメントします。アカウント側では192ビットのkeyに独自のルールを適用できます。そのため、一つのアカウントで複数のkeyと、それぞれの連番を使えます。
任意のpaymasterも操作のスポンサーになるかを確認します。検証に通るとEntryPointはアカウントの実行関数を呼び、callDataに記された操作を行って費用を精算します。EntryPointはウォレットごとにEthereumのプロトコルを変更しなくてもスマートアカウントの流れを実現する中心的なコントラクトです。ウォレットが使う実際のデプロイ先、バージョン、対応チェーンを確認してください。
ERC-4337 EntryPointガイドでは、検証と実行の流れを詳しく説明しています。
シミュレーションは役立つ事前確認ですが、取り込みの約束ではありません。待ち時間中にチェーン状態、手数料、有効期間、外部コントラクトの状態が変わると、オンチェーン検証の結果も変わる可能性があります。検証後でもアプリの呼び出しが失敗したりrevertしたりすることがあります。ブロックに含まれただけで、意図したトークン移動やコントラクト操作が成功したとは言えません。
Paymasterは操作を承認したときだけガスをスポンサーします
UserOperationにpaymasterの情報が含まれる場合、EntryPointはそのコントラクトにスポンサーの意思があるか問い合わせます。アプリが取引手数料を負担したり、利用者がアカウントにETHを持たずに操作を始めたりできる場合があります。トークン払いなどを認める設計もありますが、条件はウォレットとpaymasterの実装によって異なります。
スポンサーがいてもガス費用や利用条件がなくなるわけではありません。paymasterは対象アプリ、利用者、操作回数、金額を制限し、リクエストを調べて拒否できます。EntryPointへの預け入れが操作の費用に使われます。別途stakeが必要な場合、それは検証ルール上の担保であり、ガスに使う預け入れ残高とは別です。
ERC-4337 paymasterガイドとEIP-4337で検証と精算の流れを確認できます。
アプリに手数料0と表示されても、費用が発生していないとは限りません。スポンサーは先に支払い、購読料、トークン払い、サービス条件などで後から価値を回収する場合があります。最終的に誰が負担するのか、スポンサーに上限や回数制限があるか、操作失敗時にも費用が発生するかを確認してください。
複数の呼び出しと手数料を分けて評価します
ウォレットが対応していれば、アプリ承認とスワップを一つのUserOperationにまとめられる場合があります。二つの処理はEntryPointを通る一つの操作として送信されます。これは通常のEOA取引一つとも、バンドラーが複数のUserOperationを一つのチェーン取引にまとめることとも異なります。どの構造かウォレットの確認画面で見てください。
仮の例として、承認されたスポンサー付き操作の実際のガス代が0.0012 ETHだったとします。この費用は利用者の残高ではなく、EntryPointにあるpaymasterの預け入れから精算される場合があります。0.0012 ETHは説明用の仮定で、現在の相場や見積額ではありません。実際の額は消費ガス、手数料条件、ネットワークによって変わります。
バッチ化すれば常に安く、安全になるわけではありません。複数呼び出しの原子性はスマートアカウントが失敗をどう処理するかに左右されます。一つの呼び出しが失敗すると全体がrevertするのか、一部の処理が残るのか、ガスを誰が払うのかを確認してください。ガス見積りの誤りやアプリ停止で拒否・実行失敗が起きることもあります。
一般的な手数料項目はEthereumガス料金ガイドで説明しています。
復旧ルールを定めるのはアカウントの実装でありERC-4337ではありません
スマートアカウントには予備署名者や、信頼するguardianが一定数集まって鍵を交換する復旧手順を設定できます。古い鍵の所有者が異議を申し立てられるよう、待ち時間を設ける設計もあります。一方、常に単一の署名が必要なら、その鍵を失うと復旧できない場合があります。ERC-4337は各アカウントが独自ルールでUserOperationを検証できるようにしますが、全アカウントに予備鍵やソーシャルリカバリーを標準装備するものではありません。
guardianが少なすぎたり鍵交換ルールが弱かったりすると、攻撃経路になることがあります。guardianが多すぎたり条件が厳しかったりすると、正当な所有者の復旧を遅らせる可能性があります。必要な人数、待機時間、取消権限、復旧鍵の保管方法を確認してください。これらのルールは操作を承認できる人だけでなく、止められる人も決めます。
コントラクトウォレットだからといって、必ずカストディ型とも非カストディ型とも限りません。管理権限は署名鍵の保有者、アカウントの管理・アップグレード権限、ホステッド署名者や復旧サービスが承認できる内容で変わります。資産を保管するコントラクトと、それを操作する鍵・サービスを別々に確認してください。
一般的なシードフレーズのバックアップはウォレット復旧ガイドで扱います。
送信前に操作と管理経路を確認します
ウォレットの確認画面でネットワーク、アカウントアドレス、対象コントラクト、呼び出しデータ、トークン承認範囲、呼び出し数を確認してください。署名が画面で強調された一つの操作以上を承認する場合もあります。署名するデータが分からない場合は、実行前にアプリとウォレットの公式文書を確認してください。
スポンサーの名称だけで判断せず、適用条件、利用上限、代替支払い方法、失敗時の費用負担を読みましょう。スポンサー中と表示されてもアプリが無条件で無料とは限らず、paymasterは操作を断ることがあります。ネットワーク混雑やブロック取り込みの遅れも別に残ります。
UserOperationが長く待機しても、ウォレットの扱いを確認せずにEOAの「高速化」「キャンセル」を使わないでください。まず操作ハッシュとUserOperationレシートを調べます。バンドラー取引のハッシュがあれば、そのブロックレシートと実行結果も確認してください。RPCレシートは、個別操作の費用・成功とバンドル取引全体のレシートを区別できます。これは同じnonceの通常EOA取引を置き換えたり取り消したりする方法とは異なります。
よくある質問
Q1UserOperationはEthereumのトランザクションと同じですか?
いいえ。別のプールに送るスマートアカウントのリクエストです。バンドラーがEntryPointへの呼び出しを送ると、チェーンにはバンドル取引と各操作の結果が記録されます。
Q2paymasterがあれば利用者はガス代を払わなくてよいですか?
利用者のアカウントから直接ETHを払わずに済む場合はありますが、ネットワーク費用は発生します。資格条件、トークン払い、サービス規約が適用され、失敗した操作にもガス代がかかることがあります。
Q3ERC-4337ウォレットは鍵をなくしても復旧できますか?
アカウントに予備署名者または復旧方針がある場合だけです。実際のアカウント設定で必要数、待機時間、鍵交換権限、復旧サービスの管理範囲を確認してください。
出典
問題を報告
この記事のリンクを含むメールを準備します。送信すると Mark に報告が届きます
クイックチェック
記事を読み終えたら、3問で確認しましょう
問題 01
バンドラーがUserOperationのハッシュを返しました。この応答だけで分かることは何ですか?
答えを選ぶと解説を確認できます