SevenX Ventures: 一文でわかるアカウント抽象 - ERC4337がどのようにイーサリアムアカウントの進化をもたらすのか?
著者:Rui
多くの人が言うように、アカウント抽象(AA)技術、特にERC-4337は、自己管理型ウォレットのユーザー体験を根本的に変える可能性があり、大規模な採用に向けて拡張することが期待されています。しかし、2023年5月が近づく中で、この基準がまだ初期段階にあることを認識しなければなりません。機会とリスクが共存しています。
*注意:アップグレードの急速な進展に伴い、この記事の内容はすぐに古くなる可能性があり、この記事は私の個人的な見解に基づいています。
TL;DR
ERC4337:
AA基準はまだ初期段階ですが、多くの革新的な構築者がさらなる開発に取り組んでいます。エコシステムのサポートとMetaMaskなどの大規模な製品の普及という大背景の中で、AAが発展を加速し、興奮を呼ぶ成果を生むことが予想されます。
L2:
AAの採用はL2ソリューションによって異なります。大規模なL2(例えばOptimismやArbitrum)はAAをネイティブにサポートしていませんが、ZKSyncやStarknetはサポートしています。
Bundlerサービス:
- AAに期待を寄せ、すべてのEthereum互換のEVM等価L2がネイティブAAをサポートしていない場合、Bundlerサービスはネットワーク内でAAをサポートするための必要条件です。
- オープンソースの特性により、Bundlerサービスは排他的でなく、収益化の道が困難になります。ネットワークの安全性と安定性を確保するためには、異なるBundlerサービスを利用する必要があります。
- プライベートBundlerは、特定のニーズに合わせてプライバシー、安全性、その他の機能をカスタマイズすることで収益を上げることができます。
Paymasterサービス:
- Paymasterサービスは比較的集中化されており(Bundlerサービスと比較して)、契約はオープンソースですが、バックエンドはクローズドです。
- Paymasterサービスは収益モデルを持ち、法定通貨の入金、交換、ブリッジ、自動支払い、セッション、スポンサー料金などの機能と組み合わせて支払いシーンを強化し、dAppの使いやすさを向上させます。
AAウォレットとSDK:
- AAウォレットは、製品の観点から評価できます。これには、キー管理システム、ソーシャルリカバリー、ガス代のスポンサー、多チェーンアカウントの同期、サポートされるブロックチェーンなどが含まれます。
- AAの利点は、スムーズなログイン体験を提供することだけではありません(Web3 Authはホスティング方式で実現可能です)。複雑でカスタマイズされたチェーン上のインタラクションにおいて、AAはdAppに多くの利点を提供できます。
- BDはこの戦局の鍵です。ほとんどのウォレットはDeFiやGameFiをターゲットにし、エコシステムのサポートを得ること、大規模なdAppを説得すること、突破口を見つけることに注力しています。
- 収益化モデルはさらに探求する必要があります。To Business(To B)モデルはあまり収益を上げられず、独自のユーザーを蓄積することもありませんが、To Customer(To C)モデルは高価値のシーンを見つけ、ボリュームに基づいて収益を上げる必要があります。交換機能やブリッジ機能を統合することで収益を上げることができますが、重要なのは持続可能なモデルを見つけることです。
暗号ウォレットの理解
分類
Ethereumネットワークには、外部アカウント(Externally Owned Account, EOA)ウォレット(MetaMaskなど)と契約アカウント(Contract Account, CA)ウォレット(Safeなど)の2種類のアカウントがあります。
EOAウォレットと契約ウォレットの主な違いは、その制御方法にあります。EOAウォレットは個々のユーザーが秘密鍵を通じて制御しますが、契約ウォレットはスマートコントラクトによって制御されます。EOAウォレットはよりシンプルで、個人の暗号通貨の保有量を管理するために使用されますが、契約ウォレットはより複雑なルールを持ち、特定の目的に使用されることがあります。
痛点
EOAウォレットのユーザーは、秘密鍵の保護に注意を払う必要があります。秘密鍵に関するいかなる誤りや不注意も資金の損失を招く可能性があるため、EOAウォレットの使用コストは高く、リスクも高いです。経験豊富な暗号通貨ユーザーでさえ、一度の誤りや不注意な行動によってアカウントの制御を失うことがあります。操作が複雑で、ガス代をスキップできない、またはガス代の代払いができない、ウォレット機能が限られているなど、これらはユーザーを悩ませる問題です。
スマートコントラクトウォレットは一部の問題に対する解決策を提供しますが、Ethereumは現在、すべての操作をECDSAで保護されたEOAからのトランザクションにパッケージ化することを要求しています。これにより、追加の取引手数料が発生し、21000のガス費が余分に消費され、潜在的な中央集権リスクや複雑な操作が伴います。ユーザーは2つのアカウントを管理し、ガス代を支払うために別のEOAにETHを預け入れる必要があるか、中央集権的な中継システムに依存する必要があります。
これらの痛点がAAの新基準であるERC-4337を生み出しました。
ERC4337提案
CAの問題
現在、これらの問題は契約ウォレットで解決できますが、Ethereum自体はすべての内容をECDSAで保護されたEOAからのトランザクションにパッケージ化することを要求しています。これにより、以下のような問題が発生します:
- 追加の取引手数料: 各ユーザーの操作はEOAによって開始されなければならず、21000のガス費が追加で消費されます。
- 複雑性と中央集権: ユーザーはガス代を支払うために別のEOAにETHを預け入れ、2つのアカウントの残高を管理する必要があるか、中継システムに依存する必要があります。これらの中継システムは通常、中央集権的です。
長年にわたり、人々はEthereumベースのブロックチェーン上でアカウント抽象を実現しようと試みてきました。例えば、EIP-86やEIP-2938などです。しかし、これらの方法はすべて共通の層を変更する必要があり、実現が難しいため、うまくいきませんでした。
4337メカニズム
ERC-4337は、UserOperationという名前のより高レベルの擬似トランザクションオブジェクトを導入することによってアカウント抽象を実現します。これは、ロールアップの概念においてバンドルの概念に似ています。幸いなことに、この基準により、コンセンサス層を変更することなくアカウント抽象を構築できます。
EIP 4337のモジュール設計は、スマートコントラクトウォレットのアカウント抽象機能を複数のポートに分割します:
Bundler:
- BundlerはEOAです。すべてのトランザクションがEOAによって開始されなければならないため、Bundlerがあれば、ユーザーはEOAの秘密鍵を作成して記憶することなくスマートコントラクトウォレットのトランザクションをトリガーできます。
- Bundlerの役割:UserOperationを検証し、一連のUserOperationオブジェクトを単一の「バンドルトランザクション」にパッケージ化します。検証されたUserOperationの内容を公共またはプライベートのメモリプールにブロードキャストします。
- Bundlerは、UserOperationを実行した後、最高優先費用と実際のガス費用の差額を収益として得ることができます。通常のトランザクションの中継者と同様に、Bundlerはバンドルトランザクション内のUserOperationをソートすることによってMEVを取得できます。
エントリーポイント:
- エントリーポイントは、すべてのBundlerがUserOperationを実行するために呼び出す必要があるグローバル契約です。エントリーポイントはBundlerとスマートコントラクトウォレットの間の仲介役を果たします。
- handleOpを使用して検証と実行:handleOp関数はUserOperationを入力パラメータとして使用し、最初にチェーン上でUserOperationを検証し、指定されたスマートコントラクトウォレットアドレスによって署名されているか、ウォレットがBundlerに補償するための十分なガス費を持っているかを確認します。検証が成功した場合、関数の署名に基づいて入力パラメータを実行します。スマートコントラクトウォレットに預け入れる必要があるトークンはBundlerにガス費を支払います:BundlerがEOAを使用してhandleOpをトリガーすると、ガス費が発生します。スマートコントラクトウォレットは自分の残高でガス費を支払うことができますが、Paymasterに支払いを要求することもできます。失敗する可能性があります:ガス費が不足している、検証ステップが失敗する;十分なガス費があっても、UserOperationの実行ステップが失敗する可能性があります(例えば、ランタイムエラーなど)。実行が成功したかどうかにかかわらず、エントリーポイント契約はBundlerにガス費を支払ってhandleOp機能をトリガーします。エントリーポイント契約は、スマートコントラクトウォレットにトークンを担保として追加または引き出す機能を提供します。
スマートウォレット:
スマートコントラクトウォレットの主契約は、UserOperationの検証と実行ステップを分離します。これを分離することで、Bundlerはチェーン外でUserOperationを検証し、悪意のあるトランザクションをフィルタリングすることができ、ガス費を支払う必要がありません。
validateOp関数では検証ステップが定義されています:最初のvalidateOp呼び出しでは、Bundlerがチェーン外で検証をシミュレートし、UserOperation内の署名を検証し、スマートコントラクトウォレットが十分なガス残高を持っていることを確認します;2回目のvalidateOp呼び出しはエントリーポイント契約で行われ、UserOperationを実行する前にチェーン上で検証が行われます。
Paymaster:
- Paymasterは、スマートコントラクトウォレットのガス抽象ロジックを定義し、ERC20の同質化トークンを使用してEthereumのガス費を支払うことや、ガス費なしのトランザクションを含みます。
- PaymasterはdAppによってデプロイされるスマートコントラクトで、PaymasterのvalidatePaymasterOpをトリガーできます。
ウォレットファクトリー:
- ウォレットファクトリーは、スマートコントラクトウォレットを作成するための公共契約です。initCodeにウォレットファクトリーのアドレスと新しいスマートコントラクトウォレットのパラメータが埋め込まれると、Bundlerは指定されたパラメータを持つスマートコントラクトを作成するために対応するウォレットファクトリーをトリガーします。人気のあるウォレットファクトリーコードは徹底的に監査されているため、ウォレットファクトリーを使用してウォレットを作成することはより安全です。
- ウォレットファクトリーはエントリーポイントでETHをステークし、UserOperationsに良好なサービスを提供し続ける必要があります。そうすることでBundlerからより多くのトラフィックを得ることができます。
- ユーザーはinitCodeを埋め込んだUserOperationを提出し、BundlerにCAウォレットの作成を要求できます。
- ユーザーは特定のカスタマイズパラメータを持つウォレットファクトリーを選択して、CAウォレットをカスタマイズできます。
署名アグリゲーター:
- 署名アグリゲーターは、複数のトランザクションの署名をバイトに集約し、トランザクションの検証と実行を迅速に行うために使用されます。異なるスマートコントラクトウォレットは異なる署名アルゴリズムを使用するため、最初に同じ署名アルゴリズムを使用して
UserOperations
を集約する必要があります。 - ガス費の節約:チェーン上の暗号計算は大量のガス費を消費するため、署名集約スキーム(例えばBLS)は、チェーン上で検証する際にガス費を節約できます。
- Bundlerは複数の署名アグリゲーター契約を使用して、複数の集約署名を生成します。一度に1つの
UserOperations
を検証するのではなく、複数の署名アグリゲーターを使用します。 - Bundlerは
UserOperation
配列、集約署名、アグリゲーターアドレスをエントリーポイントに渡し、各UserOperation
グループが対応する署名アグリゲーターのvalidateSignature
関数を呼び出します。 - 検証が通過すると、Bundlerはスマートコントラクトウォレット上でこの一連の
UserOperation
を実行します。 - アグリゲーターはエントリーポイント契約にETHをステークし、良好な
UserOperation
サービスの記録を維持する必要があります。
AAの利点
- ガス抽象:
ガス抽象には、ガス費なしのトランザクションが含まれ、任意のERC20トークンを使用してガス費を支払います。このロジックはPaymaster契約内で実行されるか、中継器を通じて実行されます。AAにとって、多くのスマートコントラクトウォレット自体がEIP 4337互換のPaymaster契約を実現でき、エントリーポイント契約でトークンをステークしてユーザーがガス費を支払うのを助けることができます。
- ソーシャルリカバリー:
秘密鍵が失われたり漏洩した場合、ユーザーは新しい鍵を正当なウォレット所有者として認可できます。ソーシャルログインとソーシャルリカバリーのロジックは一般的にウォレットの主契約内で定義されます。電子メール、多重署名、MPC、またはSWIE(Ethereumログインを使用)など、さまざまな方法を採用できます。
- トランザクションバッチ処理:
トランザクションバッチ処理はスマートコントラクトウォレット特有の機能で、ウォレットユーザーが単一のチェーン上のトランザクションで複数のトランザクションを実行できるようにします。
- クロスチェーンブリッジと接続ブリッジの統合:
現在、多くのウォレットが第三者のプロバイダーと提携し、法定通貨の入出金チャネルとクロスチェーンブリッジをウォレットに統合しています。これらの入出金チャネルとクロスチェーンブリッジは、ガス抽象の支払い契約(Paymaster)とさらに統合できます。
- モジュール設計:
AAの最大の利点の1つは、そのモジュールサービスであり、Bundler、Paymaster、その他の部分を柔軟に組み合わせることができます。
AAの欠点
- 手数料(おそらく)相対的に高い:
ERC-4337を使用した単純な送金のコストは、従来のウォレット(通常はEOAと呼ばれる)を使用するよりもはるかに高くなります。なぜなら、前者は契約を呼び出す必要があるからです。
しかし、ロールアップネットワーク上では、ERC-4337を使用した単純な送金はEOAよりも安くなる可能性があります。なぜなら、署名を集約してメインネット上のデータ量を減らすことができるからです。
- 現在未確定の基準:
拡張されたトランザクションのスケーラビリティは攻撃ベクトルの増加を引き起こし、新しい基準への移行時に未知のエラーやセキュリティリスクが発生する可能性があり、すべてのトランザクションが適切に署名され、検証されることを保証するために強力で安全なグローバルエントリーポイント契約が必要です。このような課題があります。
Layer 2
✅ と ❌ はネイティブAAをサポートしているかどうかを示します。
Optimism: ❌
Optimismバージョン1には、スマートコントラクトウォレットのアカウント抽象を実現するための3つのOVMオペコードがあります。しかし、一貫性と安全性の観点から、バージョン2ではこれらのオペコードが削除され、アカウント抽象をサポートするという公式声明はありません。
Arbitrum: ❌
現在、いくつかのスマートコントラクトウォレットがArbitrum上に構築されていますが、アカウント抽象をサポートするという公式声明はありません。
Starknet: ✅
Starknetには、検証と実行機能を持つスマートコントラクトアカウントのみが存在し、すべてのアカウントはこれらの機能を実装する必要があります。Starknetは、未実行のトランザクションを防ぐために、検証機能が外部契約の状態を呼び出すことを禁止しています。しかし、StarknetはEthereumとはいくつか異なる点があり、UserOperations、Paymasterのような取引手数料の抽象プロトコルが欠如しており、新しい契約を作成するためにはトークン残高を持つアカウントが必要です。また、検証されたトランザクションが失敗した場合、Starknetのソーターはガス費を徴収できませんが、Ethereumは可能です。
zkSync: ✅
zkSyncはEOAと契約アカウントを区別しません。そのアカウントモデルはEIP 4337に似ており、独立したvalidateTransactionとexecuteTransaction関数を含みます。PaymasterインターフェースにはvalidateAndPayForPaymasterTransactionとpostOp関数も含まれています。しかし、検証プロセス中にデプロイされた外部契約や外部ストレージを呼び出す能力には違いがあります。Paymasterは取引検証中に外部ストレージを呼び出すこともできます。
AAインフラストラクチャ:
現在、Stackup、Etherspot、Candide、Infinistism、Pimlicoなどの優れたプロジェクトがインフラストラクチャの構築を試みています。
Bundlerサービス:
ビルダー:
- StackupのGolang実装
- CandideのPython実装
- InfinitismのTypeScript実装
- EtherspotのSkandha --- TypeScript実装
いくつかの合意:
- 公益サービス
大多数のBundlerのオープンソース性は、その非排他性と非競争性をもたらします。任意のRPCエンドポイントは、オープンソースコードをコピーすることでBundlerを実行できます。
- 収益化が難しい
Bundlerを実行するRPCエンドポイントがAPIキーを通じてサービス使用料を徴収しても、BundlerサービスはPaymasterのような他のインフラストラクチャよりも収益化が難しいです。なぜなら、Paymasterは第三者の入出金プロバイダーやDeFiプロトコルのアグリゲーターと提携することで、簡単に料金差額を稼ぐことができるからです。
- 重要なインフラストラクチャ
UserOperationを検証し実行するには、できるだけ多くのBundlerが必要です。これにより、より良い分散化が実現されます。現在、サードパーティのBundlerサービスプロバイダーはStackupとeth-infinitismのみであり、私たちはこのようなBundlerサービスプロバイダーをもっと必要としています。
- メカニズム
Bundlerは自らメッセージを伝達し、ユーザーのアクションを拡散します。これは共有メモリプールに似ており、具体的な事柄について合意する必要はありません。Bundlerはスパム情報をフィルタリングする重要な機能を持ち、経済的な理由から、メモリプールの安全性を確保するために監視を行いたいと考えています。
Bundlerサービスの違い:
- Bundlerサービスは汎用インフラストラクチャであることもあれば、特定のウォレットのために構築されることもあります。ウォレットプロジェクトは最も基本的なBundlerを優先して構築する可能性がありますが、サードパーティのプロバイダーはさまざまなシーンに対応するモジュール化されたBundlerを構築する必要があります。
- Ethereumノードと同様に、Bundlerサービスは異なるプログラミング言語で実装されており、単一障害点を防ぎ、エコシステムに利益をもたらします。
- Bundlerサービスはプライベートメモリプールと公共メモリプールをサポートし、プライベートメモリプールにはカスタマイズオプションを提供します。
Paymasterサービス
- Bundlerサービスに対して、Paymasterサービスは比較的集中化されており、契約はオープンソースですが、バックエンドはクローズドです。
- Paymasterサービスには収益モデルがあり、法定通貨の入金、交換、ブリッジ、自動支払い、セッション、スポンサー料金などの機能と組み合わせてdAppの使いやすさを向上させることができます。
AAウォレットとSDK:
製品評価
- キー管理システム:
- 多重署名ロジック(安全):2/3や3/5などの多重署名ロジックのみを実現できます;
- シンプルな権限管理(順序):キーに重みを設定し、アカウント操作にしきい値を設定できます。
- 役割ベースの権限管理(Unipass):キーに重みと役割を設定できます。異なる役割は異なる操作を実行できます。各役割にも対応するしきい値があります。このしきい値を超えると、対応する役割の権限を実行できます。
- ソーシャルリカバリー方法
- ガス代スポンサー:自前の中継器を構築するか、Bundler + Paymasterを設定する
- 多チェーンアカウントの同期
- 多チェーンアドレスの統一
- サポートされるブロックチェーン
ビジネス
- ビジネスモデル:To B / To B + To C / To C
- dAppsとの提携:各チェーンのステーブルコインやDeFiなどの巨大なインフラ型dAppと提携
- 実用性:NFTマーケットプレイス、ローンチパッドなどの統合
- 外部サポート:Ethereum財団や他の著名なベンチャーキャピタルからの支援