2024年5月、Ethereumを考案したヴィタリックを筆頭にアカウントアブストラクションに関するEIP-7702が提案されました。EIP-7702は、古くから議論が続いてきたアカウントアブストラクションについての最新の提案です。本記事では、アカウントアブストラクションとは何かから始め、EIP-7702の内容、そのメリット・デメリットについて詳しく解説します。
目次
アカウントアブストラクション(AA)の概要とこれまで
Ethereumには、外部所有アカウント(EOA: Externally Owned Account)とスマートコントラクトアカウント(CA: Contract Account)という二種類のアカウントがあります。Ethereumネットワーク上でユーザーが直接所有するアカウントです。一方、CAはコードによって制御されるプログラム可能なアカウントです。
アカウントアブストラクション(AA: Account Abstraction)は、日本語にすると「アカウントの抽象化」という意味で、アカウントを抽象化することでEOAとCAを統一して扱えるようにし、柔軟性を高めようとする仕組みです。
AAは2016年頃からEthereumを考案したヴィタリックを中心にコミュニティ内で議論され始めました。Ethereumのローンチが2015年なので、かなり初期から議論されていたことになります。
Ethereumのプロトコルに対する新機能や改善の提案は、EIP(Ethereum Improvement Proposal)と呼ばれ、AAに関してはこれまでに、ヴィタリックを中心にEIP-86、EIP-2938、EIP-4337が提案されました。EIP-86とEIP-2938については、EIPのステータスが6ヶ月以上更新のないStagnant(停滞を表すステータス)で、EIP-4337がDraftです。このほか、EIP-3074とEIP-5003といった提案もされていますが、ステータスはStagnantです。
EIP-4337がAAとして有望視されていましたが、2024年5月、ヴィタリックを中心に最新の改善案EIP-7702が提案され、注目を集めました。
EIPs/EIPS/eip-7702.md at master · ethereum/EIPs · GitHub
EIP-7702では、新しいトランザクションタイプを導入し、EOAに一時的にスマートコントラクト機能を持たせられるようにする方法が提案されています。
EIP-7702の内容
これまでEIP-4337が有望視されてきましたが、EIP-7702は、EIP-4337の概念を踏襲し、簡潔にした進化形ともいえる提案です。EIP-7702は、EIP-4337と同様に、EVMの基本動作を変更するような大きな変更を加えることなく、EOAにスマートコントラクトの機能を持たせることを目指しています。
EIP-7702では新しいトランザクションタイプが導入されます。この新しいトランザクションタイプは、以下の要素を含むリストを持ちます。
- chain_id: トランザクションがどのブロックチェーンで実行されているか
- address: トランザクションを実行するアカウントのアドレス
- nonce: トランザクションの一意性を保つための番号
- y_parity、r、s: トランザクションのECDSA署名を構成する要素
これらは認証タプルとしてリスト化され、トランザクションに含まれます。新しいトランザクションタイプを使用することで、認証タプルに基づいて「デリゲーション指定子」が署名アカウントのコードに書き込まれます。「デリゲーション」(移譲、任せる)、「指定子」といった用語はあまり一般的ではないかもしれませんが、「特定の役割や操作を他のアカウントやコードに任せるための目印」と解釈するとわかりやすいのではないでしょうか。
デリゲーション指定子は、特定のアドレスを指します。これにより、トランザクション中に読み込まれるコードが指定され、EOAがトランザクションの実行中に限って一時的にスマートコントラクトの機能を持つことができるというわけです。
EIP-7702のメリットとデメリット
メリット
EIP-7702のメリットは、EIP-7702の「Motivation」の項目に書かれていることが可能になることと言えます。詳しくは次項で説明しますが、EIP-7702によって、トランザクションのバッチ処理、トランザクション手数料を他のアカウントが支払うスポンサーシップ、柔軟な権限管理が可能になります。また、EOAがスマートコントラクトの機能を一時的に持つことで、複雑なトランザクションを簡単に実行できるようになり、ユーザー体験も向上するでしょう。
デメリット
まず、既存のシステムと互換性を保つ必要があり、さらに、新しい機能を導入することで、予期せぬセキュリティリスクが発生する可能性があります。例えば、デリゲーション指定子の誤用による脆弱性などが考えられます。
EIP-7702で何が可能になるのか
EIP-7702の「Motivation」の項目では、バッチ処理、スポンサーシップ、柔軟な権限管理の三点が挙げられ、EIP-7702提案の同期とされています。それぞれの説明を見てみましょう。
バッチ処理
ひとつのアトミックトランザクション(全体がひとつのセットとして処理されるトランザクション)で同じユーザーが複数の操作をできるようになります。一例として、特定のアドレスに対してERC-20トークンを使用する権限を与え、続いてそのトークンを実際に移動させるといった操作をまとめて行えるようになります。DEX(分散型取引所)で一般的なワークフローで、現状では2つのトランザクションが必要です。
スポンサーシップ
アカウントXが、アカウントYに代わってトランザクション手数料を支払えるようになります。これによって、アカウントXは支払った手数料をアカウントYから他のERC-20で受けることもできるほか、アプリケーション運営者であれば、ユーザーのトランザクション手数料を肩代わりして無料でサービスを利用できるようにすることもできます。
柔軟な権限管理
ユーザーはサブキーに署名し、アカウントへのグローバルアクセスよりもはるかに弱い特定の権限を与えることができます。例えば「ERC-20トークンは使えるがETHは使えない」「1日あたり総残高の1%までしか使えない」「特定のアプリケーションとしかやり取りできない」といった権限を与えられるようになります。
おわりに
本記事では、2024年5月に提案されたアカウントアブストラクションに関する提案EIP-7702について、その内容とメリット・デメリットを解説しました。
2025年の第一四半期に予定されているEthereumのアップデート「Pectra」では、アカウントアブストラクションの実現手法としてEIP-7702が採用される可能性が出てきました。EIP-7702は、トランザクションの効率化と柔軟性の向上を目指し、既存のシステムに大きな変更を加えることなく導入できるとされています。ただし、EIP-4337が有望視されてきた中でEIP-7702が提案されるなど、さらなる改善案が提案されることもありえます。
今後、Ethereumの進化と共にどのようにアカウントアブストラクションが実現され、どのような影響を与えるのか、動向を追っていきたいところです。