AA関連ERCの比較

Ethereumのエコシステムは、Ethereum Request for Comments（ERC）提案を通じて拡張性と相互運用性を高めています。特に、アカウント抽象化（Account Abstraction, AA）の分野では、Ethereumアカウントの柔軟性と機能性を向上させるために、複数のERCが提案されています。

この記事では、AAに関連する以下の6つのERC標準について、目的、特徴、実装状況、ユースケース、および相互関係を比較します。

- **ERC-6900**: Modular Smart Contract Accounts
- **ERC-7579**: Minimal Modular Smart Accounts
- **ERC-4337**: Account Abstraction Using Alt Mempool
- **ERC-7484**: Registry Extension for ERC-7579
- **ERC-7702**: Set EOA Account Code
- **EIP-3074**: AUTH and AUTHCALL Opcodes

## アカウント抽象化（AA）の導入

**アカウント抽象化**は、EthereumにおいてExternally Owned Accounts（EOAs）とContract Accountsの区別をなくし、アカウントの柔軟性と機能性を高める提案です。これにより、マルチシグウォレット、メタトランザクション、カスタム認証メカニズムなどの高度な機能をプロトコルレベルで実現できます。

AAの主な利点は以下の通りです：

- **セキュリティの向上**: カスタム検証ロジックの実装により、固定されたEOA構造への依存を減少させます。
- **ユーザー体験の向上**: ソーシャルリカバリーやバッチトランザクションなどの機能により、オンボーディングとトランザクションプロセスを簡素化します。
- **開発者の柔軟性**: アカウントタイプによる制約なしに、より多用途なスマートコントラクトの構築を可能にします。

## ERC標準の概要

### ERC-6900: Modular Smart Contract Accounts

**ERC-6900**は、モジュラーなスマートコントラクトアカウントの標準化を目指しています。この提案は、アカウント機能をモジュールとして分離し、セキュリティと相互運用性を高めることを目的としています。 

**主な特徴:**

- **モジュラー設計**: 検証、実行、フックなどの機能をモジュールとして分離し、柔軟なアカウント構築を可能にします。
- **ERC-4337との互換性**: ERC-4337のフレームワーク内で動作し、既存のエコシステムとの統合を容易にします。
- **セキュリティ強化**: モジュールごとの権限管理により、アカウントのセキュリティを向上させます。

### ERC-7579: Minimal Modular Smart Accounts

**ERC-7579**は、モジュラーなスマートアカウントとモジュール間の相互運用性を最小限の制約で実現することを目指しています。この提案は、アカウントとモジュールのインターフェースと動作を標準化し、開発者が柔軟に実装できるように設計されています。 

**主な特徴:**

- **最小限のインターフェース**: アカウントとモジュール間の基本的なインターフェースを定義し、実装の柔軟性を確保します。
- **相互運用性**: 異なる実装間でのモジュールの再利用を促進し、エコシステム全体の統一性を高めます。
- **拡張性**: 必要に応じて機能を追加できるよう、拡張性を持たせた設計となっています。

### ERC-4337: Account Abstraction Using Alt Mempool

**ERC-4337**は、コンセンサスレイヤーの変更を伴わずにアカウント抽象化を実現する提案です。ユーザーオペレーション（UserOperation）という新しい概念を導入し、専用のメンプールで管理します。 

**主な特徴:**

- **ユーザーオペレーション**: トランザクションとは別のオブジェクトとしてユーザーオペレーションを定義し、柔軟なトランザクション処理を可能にします。
- **バンドラー**: 複数のユーザーオペレーションをまとめてブロックに含めるバンドラーの役割を定義します。
- **エントリーポイント**: トランザクションの検証と実行を行うエントリーポイントコントラクトを導入します。

### ERC-7484: Registry Extension for ERC-7579

**ERC-7484**は、ERC-7579の拡張として、モジュールのセキュリティ評価を行うレジストリの標準化を提案しています。これにより、スマートアカウントがモジュールを使用する前にセキュリティ評価を確認できるようになります。 

**主な特徴:**

- **モジュールレジストリ**: モジュールのセキュリティ評価を保存し、スマートアカウントが参照できるようにします。
- **アダプター**: スマートアカウントがレジストリと連携するためのアダプターを定義します。
- **セキュリティ強化**: モジュールの導入前にセキュリティ評価を確認することで、アカウントの安全性を高めます。

