State of Wallets 2024

## はじめに
ウォレットは、ユーザーがブロックチェーンアプリケーションと対話するための主要なインターフェースとして機能します。ユーザーは複数のウォレット（例えば、複数のMetaMaskアカウント）を保持することが一般的ですが、新しいウォレットプロバイダーへの秘密鍵の移行プロセスは通常煩雑です。このユーザーフレンドリーなポータビリティの欠如は「スティッキネス効果」を生み出し、ユーザーが既存のウォレットプロバイダーに縛られる原因となっています。

注文フローを巡る競争の激化は、ウォレットプロバイダーにとってユーザー獲得と維持の重要性を高めています。この競争環境は興味深い展開をもたらしており、Uniswap、1inch、Curve Financeといった分散型金融（DeFi）アプリケーションが独自のウォレットを作成しています。この戦略的な動きにより、これらのDeFiプラットフォームはユーザーの注文フローに対する制御を強化し、より多くの価値を捕捉し、より統合されたユーザー体験を提供する可能性があります。

この傾向は、ブロックチェーンエコシステムにおけるユーザー、ウォレット、DeFiアプリケーション間の関係が進化していることを示しています。注文フローを巡る戦いがウォレットの景観をどのように再形成し、DeFi分野の主要プレイヤーの戦略にどのような影響を与えているかを浮き彫りにしています。

