IOBC Capital:イーサリアムのアカウント抽象とERC-4337
TechFlow厳選深潮セレクト
IOBC Capital:イーサリアムのアカウント抽象とERC-4337
イーサリアムが重点的にLayer 2の発展を進める方針が定まった今、Vitalikはイーサリアムのアップグレードに関する今後の計画をアカウント抽象へと切り替え始めている。
著者:鹿目まどか、IOBC Capital
イーサリアムシステムには実際上、二種類のアカウントが存在する。
-
一つは秘密鍵によって管理される外部所有アカウント(externally-owned account、EOA)であり、我々が普段使用しているウォレットのアカウントがこれに該当する。これらのアカウントはそれぞれ残高を持っており、所有者は取引を作成・署名することで、自分のEOAからメッセージを送信できる。
-
もう一つはブロックチェーン上にデプロイされたコードによって制御されるコントラクトアカウントであり、スマートコントラクトアカウント(いわゆるスマートウォレット)内のイーサリアム仮想マシン(EVM)コードによって管理されている。コントラクトアカウントがメッセージを受信すると、内部コードが起動し、内部ストレージの読み書きや新しいコントラクトの作成などの操作が可能になる。
現行のイーサリアムプロトコルでは、取引を開始できるのはEOAのみであり、アカウントの状態変更も所有者のみが行える。
アカウント抽象とは何か?
アカウント抽象は、上記の二種類のアカウントを改善し、その境界を曖昧にして、複雑なロジックを含む汎用的なアカウントへと進化させるものであり、アカウントがコントラクトアカウントとEOAの両方の機能を持つようにすることを目指している。
これは、ユーザーがコントラクトアカウントの形式で外部アカウントを定義できるようにし、スマートコントラクトウォレット内に任意の検証ロジックを含めることを可能にする。つまり、鍵で管理されるアカウントにもコードによるサポートが与えられるようになる。

アカウント抽象の各種提案
アカウント抽象の実現は長年、イーサリアム開発者コミュニティの目標であった。これに伴い、EIP-86やEIP-2938など、さまざまな提案がなされてきた。
EIP-86 はアカウント抽象の技術的準備として、ユーザーがスマートコントラクトベースのアカウントを作成できる新しいアカウントタイプを定義した。
イーサリアムプロトコルは、すべての内容をECDSAセキュリティに基づく外部アカウント(EOA)から発信されるトランザクションにパッケージングすることを要求しており、各ユーザー操作はEOAからのトランザクションでラップされる必要があるため、21000 gasのコストが発生する。ユーザーは別個のEOAにETHを保有してgas料金を支払う必要がある。
EIP-86が提案するアカウント抽象では、従来のトランザクションとは異なり、送信者を持たない新しいタイプのトランザクションを導入する。しかし、この方式はトランザクションハッシュの一意性を損なう問題があり、Metropolisフェーズでの導入が計画されていたが、上述の課題から見送られた。
EIP-2938 はアカウント抽象の解決策を提供し、イーサリアムプロトコルの一部を変更することで、コントラクトアカウントがEOAと同様に取引を開始できるようにする。しかし、コンセンサス層でのプロトコル変更が必要なため、広く受け入れられなかった。
その後登場した新しい仕様ERC-4337は、コンセンサスプロトコルを変更せずにEIP-2938と同等の効果を達成しようとするものであり、より高い安全性を持つ実装方法として、現在コミュニティで注目を集めている。
ERC-4337 の実現方法
ERC-4337 はプロトコルのコンセンサスを変更しようとせず、代わりにシステム内で mempool 機能を再現する。
ユーザーはユーザーオペレーション(UserOperation)というオブジェクトを送信する。このオブジェクトにはユーザーの意図、署名、その他のデータが含まれる。
ユーザーオペレーションは専用のmempoolに格納され、このプールに接続したノードがERC-4337特有の検証を行い、手数料を支払った操作のみを受け付けるようにフィルタリングする。
マイナーやFlashbotsサービスを利用するバンドラーが、これらのユーザーオペレーションを一括で収集し、単一のバンドルトランザクション(bundle transaction)としてまとめ、イーサリアムのブロックに取り込む。バンドラーがイーサリアム上のバンドル取引のgas feeを支払い、個々のUserOperationが支払った手数料で補填する。バンドラーは手数料の優先度に基づいて、どのUserOperationを含めるかを選択する。