### ERC-7702: Set EOA Account Code

**ERC-7702**は、Externally Owned Accounts（EOAs）にスマートコントラクトの機能を一時的に付与することを目的とした提案です。これにより、EOAが特定のトランザクション中にスマートコントラクトとして振る舞い、トランザクション後には元の状態に戻ることが可能となります。 

**主な特徴:**

- **一時的なコード設定**: EOAがトランザクション中にスマートコントラクトコードを設定し、トランザクション完了後に元のEOAに戻ります。
- **アカウント抽象化の促進**: EOAがスマートコントラクトの機能を活用できるようにし、アカウント抽象化の実現を支援します。
- **ERC-4337との互換性**: 既存のERC-4337ウォレットやインフラストラクチャと互換性があり、スムーズな統合が可能です。 

### EIP-3074: AUTH and AUTHCALL Opcodes

**EIP-3074**は、EOAがスマートコントラクトに対して自身の代理として行動する権限を与えることを可能にする提案です。これにより、ガス代のスポンサーシップやバッチトランザクションなどの機能が実現します。 

**主な特徴:**

- **AUTHオペコード**: EOAがスマートコントラクトに署名を提供し、代理権限を付与します。
- **AUTHCALLオペコード**: 権限を付与されたスマートコントラクトがEOAの代理としてトランザクションを実行します。
- **ガス代のスポンサーシップ**: 第三者がユーザーのガス代を支払うことが可能となり、ユーザー体験を向上させます。

## 詳細な比較

### 目的と目標

| ERC/EIP標準 | 主な目的 | 目標 |
|-------------|----------|------|
| **ERC-6900** | モジュラーなスマートコントラクトアカウントの標準化 | 柔軟で拡張可能なアカウント構築 |
| **ERC-7579** | 最小限のモジュラーアカウントの実現 | シンプルで相互運用可能なアカウント設計 |
| **ERC-4337** | 代替メンプールを使用したアカウント抽象化 | コンセンサスレイヤーの変更なしにAAを実現 |
| **ERC-7484** | ERC-7579のためのレジストリ拡張 | モジュールのセキュリティ評価と管理 |
| **ERC-7702** | EOAに一時的なスマートコントラクト機能を付与 | アカウント抽象化の促進と互換性の確保 |
| **EIP-3074** | EOAの代理権限付与とガス代スポンサーシップ | ユーザー体験の向上とトランザクション効率化 |

### 主要な特徴

| ERC/EIP標準 | 主な特徴 |
|-------------|----------|
| **ERC-6900** | モジュラー設計、ERC-4337との互換性、セキュリティ強化 |
| **ERC-7579** | 最小限のインターフェース、相互運用性、拡張性 |
| **ERC-4337** | ユーザーオペレーション、バンドラー、エントリーポイント |
| **ERC-7484** | モジュールレジストリ、アダプター、セキュリティ強化 |
| **ERC-7702** | 一時的なコード設定、アカウント抽象化の促進、ERC-4337との互換性 |
| **EIP-3074** | AUTH/AUTHCALLオペコード、ガス代スポンサーシップ、バッチトランザクション |

### 実装と採用状況

| ERC/EIP標準 | 現在の状況 | 実装例 | 採用レベル |
|-------------|------------|--------|------------|
| **ERC-6900** | 提案段階 | 実験的実装 | 低い |
| **ERC-7579** | 提案段階 | 実験的実装 | 低い |
| **ERC-4337** | 実装中 | 複数のプロジェクトで採用 | 中程度 |
| **ERC-7484** | 提案段階 | 実験的実装 | 低い |
| **ERC-7702** | 提案段階 | 実験的実装 | 低い |
| **EIP-3074** | 提案段階 | 実験的実装 | 低い |

### ユースケース

| ERC/EIP標準 | ユースケース |
|-------------|--------------|
| **ERC-6900** | カスタマイズ可能なウォレット、柔軟なアカウント構築 |
| **ERC-7579** | シンプルで相互運用可能なアカウント設計 |
| **ERC-4337** | バッチトランザクション、ガス代スポンサーシップ、メタトランザクション |
| **ERC-7484** | モジュールのセキュリティ評価と管理 |
| **ERC-7702** | EOAのスマートコントラクト機能活用、アカウント抽象化の促進 |
| **EIP-3074** | ガス代スポンサーシップ、バッチトランザクション、ユーザー体験の向上 |