![](https://storage.googleapis.com/zenn-user-upload/94f6dd5a7fa3-20241129.png)

## ウォレットの分類

Web3ウォレットは、一般的に第三者が管理する**カストディアルウォレット**と、ユーザー自身が管理する**ノンカストディアルウォレット**に分類されます。ここでの「管理」とは、ウォレットの秘密鍵を誰が保持しているかを指します。

### カストディアルウォレット

カストディアルウォレットは主に暗号取引所やTelegramボットによって提供され、ユーザーの秘密鍵を保持し、ユーザーに優れたユーザーエクスペリエンスを提供します。しかし、ユーザーは資金に対する完全な制御を持たず、これらの第三者がユーザーの許可なく資金にアクセスする可能性があります。

### ノンカストディアルウォレット

ノンカストディアルウォレットでは、ユーザーが秘密鍵を保持し、完全に制御します。秘密鍵が失われると、ユーザーはウォレットおよび資金へのアクセスを失います。ホットウォレットの秘密鍵はアプリケーションと対話するインターネット接続デバイスに保存され、コールドウォレットは専用のエアギャップハードウェアデバイスに秘密鍵を保存し、アプリケーションと接続しません。

ノンカストディアルウォレットには、ユーザー体験とセキュリティを向上させるさまざまな技術を持つ異なるタイプがあります。

## MPCウォレット

マルチパーティ計算（MPC）ウォレットは、秘密鍵を暗号化、分割、複数のデバイスに分散する暗号技術を使用します。これらのデバイスまたはパーティは、秘密鍵やデータを明かさずに計算を評価する必要があります。MPCウォレットで使用されるマルチパーティ計算プロトコルは、通常以下の特性を持ちます：

- **閾値セキュリティ**: 事前に定義された数のパーティが協力してトランザクションに署名する必要があります。
- **鍵分割**: 秘密鍵を複数のシェアに分割する能力。
- **分散鍵生成**: 秘密鍵を分散的に生成し、単一のパーティが完全な秘密鍵を知ることがないようにします。

### MPCウォレットの利点

- **セキュリティ**: 秘密鍵を単一の人が制御しないため、攻撃者は複数のパーティを攻撃する必要があり、ウォレットのセキュリティが向上します。
- **リカバリ**: 複数の場所に暗号化された鍵シェアが保存されているため、鍵が失われた場合でも認証されたパーティがアカウントを回復できます。
- **アクセシビリティ**: 秘密鍵シェアが安全に分散されているため、資産をオンラインで保持でき、ホットウォレットのセキュリティを損なうことなくトランザクションをより効率的に実行できます。

## 外部所有アカウント（EOA）

外部所有アカウント（EOA）は、ユーザーが管理するユニークな秘密鍵によって管理され、オンチェーンでスマートコントラクトと対話します。

EOAは、秘密の楕円曲線デジタル署名アルゴリズム（ECDSA）鍵を使用してデジタルトランザクションに署名および検証します。ユーザーはEOAを通じてトランザクションを送受信し、スマートコントラクトと対話し、メッセージを承認できます。

EOAを作成するには、ウォレットUIが秘密鍵とシードフレーズを生成します。秘密鍵とシードフレーズが一意であるため、ユーザーが両方を失うとウォレットおよび資金へのアクセスを失います。

## スマートコントラクトウォレット

スマートコントラクトウォレット、またはスマートウォレットは、アカウント抽象化とスマートコントラクトのプログラム可能性を活用してユーザー体験を向上させます。スマートコントラクトウォレットは秘密鍵によって制御されるのではなく、コントラクトコードによって制御されます。ERC-4337のようなアカウント抽象化プロトコルは、EOAウォレットがトランザクションを開始する必要性を回避するのに役立ちます。スマートコントラクトウォレットは、以下のような機能をプログラムすることができます：

- 二要素認証
- アカウントの凍結
- 柔軟なリカバリ
- トランザクションのバッチ処理
- 転送および支出の制限
- セッションキー
- ガススポンサーシップおよび非ネイティブトークンのガス支払い
- マルチシグウォレット

EOAと比較して、スマートコントラクトウォレットはコントラクトコードの実行およびイベントの発行に伴う小さなガスオーバーヘッドがあります。スマートコントラクトはEOAに比べて本質的に複雑で強力であるため、監査済みで実績のあるスマートコントラクトウォレットのみが信頼されるべきです。

## アカウント抽象化

アカウント抽象化の実装、特にERC-4337を通じて、スマートコントラクトウォレットやBundler、Paymasterといった新しいエンティティを導入することで、ブロックチェーンネットワークとのユーザーインタラクションを革新し、ユーザーエクスペリエンスを向上させるとともに、トランザクション処理および手数料構造に新たな機会と課題を生み出しています。

### ERC-4337

アカウント抽象化の主要な目標は、すべてのユーザーがEOAを持つ必要性を排除し、ユーザーがスマートコントラクトウォレットを主要なアカウントとして使用できるようにすることです。アカウント抽象化は、アカウント管理とトランザクション実行をEOAから分離することでこれを実現します。アカウント抽象化では、新しいエンティティである**Bundler**と**Paymaster**を使用します。

![](https://storage.googleapis.com/zenn-user-upload/6a08b259976a-20241129.png)

#### Bundler

Bundlerは、複数のユーザーオペレーションをトランザクションに組み立て、エントリーポイントコントラクトに送信します。BundlerはユーザーがEOAウォレットを持つ必要性を抽象化し、トランザクションを開始する役割を担います。現在のBundlerにはSkandha、Alchemy、Rundler、Voltaire、Alto、Stackup、Infinitismなどがあります。

#### Paymaster

Paymasterは、ウォレットのガス支払いポリシーを処理するスマートコントラクトです。Paymasterは、ガス支払いに許容される通貨、ステーブルコイン、または他のERC-20トークンを決定し、アプリケーションがユーザーのガス料金を支払うことを可能にします。
![](https://storage.googleapis.com/zenn-user-upload/c749a3afa8f9-20241129.png)
![](https://storage.googleapis.com/zenn-user-upload/27d16db83ff7-20241129.png)
![](https://storage.googleapis.com/zenn-user-upload/c1d74c975bbd-20241129.png)

### 将来の影響

ERC-4337の下では、Bundlerは今日のブロックビルダーと類似した位置にあり、スマートコントラクトウォレットとの独占的な注文フロー契約を実行できます。独占的な注文フローは、Bundlerが最高の優先手数料を競い、失敗したBundlerがUserOperationのリバートによるガスコストを支払うため、Bundlerにとって重要です。

UserOperationメモリプールは公開されているため、UserOperationはフロントランニングやサンドイッチ攻撃によるMEV（最大抽出可能価値）の影響を受けやすくなっています。BundlerはUserOperationをバンドルトランザクションに順序付けてバッチ処理するため、BundlerはこのMEVの一部を捕捉できます。サーチャーはBundlerを実行してMEVを抽出することが可能であり、Bundlerとビルダーが統合することで追加の注文フローを取得することができます。

## EIP-7702とEIP-7212

スマートコントラクトウォレットの潜在能力を完全に引き出し、ウォレットエコシステムのゲームチェンジャーとなり得るアカウント抽象化のEIPが2つあります。

### EIP-7702

EIP-7702はEOAに以下の機能を導入します：

- **バッチ処理**: ユーザーは1つのアトミックトランザクションで複数の操作を実行できます。
- **スポンサーシップ**: 別のアカウントXまたはアプリケーションオペレーターがアカウントYのトランザクションを支払うことができます。アカウントXはこのサービスに対してERC-20トークンを受け取ることができます。
- **権限の段階的削減**: ユーザーは特定の権限を提供するサブキーを署名します。例えば、特定のアプリケーションとのみインタラクション、特定のERC-20トークンのみのトランザクション使用、および転送制限などです。

EIP-7702はERC-4337との後方および前方互換性を持つように設計されており、EOAが既存のERC-4337インフラを利用することを可能にします。EOAは一時的にスマートコントラクトウォレットに変換され、ERC-4337バンドルに含まれることもできます。

#### EIP-7702の利点

- **セキュリティリスクの低減**: EIP-7702はトランザクションのためにEOAにスマートコントラクトコードを割り当てる際の中央の信頼ポイントを排除します。トランザクションが実行された後、コントラクトコードが削除されるため、EIP-7702では不正なトランザクションの可能性がありません。
- **dAppsの採用の容易さ**: ERC-4337を使用するアプリケーションは、コードの変更なしにEIP-7702と容易に統合できます。EOAは認証なしにスマートコントラクトを呼び出すことができます。

#### EIP-7702の課題

- **取り消し**: EIP-7702には、悪意のあるコードが検出された場合にコントラクトコードを取り消す明確な詳細がありません。
- **チェーン非依存の署名**: EIP-7702は固定の署名を使用しており、他のチェーンで再利用可能ですが、ユーザーが異なる実装を望む場合の柔軟性に欠けます。

### EIP-7212

EIP-7212、またはRIP-7212は、「secp256r1」楕円曲線標準を使用した署名検証のためのコントラクトを作成します。この標準は、最大のWeb2企業によってユーザー認証に採用されており、ERC-4337のスマートコントラクトウォレットに統合することができます。

**「secp256r1」** は現在、以下の認証アプリケーションで使用されています：

- **AppleのSecure Enclave**: Secure Enclaveは鍵を作成および保存するTrusted Execution Environment（TEE）ハードウェアです。Secure Enclaveはデータを暗号化または復号化し、任意のメッセージに署名できます。これは生体認証を通じてのみアクセス可能です。
- **WebAuthn**: Web Authenticationは、ほとんどのWeb2ブラウザ（Chrome、Firefox、Edge、Safari）で使用される認証のためのウェブ標準です。WebAuthnはドメイン固有の公開鍵暗号を使用してユーザー認証を行い、パスワードを排除し、迅速なリカバリとセキュリティリスクの低減を提供します。
- **Android Keystore**: Android Keystoreはセキュアなシステム資格情報のストレージです。アプリケーションは秘密鍵および公開鍵を作成し、Keystoreに保存できます。Keystoreはユーザーのモバイルパスワードに基づいて暗号化され、パスワードまたは生体認証を通じてアクセスできます。
- **Passkeys**: Passkeysは、ユーザーが生体認証またはPINを使用してパスワードなしでアカウントにアクセスできるFIDO資格情報です。ユーザーはモバイルデバイスのロックを解除することで、ウェブサイトやアプリにアクセスできます。

RIP-7212はEIP-7212のロールアップバージョンであり、Kakarot、Polygon、Optimism、zkSync、Scroll、Arbitrumのチームが既に実装にコミットしています。Polygonはテストネット上でRIP-7212を利用可能にしており、Coinbaseが最近開始したSmart WalletsにはPasskey認証が含まれています。
![](https://storage.googleapis.com/zenn-user-upload/3fddb4a1ae6e-20241129.png)

### Passkeysの動作原理

1. スマートコントラクトウォレットがPasskeyまたは公開鍵・秘密鍵ペアを作成します。
2. 秘密鍵はユーザーのモバイルデバイスのTEEに保存されます。
3. スマートコントラクトウォレットが承認のためにトランザクションを作成すると、ユーザーは生体認証またはモバイルPINで自分自身を認証し、秘密鍵を解除します。
4. モバイルデバイスは秘密鍵を使用してトランザクションに署名し、完成したトランザクションをスマートコントラクトウォレットに送信します。
5. 署名はRIP-7212スマートコントラクトを通じてオンチェーンで検証されます。

### 将来の影響

EIP-7702はまだ提案段階ですが、RIP-7212はL2ロールアップに積極的に統合され、スマートコントラクトウォレットに実装されています。Passkeyウォレットは、パスワードやシードフレーズの必要性を排除し、セキュリティをハードウェアレベルに引き上げることでERC-4337スマートウォレットを強化します。現在、Passkeyを特徴とするプロジェクトには以下が含まれます：

- **Coinbase Smart Wallet**: CoinbaseのSmart Walletはユーザー認証とスポンサー付きガストランザクションにPasskeyを利用しています。Smart Walletは8つのネットワーク（Base、Ethereum、Optimism、Arbitrum、Polygon、Avalanche、BNB、Zora）をサポートし、dApps統合のためのウォレットSDKを提供しています。
- **Clave**: ClaveはモバイルTEEおよびPasskeyを利用して、ソーシャルリカバリ、アカウントネーミングサービス、生体認証ログイン、zkSync上のスポンサー付きガス料金を提供します。
- **Banana SDK**: BananaのSDKはWebAuthnを利用して、ゼロ知識2FA、生体認証、およびノミニーを持つリカバリアカウントを提供します。
- **Turnkey**: TurnkeyはWallet-as-a-Service（WaaS）プロバイダーであり、秘密鍵をTEEに保存します。

## EIP-712

EIP-712は、オフチェーンでのメッセージ署名をオンチェーンでの署名に対応させることを目的とした型付きメッセージ署名の標準です。これにより、システムのセキュリティ特性を失うことなく、署名を人間が読みやすい形式で表示できるようになります。オフチェーン署名はガスを節約し、オンチェーンのトランザクション数を減少させます。
![](https://storage.googleapis.com/zenn-user-upload/c605422f0181-20241129.png)
![](https://storage.googleapis.com/zenn-user-upload/da4c3ebab2cc-20241129.png)

### EIP-712の動作原理

1. dApps開発者はユーザーが署名するJSONデータ構造を利用します。
2. ドメインセパレーターにより、署名が複数のdAppsで使用されることを防ぎ、特定のdApp内で複数の異なる署名使用ケースを可能にします。
3. ウォレットおよびフロントエンドオペレーターはdAppのデータ構造を解析し、ユーザーにとって読みやすいメッセージに変換します。

![](https://storage.googleapis.com/zenn-user-upload/0c85022f1427-20241129.png)

### EIP-712の主要機能

- **トランザクションフローの制御**: EIP-712により、dAppsはユーザーの注文フローを制御できるようになり、UniswapのようなアプリケーションはスワップがOFAや他のMEV値抽出者をバイパスすることでユーザーのMEVを最小化できます。
- **ガバナンスの利便性向上**: ユーザーはEIP-712の署名機能を使用して、第三者がガス料金を支払うための署名済みのデリゲートまたは投票トランザクションを無料で作成できます。

### 将来の影響

EIP-712はウォレットの可読性向上に加え、以下の分野でユーザーエクスペリエンスを向上させるために使用できます：

- **ガバナンス**: ユーザーは署名によって投票を委任し、第三者がガス料金を支払うことができます。
- **明確な署名**: ハードウェアウォレットや別のデバイスがdAppのメッセージを表示し、ユーザーがマルウェアや悪意のあるアプリケーションによってメッセージが送信されていないことを確認できます。
- **リプレイ攻撃防止**: リプレイ攻撃を防ぐためのデータをEIP-712の構造化データ内に含めることができます。
- **MEVの最小化**: EIP-712により、ユーザーはトランザクションに署名し、フロントエンドがネットワークにブロードキャストすることなく注文フローを送信することが可能になり、ユーザーのMEVに対する露出を最小限に抑えます。

## 実行、制御、分散化

ウォレットプロバイダーの主要な課題の一つは、ユーザーと規制当局に対してセルフカストディおよびオンチェーンアカウントについて教育することです。しかし、Web3エコシステムが成熟するにつれて、主要なステークホルダーは以下の重要なポイントを理解するようになりました：

- ウォレットはユーザーの資産を保持、管理、またはカストディしません。単にアクセスするためのインターフェースを提供するだけです。
- ブロックチェーンアドレスはウォレットとは独立して存在し、ウォレットによって作成または管理されることはありません。
- ユーザーは異なるウォレットプロバイダー間を自由に切り替えることができます。資産およびアカウントはオンチェーンに存在し、特定のウォレットサービスとは分離されています。

この理解の深化は、暗号エコシステムにおけるウォレットの役割を明確化し、従来の金融サービスプロバイダーと区別する上で重要でした。

### 将来の影響

ウォレットは今後も違法金融やセルフカストディを巡る議論の最前線に立ち続けるでしょうが、規制の将来の会話の多くは分散化の概念にシフトします。過去数年間、暗号業界は分散化の概念を活用して、規制当局に対して従来の金融証券規制が暗号サービスに適用されるべきではない理由を説明してきました。この議論は特に制御および責任のある当事者に関する質問に対応しています。

従来の金融規則やガイダンスは、仲介者を規制して消費者保護と説明責任を提供します。しかし、重要な課題が浮上します：サービスが本質的に仲介者ではなく、ユーザーの資産をカストディしない、または操作を実行しない場合に、これらの目標をどのように達成するかです。

分散化は、概念および設計目標として、暗号に対して従来の金融サービス規制を適用することが難しい理由を説明するのに役立ちました。しかし、現在、規制当局は分散化の定義をさまざまなサービス（ウォレット、分散型取引所（DEX）など）に適用しようとする新しい規制ディスコースの段階に入っています。規制当局は、多くの暗号サービスを「名ばかりの分散化（decentralized-in-name-only）」として分類する機会を見出しています。この分類は主に以下の2つの要因によります：

1. **真の分散化基準を満たすことの負担が、多くのサービスにとって技術的に実現不可能であること。**
2. **これらの分散化基準が規制の実際の目標と一致しない可能性があること。**

この規制アプローチの変化は、暗号サービスの分類および将来の規制方法に重大な影響を与える可能性があります。そのため、規制ディスコースの次の段階は制御の概念にシフトします。主要な質問は以下の通りです：

- ウォレットはユーザーの操作の実行を制御していますか？
- DEXは操作の実行方法や執行方法を制御していますか？

暗号業界全体が、分散化サービスの概念を超え、制御、データ、プライバシーに関する会話に進む新しい運用モデルを開発する上で大きな進歩を遂げています。

## 結論

ブロックチェーンエコシステムにおけるウォレットの進化は、ユーザー体験の向上とセキュリティの強化を目指す多様な技術革新を反映しています。MPCウォレットやスマートコントラクトウォレット、アカウント抽象化プロトコル（ERC-4337、EIP-7702、EIP-7212、EIP-712）などの技術は、ウォレットの利便性と安全性を大幅に向上させています。さらに、DeFiアプリケーションが独自のウォレットを作成する動きは、ユーザーの注文フローに対する制御を強化し、エコシステム全体の競争を激化させています。

将来的には、分散化から制御とプライバシーに関するより複雑な議論へと焦点が移行し、TEEsの活用や実行、確定、決済の明確な定義が求められるでしょう。これにより、ウォレットプロバイダーやDeFiプラットフォームは、より安全で使いやすいサービスを提供しながら、規制の変化にも適応していく必要があります。

ブロックチェーン技術の進化とともに、ウォレットの役割もますます重要になっており、ユーザー、プロバイダー、規制当局の間での協力が、エコシステム全体の健全な発展に不可欠です。

## 参考文献

1. https://writings.flashbots.net/state-of-wallets-2024#account-abstraction
2. [Coinbase, How Base is making smart wallets the default](https://www.coinbase.com/)
3. [Github, EIP-7702](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7702.md)
4. [Zyfi, Into the future with EIP-7702 - Part-1](https://zyfi.com/)
5. [Quicknode, EIP-7702 Explained: The Future of Ethereum](https://www.quicknode.com/)
6. [Web3Auth, EIP-7702 Explained: How it Works and Everything You Need to Know](https://web3auth.io/)
7. [Erdogan, U., Alpaslan, D., Posch, DC., Bhardwaj, N., EIP-7212: Precompile for secp256r1 Curve Support](https://eip.ethereum.org/)
8. [Alchemy, What is RIP-7212? Precompile for secp256r1 Curve Support](https://www.alchemy.com/)
9. [Apple, Secure Enclave](https://developer.apple.com/documentation/security/secure_enclave)
10. [WebAuthn, WebAuthn Guide](https://webauthn.guide/)
11. [Android Authority, How to use the Android Keystore to store passwords and other sensitive information](https://www.androidauthority.com/)
12. [Google, Ask a Tech Expert: What are Passkeys?](https://support.google.com/)
13. [Coinbase, Smart Wallet Documentation](https://docs.coinbase.com/)
14. [Clave, Clave FAQ](https://clave.com/faq)
15. [Banana Wallet SDK Docs, Banana SDK Documentation](https://docs.banana.com/)

## 参考リンク

- [ERC-4337 詳細](https://eips.ethereum.org/EIPS/eip-4337)
- [EIP-7702 詳細](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7702.md)
- [EIP-7212 詳細](https://eip.ethereum.org/EIPS/eip-7212)
- [EIP-712 詳細](https://eips.ethereum.org/EIPS/eip-712)

## 関連記事

- [スマートコントラクトのセキュリティベストプラクティス](https://www.example.com/smart-contract-security)
- [DeFiの未来：新しい金融エコシステムの構築](https://www.example.com/defi-future)
- [分散型アプリケーション（dApps）の開発ガイド](https://www.example.com/dapp-development)