Buidler DAO:EIP-4337 アカウント抽象ウォレットの提案は、ウォレットの新時代を切り開くことができるのか?
著者:@菠菜菠菜、Buidler DAO
ウォレットは暗号世界への入り口および通行証として、暗号業界全体において不可欠な地位を占めており、ウォレットの使用は暗号世界に入りたいすべての人にとって避けられない要素です。 ウォレットの機能は、最初の純粋な記帳機能から、現在のマルチチェーン・マルチシーン使用機能へと進化しています。
しかし、現在のウォレットの使用ハードルは新しいユーザーにとって学習コストが高すぎます。 このハードルは、暗号世界に入りたい多くの人々を拒絶しています。ウォレットのハードルを下げることが、暗号世界全体に新しい血液とエコシステムの爆発をもたらすことができます。 EIP-4337のアカウント抽象提案の到来に伴い、アカウント抽象ウォレットによるハードルの低下が、ウォレットを次の時代に導き、暗号世界のユーザー爆発を引き起こすのでしょうか?
TL;DR ▪ 暗号世界の知識ハードルは高く、人々は一般的にブロックチェーンやウォレットに関する知識が不足しており、現段階でのウォレットの使用体験は複雑で、新しいユーザーの参加を妨げる多くの要因があります。
▪ 現段階での初心者ユーザーはウォレットを使用する際にいくつかの痛点に直面します:ウォレットを使用するにはまずガス代が必要であり、暗号資産の購入チャネルを探す必要があり、目まぐるしいメインネットの選択肢やウォレットの安全性の問題があります。
▪ イーサリアム上のウォレットには、EOA(Externally Owned Accounts)とCA(Contract Account)の2種類の異なるアカウントがあります。EOAはプライベートキーとパブリックキーのキー対によって制御されるウォレットであり、プログラム可能な機能を持ちません。CAはスマートコントラクトの形式で存在するウォレットであり、コントラクトアカウントはプライベートキーによって制御されず、プライベートキーも存在しませんが、コードを記述することでさまざまな機能を実現しますが、取引を自発的に開始することはできません。
▪ 2種類のウォレットアカウントタイプにはそれぞれ利点と限界があります。EOAはイーサリアムの規定に従ってキー対を生成する方法で生成され、プログラム可能性はなく、ガス代が必要であり、プライベートキーを失うと回復できません。しかし、CAに比べて、CAはより多くの機能を実現するためにロジックをカスタマイズできますが、取引を自発的に開始することはできず、EOAによって呼び出される必要があります。また、CAを生成するには追加のコストがかかります。これらの2種類のウォレットアカウントタイプは、現在もウォレットの使用体験の複雑さを解決できていません。
▪ アカウント抽象(Account Abstraction)は、イーサリアム上の実現待ちのウォレット技術ソリューションであり、その最終的なビジョンは、AAアカウント抽象ウォレットがEOAとCAの2種類のアカウントタイプの特徴を組み合わせて一体化し、EOAに代わって主アカウントとして存在することです。CAのプログラム可能性を持ちながら、EOAへの依存を脱却し、取引を自発的に開始できるようにします。
▪ EIP-4337提案は、元々イーサリアムウォレットの取引プロセスでコンセンサス層に固定されていた【取引検証メカニズム】を新しいメカニズムに移行させました。この新しいメカニズムの登場により、アカウント抽象ウォレットは署名方式のカスタマイズが可能になり、より多くのアプリケーションシーンをもたらしました。
▪ アカウント抽象を実現したウォレットアプリケーションは、ユーザーがEOAを持たなくても特定の署名方式を使用して取引を開始できるようにし、アカウント抽象ウォレットの所有権と署名権を分離します。アカウント抽象ウォレットのEOA所有者アカウントは所有者として存在するだけで、実際のアカウント抽象ウォレットの使用には影響しません。
▪ EIP-4337がイーサリアムに選ばれた理由は、まずEIP-4337がコンセンサスプロトコル層の変更を必要とせずにアカウント抽象を実現できるためです。これにより、POWからPOSへのような大規模なコンセンサス層の変更を回避できます。
▪ EIP-4337では、アカウント抽象ウォレットが【署名検証メカニズム】を入口契約に委ねることで、アカウント抽象ウォレットは任意の署名形式の署名メカニズムを使用できるようになり、ウォレット開発者は適切なシーンの署名形式を選択してウォレット製品を開発できます。
▪ 現在のアカウント抽象ウォレットは、EOAをウォレット所有者として必要とする依存から完全には脱却できていません。また、現在のアカウント抽象提案にはいくつかの不足やリスクがあります:スマートコントラクトのリスク、高いガス代、技術的実現の問題があります。
現段階の初心者ユーザー
ウォレットの痛点は何ですか?
暗号世界の知識ハードルが高く、人々は一般的にブロックチェーンやウォレットに関する知識が不足しており、現段階でのウォレットの使用体験は複雑で、新しいユーザーの参加を妨げる多くの要因があります。
痛点1:ウォレットを使用するにはまずガス代が必要
初心者ユーザーが期待を持って暗号世界を体験しようとウォレットをダウンロードして準備を整えたとき、初心者は驚くべきことにウォレットが使用できないことに気づきます。ウォレットの中に公的チェーンのネイティブトークン(例えばイーサリアムのETH)がガス代として存在しないため、ウォレットは何の操作もできません。ウォレットのすべてのオンチェーン操作は、マイナーが操作をパッケージ化し、マイナーにガス代を支払う必要があります。この時、初心者は暗号資産の購入チャネルを探し始める必要がありますが、多くのウォレット製品は入出金チャネルを提供していません。ほとんどの初心者の選択肢は中央集権取引所になる可能性があります。 痛点2:暗号資産の購入チャネルと目まぐるしいメインネットの選択
初心者ユーザーが暗号資産を購入しようとするとき、彼らは入出金チャネルを持つウォレット製品、中央集権取引所、OTC取引などのチャネルを選ぶかもしれません。しかし、中央集権取引所やOTC取引チャネルを選択する初心者ユーザーにとって、中央集権取引所で資産を購入した後、ウォレットに転送しようとすると、初心者はさまざまなメインネットの選択肢に混乱することになります。 メインネットを選択することを学ぶには一定の学習コストが必要であり、うっかり間違ったネットワークに転送すると、処理が非常に煩雑になります。OTC取引の場合はリスクが非常に高く、初心者ユーザーは詐欺師のターゲットになりやすいです。 痛点3:ウォレットの安全性の問題
初心者ユーザーにとって、ガス代を何とか確保してウォレットを使用できるようになったとしても、暗号世界全体は初心者にとっては暗い森のようです。初心者ユーザーは、ウォレットに関する暗号学の知識(プライベートキーやパブリックキーなど)を学ぶ必要があり、プライベートキーが何であるかを理解し、プライベートキーの安全性を確保し、暗号の暗い森の中の詐欺から身を守る方法を考える必要があります。 これらは初心者ユーザーにとって学習コストが高く、簡単に騙される可能性があります。最も重要なのは、プライベートキーを一度失ったり忘れたりすると回復できず、Web2アプリケーションのようにパスワードを再取得することはできません。Web2ユーザーにとって、これは非常に慣れないことです。
イーサリアムの既存のウォレットタイプには何がありますか?
現在、イーサリアム上のウォレットにはEOA(Externally Owned Accounts)とCA(Contract Account)の2種類の異なるアカウントがあります。
EOA外部所有アカウント(Externally Owned Accounts)
EOA外部所有アカウントタイプのウォレットは、プライベートキーとパブリックキーのキー対によって制御されるウォレットです。 外部所有ウォレットの機能は、基本的にトークンの受信、保有、送信、およびスマートコントラクトとの相互作用のみであり、プログラム可能な機能はありません。 すべての取引を実行するにはガス代が必要です。外部所有アカウントタイプのウォレットを作成するにはコストはかかりませんが、プライベートキーを生成する方法でのみ作成できます。
CA合約アカウント(Contract Account)
CA合約アカウントタイプのウォレットは、スマートコントラクトの形式で存在するウォレットであり、合約アカウントタイプのウォレット自体はプライベートキーによって制御されず、プライベートキーも存在しませんが、コードを記述することでさまざまな機能を実現します。 例えば、DeFiプロトコル、多署名ウォレット、金庫、ファウンテンなどの機能があり、一般的な用途には多署名ウォレットがあり、複数の外部所有アカウントウォレットの承認が必要な取引を行うウォレットで、通常は企業のウォレット管理に使用されます。合約アカウントウォレットを作成するにはガス代が必要です。合約アカウントウォレット自体は自発的に取引を開始することはできず、外部所有アカウントウォレットによって呼び出され、ガス代を支払って取引を開始します。 これらの2種類のウォレットアカウントタイプにはそれぞれ利点と限界があります。EOA外部所有アカウントは、イーサリアムの規定に従ってキー対を生成する方法で生成され、プログラム可能性はなく、ガス代が必要であり、プライベートキーを失うと回復できません。 しかし、CAに比べて、CA合約アカウントタイプはより多くの機能を実現するためにロジックをカスタマイズできますが、CA合約アカウントタイプは自発的に取引を開始することができず、EOA外部所有アカウントによって呼び出される必要があります。 また、CA合約アカウントタイプのウォレットを生成するには追加のコストがかかります。これらの2種類のウォレットアカウントタイプは、現在もウォレットの使用体験の複雑さを解決できていません。
アカウント抽象とは?
EIP-4337アカウント抽象の利点は何ですか?
アカウント抽象(Account Abstraction)は、イーサリアム上の実現待ちのウォレット技術ソリューションであり、その最終的なビジョンは、AAアカウント抽象ウォレットがEOA外部所有アカウントとCA合約アカウントの2種類のアカウントタイプの特徴を組み合わせて一体化し、EOAに代わって主アカウントとして存在することです。CAのプログラム可能性を持ちながら、EOAへの依存を脱却し、取引を自発的に開始できるようにします。
ここで議論されているアカウント抽象(Account Abstraction)は、Vitalikが提案したイーサリアムEIP-4337提案を指します。この提案は、元々イーサリアムウォレットの取引プロセスでコンセンサス層に固定されていた【取引検証メカニズム】を新しいメカニズムに移行させ、新しいメカニズムの登場によりアカウント抽象ウォレットは署名方式のカスタマイズが可能になり、ガス代の代行、署名の集約、プライバシー保護などのより多くのアプリケーションシーンをもたらしました。
EIP-4337提案が実現したアカウント抽象ウォレットは、EOA外部所有アカウントタイプのウォレットで使用されるイーサリアムの楕円曲線デジタル署名アルゴリズム(ECDSA)キー対の署名方式に制限されず、ウォレットアプリケーションの開発者は任意のタイプの署名スキームをアカウント抽象ウォレットアプリケーションに適用でき、ユーザーは他の署名方式を使用して取引を開始できるようになります。これにより、ユーザーの使用ハードルが低下します。
アカウント抽象を実現したウォレットアプリケーションは、ユーザーがEOAを持たなくても特定の署名方式を使用して取引を開始できるようにし、アカウント抽象ウォレットの所有権と署名権を分離します。アカウント抽象ウォレットのEOA所有者アカウントは所有者として存在するだけで、実際のアカウント抽象ウォレットの使用には影響しません。所有権と署名権の分離により、ウォレット製品はユーザーにソーシャルリカバリーなどの手段を提供でき、ユーザーはプライベートキーを失っても回復できないことを心配する必要がなくなります。
アカウント抽象ウォレットの新しいメカニズムによる拡張性により、ガス代が必要であるという痛点も解決されます。アカウント抽象ウォレットは、第三者がガス代を代行することを許可するだけでなく、ネイティブトークン以外の資産でガス代を支払うことも実現できます。 これにより、初心者ユーザーのガス代の使用ハードルが大幅に低下します。近い将来、アカウント抽象によるより低いハードルとより多くのカスタマイズ機能が、ウォレットの新しい時代を切り開く可能性があることが予見されます。
なぜイーサリアムは
EIP-4337アカウント抽象提案を選んだのか?
アカウント抽象の議論は、イーサリアムが立ち上げられた時から続いており、最初のEIP-101からEIP-3074、そして現在の最新のEIP-4337まで、アカウント抽象の提案はすでにいくつかのバージョンを経てきましたが、大部分の提案は未成熟であり、コンセンサスプロトコル層の変更が非常に複雑であるため、最終的には棚上げされました。
2015年から現在まで、長い議論と反復を経て、最終的にイーサリアムはEIP-3074とEIP-4337の2つの提案の間で選択を行いました。EIP-4337がCAスマートコントラクトアカウントウォレットをEOAのように使用できるようにするものであれば、EIP-3074はEOA外部所有アカウントウォレットにスマートコントラクトアカウントのプログラム可能な機能を持たせるものです。 最終的に、イーサリアムの創設者Vitalikが発表した最新のイーサリアムのロードマップにおいて、EIP-4337はThe Splurge(狂歓)段階に正式に組み込まれ、アカウント抽象の最終提案となりました。
EIP-4337がイーサリアムに選ばれた理由は、まずEIP-4337がコンセンサスプロトコル層の変更を必要とせずにアカウント抽象を実現できるためです。 これにより、POWからPOSへのような大規模なコンセンサス層の変更を回避できます。EIP-3074はコンセンサス層の変更を伴い、問題が発生した場合にはハードフォーク(hard fork)を使用して解決する必要があります。また、EIP-3074はEOA外部所有アカウントにスマートコントラクトアカウントの特性を持たせるもので、署名メカニズムは固定のECDSA署名を使用しているため、EIP-4337のように任意の署名方式を使用することはできません。そのため、EIP-3074に比べてEIP-4337はウォレットのハードルを下げる上でより優位性があります。
画像出典:ethereum.cn翻訳
EIP-4337アカウント抽象ウォレットはどのように機能するのか?
他のウォレットアカウントタイプとの違いは何か?
アカウント抽象は、以前のアカウントタイプに新しい役割とメカニズムを導入しました:
ウォレット契約(Wallet Contract):アカウント抽象後のウォレットスマートコントラクトで、カスタマイズされたウォレットロジックを実現できます。
入口点契約(Entry Point Contract):ウォレット契約と通信し、ユーザー操作の検証と実行を処理する契約です。
ユーザー操作(UserOperations, uo):ユーザーが発起する新しいオフチェーン取引形式で、以前の【取引トランザクションTransaction, tx】とは異なります。
バンドラー(Bundler):ユーザー操作をパッケージ化し、入口点契約に渡すオフチェーン計算ノードです。
ユーザー操作メモリプール(UserOperation Mempool):実行待ちのユーザー操作を蓄積するためのメモリプールで、取引トランザクションメモリプールとは独立しています。
代払人(Paymaster):ガス代を支払うための選択可能な第三者の代払人契約アカウントです。
これらの新しい用語が何であるかわからない場合、次に簡略化されたフローチャートを使って示します。まず、EOA外部所有アカウントタイプのウォレットの取引メカニズムを理解しましょう。EOA外部所有ウォレットは、取引情報に対してECDSA署名を行う必要があります。 画像出典:https://medium.com/nethermind-eth/ethereum-wallets-today-and-tomorrow-eip-3074-vs-erc-4337-a7732b81efc8 図からわかるように、EOAアカウントタイプのウォレットが取引を発起する手順は次のとおりです:
ユーザーはプライベートキーを使用して取引情報にECDSA署名を行い、署名付きの取引トランザクション(Transaction, tx)を生成します。
署名付きの取引トランザクションは、実行待ちのトランザクションを処理するメモリプールに送信されます。
マイナーは取引トランザクションメモリプール内のトランザクションを処理し、有効性を検証します。
有効性が確認されると、取引トランザクションはブロックに組み込まれ、無効な場合は取引トランザクションが廃棄されます。
CA合約アカウントタイプには統一された取引プロセス標準がないため、以下はある種のリレイヤーに依存するスマートコントラクトウォレットの取引プロセスです。CA合約アカウントタイプは、EOA外部所有アカウントタイプのウォレットにECDSA署名を依存して取引を実行する必要があり、リレイヤーという役割は中央集権的なリスクを伴う可能性があります。 画像出典:https://medium.com/nethermind-eth/ethereum-wallets-today-and-tomorrow-eip-3074-vs-erc-4337-a7732b81efc8 図からわかるように、ある種のCA合約アカウントタイプのウォレットが取引を発起する手順は次のとおりです:
ユーザーはプライベートキーを使用して取引情報に任意の形式の署名を行い、署名付きの取引情報(signed message)を生成します。
署名付きの取引情報は、メッセージを伝達するノードリレイヤーに送信されます。
リレイヤーはプライベートキーを使用してユーザー署名付きの取引情報にECDSA署名を行い、取引トランザクションを形成します。
リレイヤーはユーザーの取引情報を含む取引トランザクションをリレイヤーのEOA外部所有アカウントウォレットを介してユーザーのウォレットスマートコントラクトに送信し、実行します。
ユーザーのスマートコントラクトウォレットは操作を実行し、マイナーによって検証された後、ブロックに組み込まれます。
次に、EIP-4337アカウント抽象後のウォレット取引メカニズムを見てみましょう。
画像出典:https://medium.com/nethermind-eth/ethereum-wallets-today-and-tomorrow-eip-3074-vs-erc-4337-a7732b81efc8 図からわかるように、アカウント抽象後の取引を発起する手順は次のとおりです:
ユーザーはウォレットユーザー操作を発起し、任意の形式のプライベートキーを使用してユーザー操作に署名し、署名付きのユーザー操作(UserOperations, uo)を生成します。
署名付きのユーザー操作は、実行待ちのユーザー操作メモリプールに送信されます。
バンドラーはユーザー操作メモリプール内のユーザー操作をパッケージ化し、トランザクションとして入口点契約に提出します。
入口点契約はすべてのユーザー操作を処理します:ウォレットが存在するかを検証し、ウォレットにユーザー操作の検証を要求し、ユーザー操作をスマートコントラクトウォレットに送信して実行します。
スマートコントラクトウォレットはユーザー操作を実行し、ブロックに組み込まれます。
比較すると、EOA外部所有アカウントが取引を発起するには、イーサリアムの固定のECDSA署名アルゴリズムに依存する必要がありますが、CA合約アカウントも最終的にはEOA外部所有アカウントのECDSA署名アルゴリズムに依存して取引を署名します。EIP-4337では、アカウント抽象ウォレットが【署名検証メカニズム】を入口点契約に委ねることで、アカウント抽象ウォレットは任意の署名形式の署名メカニズムを使用できるようになり、ウォレット開発者は適切なシーンの署名形式を選択してウォレット製品を開発できます。ユーザーはウォレットアプリケーションの特定の署名方式を使用してアカウント抽象ウォレットを操作でき、この署名方式はWeb2ユーザーが簡単に使用できる方法や特定のシーンでのカスタマイズ方式である可能性があります。
また、すべてのマイナーがバンドラーの役割を果たすことができるため、バンドラーの中央集権的リスクを回避できます。さらに、バンドラーは取引をバンドルすることで、フラッシュボットがメモリプールを監視してMEVアービトラージを行うのを防ぐことができます。 これらの新しいメカニズムの登場は、第三者がガス代を代行するPaymasterなど、より多くのアプリケーションシーンの想像力をもたらします。
図からわかるように、取引トランザクション(tx)とユーザー操作(uo)は2つの独立したメモリプールです。アカウント抽象の入口点契約の存在により、代払人(Paymaster)契約はレゴブロックのように入口点契約と組み合わせることができます。 入口点契約がユーザー操作(uo)を検証する前に、代払人を検証して確認します:代払人は代払うことに同意していますか?ガス代を支払うための十分なETHを担保に持っていますか?
代払人が完全に補填する場合に加えて、ユーザーのアカウント契約にガス代のトークンがない場合、ユーザーはガス代に相当する他のトークンを代払人契約に転送することで、ETHなしでガス代を支払うことができます。
ガス代の代払いに加えて、入口点契約は署名の集約検証契約と組み合わせて、集約署名機能を実現できます。複数の署名によってウォレットを制御することができます。
以上の事例から、EIP-4337提案の入口点契約のモジュール化された組み合わせ性がもたらすより多くのアプリケーションシーンの想像力を見て取ることができます。アカウント抽象ウォレットは暗号世界全体に非常に多くの利点をもたらす可能性がありますが、現実は本当にそんなに美しいのでしょうか?
EIP-4337アカウント抽象
どのような不足やリスクが存在するのか?
アカウント抽象のビジョンは非常に美しいですが、現実は往々にして厳しいものです。現在のアカウント抽象ウォレットは、スマートコントラクトウォレットの新しい標準のようなものであり、EOAをウォレット所有者として必要とする依存から完全には脱却できていません。 また、私たちは一つの原則を理解しています:複雑な事柄ほど問題が発生しやすいということです。現在のアカウント抽象提案にはいくつかの不足やリスクがあります:
スマートコントラクトの安全性の問題
スマートコントラクトの安全性の問題は、暗号世界を悩ませる難題の一つです。私たちは「スマートコントラクト監査」を通過した多くの契約がしばしば安全な脆弱性を持つことを目にしています。契約の安全性の問題が発生するたびに、通常は巨額の財産損失が伴います。EIP-4337アカウント抽象提案にとって、アカウント抽象ウォレットの機能モジュール化の蓄積と新しいメカニズムの追加は、そのコード実行ロジックをより複雑にし、より複雑なコード実行ロジックは潜在的な安全リスクを伴う可能性があります。 アカウント抽象ウォレットと入口点契約自体がスマートコントラクトであるため、入口点契約またはウォレット契約に問題が発生すると、重大なハッカー事件を引き起こす可能性があります。人々はアカウント抽象ウォレットの使用に対する信頼を失うでしょう。
より高いガス代
潜在的な契約の安全リスクに加えて、アカウント抽象ウォレットはユーザーが支払う必要のあるガス代を高くします。アカウント抽象ウォレットはEOA外部所有アカウントやCA合約アカウントに比べて取引の操作手順が増え、処理ロジックが複雑になり、処理する操作が増えることは、より多くのガス代が必要になることを意味します。VitalikはLayer2を通じてアカウント抽象のデータを処理し、ガス消費を削減する解決策を提案していますが、これには長い時間がかかります。
技術的実現の問題
現在、EIP-4337の実現にはまだ長い道のりがあります。理論的には実現可能な技術が、実践の中で多くの問題に直面することがよくあります。例えば、互換性の問題、複雑なノード検証プロセス、バンドラーの悪用を防ぐ方法、技術的ロジックの実現不可能などです。これらの技術的問題を解決するには、長時間の試行と議論が必要です。これが、EIP-4337がイーサリアムのアップグレードの第6段階Splurge(狂歓)に置かれている理由です。
道は険しく、暗号世界はより低いハードルで安全なウォレットを必要とし、より多くの新しいユーザーを引き付けてユーザー数のボトルネックを突破する必要があります。アカウント抽象の実現が暗号世界に新しい想像力をもたらすことを信じています。近い将来、アカウント抽象を代替する予想外のより良い解決策が現れる可能性もあります。暗号業界の更新の速度は私たちの想像を超えており、これがこの業界の魅力でもあります。