### 利点と欠点

| ERC標準 | 利点 | 欠点 |
|---------|------|------|
| **ERC-4337** | - **コンセンサスレイヤーの変更不要:** 既存のEthereumネットワーク上で導入可能。<br>- **柔軟なトランザクション処理:** バッチトランザクションやガス代のスポンサーシップをサポート。<br>- **ユーザー体験の向上:** カスタム検証ロジックやソーシャルリカバリー機能を提供。 | - **複雑な実装:** エントリーポイントコントラクトやバンドラーの導入により、システム全体の複雑さが増す。<br>- **セキュリティリスク:** 新たなコンポーネントの導入に伴い、セキュリティ上の検討事項が増加。 |
| **EIP-3074** | - **EOAの機能拡張:** 既存のExternally Owned Accounts（EOAs）にスマートコントラクトの機能を付与。<br>- **ガス代のスポンサーシップ:** 第三者がユーザーのガス代を支払うことが可能。<br>- **バッチトランザクション:** 複数の操作を一度のトランザクションで実行可能。 | - **ハードフォークの必要性:** 新たなオペコードの導入には、ネットワーク全体のハードフォークが必要。<br>- **セキュリティリスク:** AUTHCALLの誤用や悪意のあるコントラクトによる攻撃リスクが存在。 |
| **ERC-7702** | - **一時的なスマートコントラクト機能:** EOAが特定のトランザクション中にスマートコントラクトとして振る舞うことが可能。<br>- **アカウント抽象化の促進:** EOAがスマートコントラクトの機能を活用できるようにし、AAの実現を支援。<br>- **ERC-4337との互換性:** 既存のERC-4337ウォレットやインフラストラクチャと互換性があり、スムーズな統合が可能。 | - **実装の複雑さ:** 一時的なコード設定や状態管理に関する複雑な実装が必要。<br>- **セキュリティリスク:** 一時的なコードの誤用や悪意のある操作によるリスクが存在。 |
| **ERC-7484** | - **モジュールのセキュリティ評価と管理:** モジュールの信頼性やセキュリティを評価・管理するためのレジストリを提供。<br>- **拡張性:** 新たなモジュールの追加や更新が容易。 | - **中央集権化のリスク:** レジストリの管理が中央集権的になる可能性。<br>- **複雑なガバナンス:** レジストリの運用や管理に関するガバナンスが複雑になる可能性。 |
| **ERC-7579** | - **シンプルで相互運用可能な設計:** 最小限のインターフェースにより、他のシステムやモジュールとの高い互換性。<br>- **拡張性:** 必要に応じて機能を追加・拡張することが容易。 | - **機能の限定:** 最小限の設計により、デフォルトで提供される機能が限定的。<br>- **採用の遅れ:** 他の標準と比較して採用が進んでいない可能性。 |
| **ERC-6900** | - **柔軟性と拡張性の高いアカウント構築:** モジュラー設計により、さまざまな機能や要件に対応可能。<br>- **セキュリティ強化:** 各モジュールが独立しているため、セキュリティリスクを分散可能。 | - **実装の複雑さ:** モジュール間の連携や管理が複雑になる可能性。<br>- **採用の遅れ:** 新しい標準であるため、採用が進んでいない可能性。 |

2024年11月現在、Ethereumコミュニティではアカウント抽象化（AA）に関連するERC標準の開発が活発に進行しています。以下に、主要なERC標準の最新の開発状況をまとめます。

**ERC-4337: Account Abstraction Using Alt Mempool**

ERC-4337は、現在、多くのプロジェクトが採用し、ユーザー体験の向上やセキュリティ強化を目指しています。特に、ガス代の支払いをERC-20トークンで行う「ペイマスター」機能の導入が注目されています。 

**EIP-3074: AUTH and AUTHCALL Opcodes**

EIP-3074は、2024年第4四半期から2025年第1四半期に予定されている「Pectra」アップグレードでの適用が見込まれています。この提案により、バッチトランザクションや第三者によるガス代の支払いが可能となり、ユーザー体験の大幅な向上が期待されています。 

**ERC-7702: Temporary Smart Contract Functionality for EOAs**

