アカウントの抽象化 (AA) 技術、とりわけERC-4337 は、自己管理型ウォレットのユーザー体験を根本的に変え、大規模な採用に向けて拡張できる可能性があると言われています。しかし、2023年5月が近づいていることを考えると、この規格はまだ初期段階にあることを認識しなければなりません。今現在、機会とリスクが共存しています。
アカウントの抽象化 (AA) 技術、とりわけERC-4337 は、自己管理型ウォレットのユーザー体験を根本的に変え、大規模な採用に向けて拡張できる可能性があると言われています。しかし、2023年5月が近づいていることを考えると、この規格はまだ初期段階にあることを認識しなければなりません。今現在、機会とリスクが共存しています。
*この記事の内容は、アップグレードの進展により、すぐに古くなる可能性があります。また、個人の見解に基づいています。
AA(アカウント抽象化)はまだ初期段階の標準ですが、多くの革新的なビルダーがさらなる開発に取り組んでいます。エコシステムのサポートとMetaMaskなどの大型プロダクトの普及という背景のもと、AAは発展を加速し、エキサイティングな成果を生み出すと予想されています。
AAの採用はL2ソリューションによって異なります。大規模なL2(例えばOptimismやArbitrum)はAAをサポートしていませんが、ZKSyncやStarknetはサポートしています。
イーサリアムネットワークには、外部所有アカウント (Externally Owned Account, EOA) ウォレットと、コントラクトアカウント (Contract Account, CA) の2種類のアカウントが存在します。MetaMask などの EOA ウォレットは、ユーザーが秘密鍵で制御できるアカウントです。Safe などのコントラクトウォレットは、スマートコントラクトで制御されるアカウントです。EOA ウォレットはシンプルで、個人の暗号通貨の保有量を管理するのに使われますが、コントラクトウォレットはより複雑なルールを持ち、特定の目的に使われることができます。
EOAウォレットのユーザーは秘密鍵を保護する必要があります。秘密鍵に関するあらゆるミスや不注意は資金の損失につながる可能性があります。そのため、EOAウォレットの使用コストは高く、リスクも高いです。経験豊富な暗号通貨ユーザーであっても、一度のミスや不注意で自分のアカウントのコントロールを失うことがあります。操作が複雑で、ガス代を省略したり、代わりに支払ったりすることができず、ウォレットの機能も限られているというのも、ユーザーの悩みです。
スマートコントラクトウォレットは、それら一部の問題に対する解決策を提供していますが、イーサリアムは現在、すべての操作をEOAからのECDSAで保護されたトランザクションにパッケージ化することを要求しています。これにより、追加のトランザクション料金が発生し、21000 ガス代も多く消費されます。さらに、潜在的な中央集権化のリスクや複雑な操作も伴います。ユーザーは2つのアカウントを管理し、個別のEOAにETHを入金してガス代を支払うか、中央集権化された中継システムに依存する必要があります。
このような過不足が、AAの新しい規格であるERC-4337を生み出しました。
現在、これらのことはすべてコントラクトウォレットで解決できますが、イーサリアム自体は、すべての内容をECDSAで保護されたEOAのトランザクションにパッケージすることを要求しています。これにより、以下の問題が発生します。
長年にわたり、イーサリアムベースのブロックチェーン上でアカウント抽象化を実現しようと何度も試みてきました。例えば、EIP-86やEIP-2938などです。しかし、これらの方法はすべてうまくいきませんでした。なぜなら、それらはすべてのコンセンサスを変更する必要があるからです。それは非常に困難なことです。
ERC-4337は、UserOperationという高層の擬似トランザクションオブジェクトを導入することで、アカウント抽象化を実現します。これは、rollupsのようなバンドルの概念に似ています。幸いなことに、この標準により、コンセンサスを変更せずにアカウント抽象化を構築できます。
EIP 4337のモジュール化された設計では、スマートコントラクトウォレットのアカウント抽象化機能を複数のポートに分割しています。
Bundler :
スマートコントラクトウォレットのメインコントラクトは、
UserOperation
の検証と実行のステップを分離します。これにより、Bundlerはチェーン外で
UserOperation
を検証できるようになり、悪意のあるトランザクションをガス代を支払わずにフィルタリングできます。
validateOp
関数で検証ステップを定義する:
validateOp
関数は最初にBundlerによってチェーン外で検証され、UserOperationの署名を検証し、スマートコントラクトウォレットに十分なガス代残高があることを確認します。次に、エントリポイントコントラクトによってチェーン上で検証され、UserOperationを実行する前に検証します。
Gas抽象化には、ガス代のないトランザクションや任意のERC20トークンでガス代を支払うことが含まれます。このロジックは、Paymasterコントラクトやリレーを介して実行することができます。AAにとって、多くのスマートコントラクトウォレットは、EIP 4337に準拠したPaymasterコントラクトを自身で実装でき、エントリーポイントコントラクトでトークンをステークしてユーザーのガス代を支払うことができます。
プライベートキーが紛失したり漏洩したりした場合、ユーザーは新しいキーを合法的なウォレットの所有者として承認することができます。ソーシャルログインやソーシャルリカバリーのロジックは、一般的にウォレットのメインコントラクトで定義されます。電子メール、マルチシグ、MPC、SWIE(Ethereumでログイン)など、さまざまな方法が利用できます。
トランザクションバッチングは、スマートコントラクトウォレットに固有の機能であり、ウォレットユーザーは単一のチェーン上トランザクションで複数のトランザクションを実行できます。
現在、多くのウォレットは、法定通貨の入出金チャネルやクロスチェーンブリッジをウォレットに統合するために、サードパーティのプロバイダと協力しています。これらの入出金チャネルやクロスチェーンブリッジは、ガス代抽象化の中の支払いコントラクト(Paymaster)とさらに統合することができます。
AAの最大の利点の一つは、おそらくそのモジュール化されたサービスであり、Bundler、Paymaster、およびその他の部分を柔軟に組み合わせることができます。
ERC-4337を使って単純な送金を行うコストは、通常EOAと呼ばれる伝統的なウォレットを使うよりも高くなります。なぜなら、コントラクトを呼び出す必要があるからです。
しかし、Rollupネットワーク上では、ERC-4337を使って単純な送金を行う方がEOAよりも安くなる可能性があります。なぜなら、署名を集約してメインネット上のデータ量を減らすことができるからです。
拡張されたトランザクションのスケーラビリティは攻撃ベクトルを増加させ、新しい標準への移行時に未知のエラーやセキュリティリスクが発生する可能性があります。また、すべてのトランザクションが適切に署名され検証されることを保証するために、強力で安全なグローバルなエントリーポイントコントラクトが必要です。これら課題への対応が試されます。
✅ と ❌ はAAをサポートしているかどうかを示します。
Optimism: ❌
Optimismバージョン1には、スマートコントラクトウォレットのアカウント抽象化を実現するための3つのOVMオペコードがありました。しかし、一貫性と安全性のために、バージョン2ではこれらのオペコードは削除され、アカウント抽象化をサポートするという公式の発表はありませんでした。
Arbitrum: ❌
現在、いくつかのスマートコントラクトウォレットがArbitrum上で構築されていますが、アカウント抽象化をサポートするという公式の発表はありませんでした。
Starknet: ✅
Starknetには、署名を検証し、ガス代を確保する機能を持つスマートコントラクトアカウントのみあります。すべてのアカウントは、これらの機能を実装する必要があります。Starknetは、未実行のトランザクションが発生するのを防ぐために、検証機能が外部コントラクトの状態を呼び出すことを禁止しています。しかし、StarknetとEthereumにはいくつかの違いがあります。例えば、UserOperationsやPaymasterのようなトランザクション費用の抽象化プロトコルがないことや、新しいコントラクトを作成するためにはトークンの残高を持つアカウントが必要であることなどです。また、検証済みのトランザクションが失敗した場合、Starknetのソーターはgas費を受け取ることができませんが、Ethereumとの間ではできます。
zkSync: ✅
zkSyncは、EOAとコントラクトアカウントを区別しません。そのアカウントモデルはEIP 4337に似ており、独立したvalidateTransactiomとexecuteTransaction関数を含みます。Paymasterインターフェースには、validateAndPayForPaymasterTransactionとpostOp関数も含まれます。しかし、両者にはいくつかの違いがあります。例えば、検証プロセス中にデプロイ済みの外部コントラクトや外部ストレージを呼び出す能力などです。Paymasterは、トランザクションの検証中にも外部ストレージを呼び出すことができます。
現在、Stackup、Etherspot、Candide、Infinistism、Pimlicoなどの優れたプロジェクトがインフラストラクチャの構築に取り組んでいます。
ほとんどのBundlerのオープンソース性は、それらが排他的でも競争的でもないことを意味します。どのRPCエンドポイントも、オープンソースのコードをコピーすることでBundlerを実行できます。
Bundlerを実行するRPCエンドポイントがAPIキーでサービス利用料を請求しても、Bundlerサービスは他のインフラストラクチャ(例えば、支払いコントラクトPaymasterなど)よりも収益化が難しいです。なぜなら、Paymasterは第三者の入出金プロバイダーやDeFiプロトコルのアグリゲータープロバイダーと協力して、簡単に手数料差を稼ぐことができるからです。
UserOperationを検証し実行するには、できるだけ多くのBundlerが必要です。これは、分散化をより良く実現するためです。現在、第三者のBundlerサービスプロバイダーはStackupとeth-infinitismしかありませんので、もっと多くのBundlerサービスプロバイダーが必要です。
マルチシグロジック(セキュリティ):2/3や3/5などのマルチシグロジックのみを実現できます。
シンプルな権限管理(順序):キーに重みを設定し、アカウント操作に閾値を設定できます。
ロールベースの権限管理(Unipass):キーに重みとロールを設定できます。異なるロールは異なる操作を実行できます。各ロールには対応する閾値があります。この閾値を超えると、対応するロールの権限を実行できます。