ここでいうUserOperationはトランザクションのように見えるが、ABIエンコードされた構造体であり、以下のフィールドを含む。
1. 送信者:操作を行うウォレット
2. nonce および signature:ウォレットの検証関数に渡されるパラメータで、操作の正当性を確認するために使用
3. initCode:ウォレットがまだ存在しない場合、その作成に使用される初期化コード
4. callData:実際の実行ステップでウォレットを呼び出すために使用されるデータ
各ウォレットはスマートコントラクトであり、以下の二つの関数を必ず持つ必要がある。
1. validateUserOp:UserOperation を入力として受け取る関数。この関数はUserOperation内の署名とnonceを検証し、成功すれば手数料を支払いnonceをインクリメントし、失敗すれば例外を投げる。
2. op実行関数:callData を解析し、ウォレットの操作を実行するための一つ以上の命令に変換する。
ERC-4337がもたらす変化
この仕様が広く採用されれば、署名検証がイーサリアム仮想マシン(EVM)上で行われるようになる。validateUserOp関数により、任意の署名方式やnonce検証ロジックが追加可能となり、検証ロジックの柔軟性が飛躍的に向上する。
これにより、取引署名時に新たな暗号技術を利用できるようになり、ウォレットは以下のような新機能を提供できるようになる。
-
マルチシグネチャ
-
ソーシャルリカバリー
-
より効率的でシンプルな署名アルゴリズム(例:Schnorr、BLS)
-
耐量子化署名アルゴリズム(例:Lamport、Winternitz)
-
アップグレード可能なウォレット
この方式により、スマートコントラクトを通じてgas手数料を支払うといった新たなトランザクション許可管理も可能になる。
現時点では、外部ウォレットがイーサリアム上で相互作用するためのgas手数料は、ウォレット内のETHでしか支払えない。もしウォレットにETHがなくERC-20トークンしかない場合、それらを送信することができない。ERC-4337が導入されれば、ユーザーはERC-20トークンで手数料を支払えるようになり、マイナーまたはバンドラーがコントラクトを仲介としてETHを支払い、ユーザーのERC-20トークンを受け取る形になる。
アカウント抽象が実現すれば、外部アカウント所有者が署名してブロードキャストするという方法が、取引を開始する唯一の手段ではなくなる。これにより、イーサリアムがメタトランザクションの中継者として機能することが可能になる。現在、多くのイーサリアムアプリケーションは中継者を通じてユーザーの取引をブロックチェーンに投稿しており、その報酬を支払っている。しかし、ウォレット内に複雑なコントラクトを組み込めば、こうした中継者の必要性がなくなり、余分な手数料を支払う必要もなくなる。
多くの利点がある一方で、新しい方式にはいくつかの課題もある。
最も顕著な問題はガスコストの増加であり、基本的なERC-4337操作は約42000 gasを要するのに対し、通常の取引は21000 gasである。その理由は以下の通り。
1. 多数の個別ストレージ読み取り/書き込みコストが発生する。EOAの場合、これらはまとめて21000 gasで処理されるが、ここでは個別に課金される。
(1)公開鍵+nonceを含むストレージスロットの編集(~5000)
(2)UserOperationの呼び出しデータコスト(約4500。圧縮で約2500まで削減可能)
(3)ECRECOVER(~3000)
(4)ウォレット自体の初回アクセス(~2600)
(5)受取人アカウントの初回アクセス(~2600)
(6)受取人アカウントへのETH転送(~9000)
(7)手数料支払いのためのストレージ編集(~5000)
(8)プロキシを含むストレージスロットのアクセス(~2100)、その後プロキシ自体へのアクセス(~2600)
2. 上記のストレージ読み取り/書き込みに加え、コントラクトは「ビジネスロジック」(UserOperationの展開、ハッシュ化、変数の並び替えなど)も実行する必要がある。
3. ログ費用のガス消費が必要(EOAはログを出力しない)。
4. 一時的なコントラクト作成コスト(約32000 gas、プロキシのコード1バイトあたり200 gas、プロキシアドレス設定に20000 gas)
要するに、アカウント抽象アドレスの各ステップで計算が必要となり、より多くのリソースを消費し、追加コストが発生する。
ただし、これは解決不能な問題ではない。
Rollupはデータ圧縮に優れており、データ構造が複雑なアカウント抽象と自然な親和性を持つ。
Vitalikの最新の提案では、Layer 2でアカウント抽象によって生成されるデータを処理することが示されている。その改良点は、段階的に実行される機能をバッチ取引としてまとめるだけでなく、SNARK技術で取引の有効性を保証することにある。

ERC-4337とRollup技術を組み合わせることで、アカウント抽象におけるデータ圧縮とガスコスト削減が可能となり、その利点をより効果的に発揮できる。
結論
現在、イーサリアムが重点的にLayer 2を発展させている状況下で、Vitalikの今後のアップグレード計画はアカウント抽象に向かって進んでいる。
最新の提案ではRollup + アカウント抽象という技術的道筋が示されており、各Rollupプロバイダーもアカウント抽象に対応した新バージョンをリリースしている。
今年6月、zkSyncはV2のアップデート情報を発表し、「アカウント抽象」機能を追加、イーサリアムEVMとの互換性を強化した。
10月には、ERC-4337が新バージョンをリリースし、BLS署名アルゴリズムによる署名集約機能を追加した。この署名集約により、バンドラーやバッチ提出者も署名を集約(例:BLS、SNARKs)でき、オンチェーンデータを大幅に削減し、Rollupのデータコストを低減できる。

アカウント抽象がもたらす変化には、エコシステムの爆発的成長の可能性が秘められていると考える。Rollupの発展とともに、Rollupと統合可能なアカウント抽象も、さらに洗練された最適なソリューションへと進化していくだろう。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News