ERC-7702は、ERC-4337との高い親和性を持ち、アカウント抽象化の戦略と互換性が高いとされており、現在コミュニティ内での議論とフィードバックが進行中であり、最終仕様の策定に向けた取り組みが続けられています。

**ERC-7484: Registry Extension for ERC-7579**

ERC-7484は、実験的な実装が進行中であり、モジュールの信頼性やセキュリティを評価・管理するためのフレームワークの構築が進められています。

**ERC-7579: Minimal Modular Account**

ERC-7579は、プライバシー重視のウォレットでの実験的な実装が行われており、ユーザーのプライバシー保護とデータ保護のトレンドに合致した機能の提供が期待されています。

**ERC-6900: Modular Smart Contract Account Standard**

ERC-6900は、限定的な実験的実装が行われており、将来的な拡張や追加モジュールを受け入れる設計の検証が進められています。

## まとめ

Ethereumにおけるアカウント抽象化の領域は、各ERC標準の提案と開発により、多様なアプローチが模索されています。ERC-4337やEIP-3074は、ユーザー体験の向上やセキュリティ強化に寄与する具体的な実装が進んでおり、近い将来の採用が期待されています。一方、ERC-7702やERC-7484などの提案は、コミュニティ内での議論とフィードバックを通じて、最終仕様の策定に向けた取り組みが続けられています。これらの標準が成熟し、Ethereumネットワークに統合されることで、より安全で柔軟かつユーザーフレンドリーなアカウントシステムへの道が開かれることが期待されます。 

### 参考文献

1. **ERC-4337: Account Abstraction Using Alt Mempool**
   - Ethereum Improvement Proposal: [EIP-4337](https://eips.ethereum.org/EIPS/eip-4337)
   - 公式ウェブサイト: [ERC-4337](https://www.erc4337.io/)
   - 解説記事: [ERC-4337 Explained - LCX](https://www.lcx.com/erc-4337-explained/)

2. **EIP-3074: AUTH and AUTHCALL Opcodes**
   - Ethereum Improvement Proposal: [EIP-3074](https://eips.ethereum.org/EIPS/eip-3074)
   - 解説記事: [EIP-3074: Opening the Door to Account Abstraction - The Ambire Wallet Blog](https://blog.ambire.com/eip-3074-allowing-account-abstraction/)

3. **ERC-7702: Set EOA Account Code**
   - Ethereum Improvement Proposal: [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702)
   - 解説記事: [EIP-7702: A Win for Smart Accounts in Ethereum’s Pectra Upgrade?](https://safe.global/blog/eip-7702-smart-accounts-ethereum-pectra-upgrade)

4. **ERC-7484: Registry Extension for ERC-7579**
   - Ethereum Improvement Proposal: [EIP-7484](https://eips.ethereum.org/EIPS/eip-7484)

5. **ERC-7579: Minimal Modular Account**
   - Ethereum Improvement Proposal: [EIP-7579](https://eips.ethereum.org/EIPS/eip-7579)

6. **ERC-6900: Modular Smart Contract Account Standard**
   - Ethereum Improvement Proposal: [EIP-6900](https://eips.ethereum.org/EIPS/eip-6900)

7. **アカウント抽象化に関するコミュニティディスカッション**
   - Ethereum Magicians Forum: [Account Abstraction Discussions](https://ethereum-magicians.org/c/standards/account-abstraction/11)

8. **アカウント抽象化に関する研究論文**
   - "Account Abstraction in Ethereum" by Vitalik Buterin: [Account Abstraction in Ethereum](https://ethereum-magicians.org/t/account-abstraction-in-ethereum/2419)

9. **ERC標準の一覧**
   - Ethereum Improvement Proposals: [ERC一覧](https://eips.ethereum.org/erc)

10. [Ethereum Improvement Proposals (EIPs) リポジトリ](https://eips.ethereum.org/)

11. [ERC4331: EntryPointコントラクトを介したアカウント抽象化](https://eips.ethereum.org/EIPS/eip-4331)
12. [ERC3074: Authorized Transactions](https://eips.ethereum.org/EIPS/eip-3074)
13. [アカウント抽象化に関するコミュニティディスカッション](https://ethereum-magicians.org/)
14. [アカウント抽象化に関する研究論文](https://scholar.google.com/scholar?q=Account+Abstraction+Ethereum)