WATS Wallet logoWATS Wallet
技術7 分で読めます

bundlerと UserOperation:ERC-4337 取引の仕組み

ERC-4337 のフロー、すなわち UserOperation、代替メムプール、bundler、EntryPoint コントラクト、paymasterと、それらがどう組み合わさるかを、明快かつ技術的に正確に解説します。

ERC-4337 のおさらい

ERC-4337 は アカウント抽象化 のための Ethereum 標準です。ベースプロトコルを一切変更することなく、スマートコントラクト・アカウントに、外部所有アカウント(EOA)が常に持っていたのと同じ、アクションを開始し支払う第一級の能力を与える方法です。コンセンサス層を変更する代わりに、ERC-4337 は、最終的に通常の Ethereum 取引を通じて決済される、より高レベルのオブジェクトとオフチェーン・インフラからなる並行システムを導入します。まず基礎から知りたい場合は、アカウント抽象化とは何か の解説がその動機をカバーし、ERC-4337 とは何か が標準全体を俯瞰します。本稿ではその仕組み、すなわちシステム内を移動するオブジェクトと、それらを処理するアクターに焦点を当てます。ERC-4337 は EVM 標準であり、Ethereum および EVM 互換チェーンに適用され、Solana や TON のような非 EVM チェーンには適用されない点に留意してください。

UserOperation とは実際に何なのか

ERC-4337 の中心的なオブジェクトが UserOperation です。それは表面的には取引のように見えますが、署名された意図の表明として理解するのが適切です。すなわち、「これが私のアカウントがやってほしいことであり、これがそれを検証し支払うためのパラメータだ」というものです。UserOperation は、送信元アカウント、ノンス、実行すべき calldata、ガスリミット、手数料パラメータ、オプションの paymasterAndData フィールド、そして署名といったフィールドを持ちます。

通常の取引との重要な違いは、誰が何を 署名するかにあります。従来の Ethereum 取引は、固定の ECDSA 方式を用いて EOA の秘密鍵で署名されなければならず、その同じアカウントがガスを支払います。UserOperation は、送信元自身のスマートコントラクト・アカウントのロジックによって検証されます。そのロジックは、アカウントが定義するどのような署名方式、複数鍵ルール、承認ポリシーでも実装でき、しかもネイティブガスで自ら支払う必要がまったくありません。その柔軟性こそが要点です。プロトコルではなくアカウントが、有効なアクションとは何かを決定するのです。

それらが存在する代替メムプール

UserOperation は、まだ取引ではないため、通常の Ethereum 取引メムプールには入りません。代わりに、それらは別個の 代替メムプール(しばしば alt-mempool と呼ばれる)にブロードキャストされます。これは ERC-4337 オブジェクト専用のピアツーピア・ネットワークです。ウォレットや dApp はここに UserOperation を送信し、それらを消費するインフラは、ベース層のメムプールではなく、このネットワークをリッスンします。この分離により、アカウント抽象化のトラフィックは、実際の取引にパッケージ化される瞬間まで、コンセンサスにとって重要な経路から切り離されたままになります。

bundlerの役割

bundler は、意図をオンチェーンの現実へと変換するオフチェーンのアクターです。その仕事は四つの部分から成ります。第一に、代替メムプールから UserOperation を収集します。第二に、それぞれをシミュレートして検証します。すなわち、アカウントの検証ロジックをシミュレートされたコンテキストで実行し、署名が有効であること、ノンスが正しいこと、アカウント(またはそのpaymaster)がコストを負担できることを確認しつつ、操作が支払えないリソースを消費するのを止めるルールを執行します。第三に、一つ以上の有効な UserOperation を単一の通常の Ethereum 取引にパックします。第四に、その取引を自身の EOA からネットワークに送信し、ベース層のガスを前払いして、オンチェーンでの補填を期待します。

bundlerはガスを立て替え、取り込みに対する手数料を得るため、アカウント抽象化トラフィック向けの専門的なブロックビルダーのように振る舞います。そのシミュレーションと検証のステップこそが、bundlerを保護します。bundlerは、自らを補填しないような操作をバンドルすることはありません。

EntryPoint コントラクト

すべては、EntryPoint と呼ばれる単一の正規スマートコントラクトに収束します。bundlerの取引は、UserOperation の配列を伴う EntryPoint への呼び出しです。EntryPoint はその後、厳格な二段階のループを実行します。検証フェーズ では、各操作について、送信元アカウントの検証関数(および指定されていればpaymasterの検証関数)を呼び出し、署名、ノンス、支払いの取り決めをオンチェーンで再チェックします。バッチ内のすべての操作が検証された後にのみ、実行フェーズ に移り、そこで各操作の calldata をそのアカウントにディスパッチして、送金、スワップ、その他のアクションを実際に実行します。

この分離は重要です。検証と実行が分離されているのは、状態を変更する作業が実行される前にバッチの支払い保証が確立されるようにするためであり、また EntryPoint が多数の操作にまたがってガスを一度に正確に計算できるようにするためです。

paymasterはどこに位置するか

paymaster は、アカウントに代わって UserOperation の支払いをすることに同意する、オプションのコントラクトです。UserOperation がpaymaster・データを含む場合、EntryPoint は検証フェーズ中に、そのpaymasterに対して、その操作をスポンサーするかどうか、そしてどのような条件で行うかを尋ねます。paymasterは無条件で受け入れる(真のガスレス・スポンサー)こともできますし、価値と引き換えに受け入れることもできます。最も有用なのは、ネイティブガスの代わりに ERC-20 トークン でユーザーに課金することです。このコンポーネントをより深く見るには paymasterとは何か をご覧ください。paymasterは、「ユーザーが何で支払うか」を「ネットワークが何で支払われるか」から切り離す、フロー内のフックです。

ガスと失敗はどう扱われるか

ERC-4337 のガスは階層化されています。bundlerは外側の取引に対して本物の ETH を支払います。EntryPoint は各 UserOperation の検証と実行のガスを、それが宣言したリミットに対して計量します。そして責任を負う者、すなわちアカウントまたはそのpaymasterは、請求額を賄うのに十分な額をステークまたはデポジットしていなければならず、EntryPoint は最後にそれを決済します。失敗は、検証優先の設計によって封じ込められます。ある操作がオンチェーン検証中に失敗した場合、それは単に除外され、着地できません。そしてbundlerのオフチェーン・シミュレーションは、送信前にこれを捕捉することを意図しています。ある操作が検証を通過したものの、その実行がリバートした場合、実行の効果はロールバックされますが、既に費やされたガスは依然として計算され支払われます。そのため、bundlerが誠実な作業に対して補填を受けないままになることはありません。だからこそbundlerは非常に慎重にシミュレートするのです。妨害攻撃に対する彼らの防御は、自らに返済しないものは一切取り込まないことなのです。

WATS はこれをどう活用しているか

EVM チェーン上では、WATS はこのフローのうちまさに一つの要素、すなわち ERC-4337 の paymaster に依拠します。WATS の Hot Wallet で送金、スワップ、ステーキングを行うとき、paymasterこそが、あなたの手数料をチェーンのネイティブなガスではなく ATS で請求できるようにするものです。取引のために ETH、BNB、その他のガストークンを保有する必要は一切ありません。ATS は LayerZero OFT であるため、単一の ATS 残高が EVM、Solana、TON にまたがって手数料をカバーし(非 EVM チェーンでは同等のフィーペイヤーがpaymasterの役割を果たします)、徴収された ATS は 100,000,000 から 30,000,000 のフロアに向けてバーンされます。WATS は完全にノンカストディアルであり続けます。あなたは自分自身の鍵を保有します。そして ERC-4337 と OFT による単一トークン手数料(ネイティブガスの代わりに請求される)を、そのバーンと組み合わせた最初で唯一のウォレットです。全体像については ATS 手数料モデルの仕組み をご覧ください。

よくある質問

UserOperation と通常の Ethereum 取引の違いは何ですか?

通常の取引は、固定の ECDSA を用いて外部所有アカウントによって署名され、チェーンのネイティブトークンで自らのガスを支払います。UserOperation は、送信元自身のスマートコントラクト・アカウントのロジックによって検証される、より高レベルの意図オブジェクトであり、カスタムルールを使うことができ、しかもネイティブガスで自ら支払う必要がありません。paymasterが手数料を負担できるのです。UserOperation はまた、標準の取引メムプールではなく、別個の代替メムプールを通じて移動します。

ERC-4337 のbundlerは実際に何をするのですか?

bundlerは代替メムプールから UserOperation を収集し、署名、ノンス、支払いが賄えることを確認するためにそれぞれをシミュレートして検証し、有効なものを EntryPoint コントラクトを呼び出す単一の通常の Ethereum 取引にパックします。bundlerはその取引を自身のアカウントから送信し、ベース層のガスを立て替えて、オンチェーンでの補填を期待します。慎重なシミュレーションこそが、返済しない操作を取り込むことからbundlerを保護するものです。

ERC-4337 では ETH 以外のトークンでガス手数料を支払えますか?

はい、paymasterが使われる場合には可能です。paymasterは、UserOperation をスポンサーでき、ネイティブガスを請求する代わりに ERC-20 トークンでの支払いを受け入れて、実際のネットワーク手数料を別途決済できる、オプションのコントラクトです。これにより、ウォレットはチェーンのネイティブなガストークンを保有せずに取引できるようにします。ERC-4337 とそのpaymasterは EVM 専用です。Solana や TON のような非 EVM チェーンは、同等のフィーペイヤーやリレイヤーで同様の結果を達成します。