Account Abstraction(AA)とは?(パート2)

Yakugakusei
boarding bridge
Published in
12 min readJan 4, 2023

Layer 2は、私たちが世界規模で安価で迅速な取引を享受できることを意味します。問題は、クリプトのマスアダプションのために、ユーザーエクスペリエンス(UX)とセキュリティをどのように向上させるかです。

Argentは、Account Abstraction (AA)がその答えだと考えています。

パート2では、Ethereum Layer 1 に AAを導入しようとした過去の試みを取り上げています。なぜ実装に苦戦したのか、その弱点は何なのかを説明します。そして、Layer 2は、私たちが当初から夢見ていたUXを実現するための完璧な機会を与えてくれることを述べて、パート2を締めくくります。

Account Abstractionは何で、なぜ重要なのか?

前回の記事で書いたように、Ethereumには外部所有アカウント(EOA)と契約アカウントという2種類のアカウントがあります。このモデルには厳しい制限があります。

今日のセルフカストディの多くの問題は、Ethereum仮想マシン(EVM)の中核にあるハードコーディングされた承認ロジックに起因しています。ユーザーのトークンを保持するアカウントと、これらのトークンを移動することを許可された署名者の間には緊密なつながりがあります。例えば、Ethereumでは、署名方式はECDSAで、楕円曲線はsecp256k1です。そして、それを回避する方法はありません。

では、AAはこれらの問題をどのように解決するのでしょうか。

AAでは、すべてのアカウントをスマートコントラクトにすることで、アカウントのつながりを断ち切り、取引の承認をプログラミング可能なものにします。AAを使えば、すべてのユーザーが自分のニーズに合わせたカスタム承認ロジックを持つアカウントをデプロイし、使用することができます。

なぜこれが重要なのでしょうか?いくつかの理由を挙げます。

複数の署名者がいると、詐欺の監視をサポートできます。すべての取引を検査して、定義されたセキュリティルールに準拠していることを確認し、ユーザーが詐欺のアドレスや不正なコントラクトに資産を送信することを防止します。
異なる楕円曲線による異なる署名スキーム。署名方式をよりシンプルでガス効率の良いもの、あるいは量子力学に強いものに変更することができます。あるいは、iOSやAndroid端末のセキュアエンクレーブを利用して、すべての携帯電話をハードウェアウォレットにすることも可能です。
ソーシャル・リカバリー。ユーザーの秘密鍵が失われたり、危険にさらされたりした場合に備えて、AAでは、ウォレットがアカウントを制御する鍵を安全に交換する仕組みを追加することができます。シードフレーズに悩まされることはもうありません。
もちろん、これはAAが可能にすることの表面をカバーするにすぎませんが、その可能性は無限大です。

しかし、もしAAが本当にクリプトのマスアダプションを促進するのであれば、まず、なぜEthereumがまだそれをサポートしていないのかに踏み込む必要があります。

なぜEthereumはすでにAccount Abstractionをサポートしていないのですか?

Ethereumに完全なAccount Abstractionを実装することは、プロトコルの心臓部に複数の変更を加える必要があるため、簡単なことではありません。Ethereumで保護される価値が高まるにつれて、調整と実装がますます難しくなる変更です。

このため、2016年に議論され、2017年に当初提案されたEthereum Improvement Proposal(EIP)にもかかわらず、現在もまだAAがEthereumに実装されていないのです。これは、私たちが受け入れざるを得ない、シードフレーズが皆を悩ませ続けるEthereum上のひどいUXという結果をもたらしています。

2016年以降、プロトコルに許容できる変更を必要としながらも、AAの機能の一部をもたらすいくつかのアプローチが提案されています。許容できる変更とは、プロトコルの次のフォークで受け入れられるような小さな変更であるという意味です。

これらの完全ではない形式の AA にはそれぞれ制限があり、特に、まだ広く採用されているものはありません。これが、私たちがL2でのAAの普及を推進している理由の1つです。

AAに関連する様々なEIPの詳細に入る前に、スマートコントラクトウォレットを取り上げる価値があります。これらはAAの正式な提案ではありませんが、プロトコルの変更を必要とせずにAAの利点を模倣する素晴らしい方法です。

スマートコントラクトウォレットとAccount Abstraction

Ethereumのウォレットのほとんどは外部所有アカウントです。MetaMaskはその一例です。これらはシードフレーズに依存しており、UXやセキュリティの改善を書き込むことはできません。

一方、スマートコントラクトウォレットは、カスタムコードでプログラムを組むことができ、取引を承認したり、ネイティブEOAでは不可能なUXを解放したりすることができます。例えば、Argentでは、ソーシャル・リカバリー、マルチコール、オンチェーン詐欺監視など、Account Abstractionと一緒によく挙げられる機能を開拓してきました。これらは、初心者から上級者まで、ユーザーに大きなユーザビリティとセキュリティのアップグレードを提供します。

問題は、スマートコントラクトウォレットは、ネイティブアカウントがEOAであるチェーン上で依然として機能していることです。これは主に2つの結果をもたらします。

  • L1上のスマートコントラクトウォレットは、AAを適切に模倣するために様々な工夫を凝らし、カスタムインフラストラクチャを構築する必要があります。例えば、スマートコントラクトウォレットで取引を実行するために必要な取引手数料を補助するために、リレイヤーと呼ばれるオフチェーンサーバーを使用する必要があります。
  • Ethereumのエコシステム全体がEOAを中心に構築されているため、スマートコントラクトウォレットは二級市民となっています。スマートコントラクトウォレットをサポートするために必要なものはほとんどありませんが、一般的に後回しにされているため、多くのDappsはスマートコントラクトウォレットと互換性がありません。

このような互換性の問題を解決しようとする試みがなされていますが、それぞれトレードオフの関係にあります。

EIP2938

EIP2938は、スマートコントラクトがトップレベルアカウント(取引を開始し、ガス代を支払うことができるアカウント)として機能することを可能にする目的で、Account Abstractionの制限された形態として2020年に提案されました。

これは、新しいAAトランザクションタイプと2つの新しいオペコード(および他のいくつかのマイナーな変更)を導入することによって行われます。これは、将来、より強力な新機能を開発できるようにしながらも、実装が非常に簡単になるように設計されています。

新しい AA トランザクションタイプには 3 つのフィールド { nonce, target, data } が含まれるのみで、target はトランザクションを検証するロジックを含む AA スマートコントラクト、dataはAAコントラクトが検証・実行する必要のあるトランザクションのすべてのパラメータ(コールするコントラクト、渡すペイロード、最大取引手数料、署名など)がカプセル化されています。

比較的単純であるため、EIP2938 は nonce の抽象化、プロキシコントラクトの使用、いわゆるメタトランザクションのサポートなど、AA に期待される機能のいくつかをサポートしません。

より重要なことは、EIP2938 は EOA を置き換えたり取り除いたりしないことです。

EIP3074

EIP3074は、EIP2938の直後に導入され、本質的に逆のアプローチをとっています。スマートコントラクトをトップレベルのアカウントとして機能させる代わりに、ユーザーが自分のEOAの制御をコントラクトに委任できるようにすることで、既存のEOAアカウントをよりスマートコントラクトのように動作させようとするものです。

この委任は、ユーザーに自分のEOAでメッセージに署名するよう求めることで実現されます。そして、その署名されたメッセージと2つの新しいオペコード(AUTHとAUTHCAL)を使用して、インボーカーと呼ばれるターゲットのスマートコントラクトは、それがEOA自身であるかのようにトランザクションを送信することができます。

EIP3074の主な動機は、EOAウォレットの既存のユーザーが、新しい(スマートコントラクト)アカウントを作成したり資産を移動したりすることなく、AAの機能の一部を利用できるようにすることです。特に、ユーザーのためのトランザクションを出資したり、マルチコールを実行したりする機能に主眼が置かれています。

このアプローチは柔軟性を提供する一方で、セキュリティのトレードオフを伴うため、エコシステムのいくつかのメンバーから懸念の声が上がっています。例えば、EIP3074では、ユーザがシードフレーズをバックアップすることが期待されていますが、これはセキュリティの脅威であり、クリプトのマスアダプションに繋がる方法ではないことが分かっています。

スマートコントラクトウォレットは、EOAから大幅にアップグレードされたものです

EOAを改善することは、より速い馬で近代化を図るようなものです。世界が実際に必要としているのは車なのです。

EIP4337

EIP4337は、Account Abstractionに向けた最も新しい提案であり、スマートコントラクトウォレットの進化版と見なすことができます。EIP4337は、オンチェーンおよびオフチェーンに必要なインフラの一部を相互化することにより、Ethereum上のスマートコントラクトウォレットの作成と運用をよりシンプルにするものです。

EIP4337では、ユーザーはもはやトランザクションを行いません。その代わりに、ユーザーはUserOperationをより高いレベルのmempoolに送ります。マイナーやバンドラーはUserOperationのセットをバンドルトランザクションにパッケージ化し、EntryPointコントラクトに送信して実行させることができます。EntryPointコントラクトは、操作の正しい実行を指揮し、マイナー/バンドラーが取引手数料を適切に補償されるようにします。

EIP4337を使えば、どんな開発者でも数行のコードでカスタムスマートコントラクトウォレットを書くことができ、取引手数料の補助方法について気にする必要がありません。

スマートコントラクトウォレットと同様に、EIP4337はプロトコルに変更を加えることなくAAを実現するよう設計されています。しかし、スマートコントラクトウォレットのように、EIP4337はEOAを取り除くことはできず、EIP4337の上に構築されたウォレットはイーサリアム上で二流市民のままです。

Account AbstractionがEthereumに実装されることはあるのでしょうか?

つまり、Ethereumの初期の開発者は常にUXとセキュリティを強化するために完全なAccount Abstractionを実装するつもりでしたが、より緊急の変更を優先して何度も延期されたことがわかります。

では、Mergeが成功した今、AAは実装されるのでしょうか?

それは誰にも分かりません。しかし、私はそれがセルフカストディで必要とされるUXを向上させる唯一の方法であると確信しているので、そうなることを望んでいます

私が知っているのは、エコシステムが徐々にL2に移行していく中で、このAAのさまざまな設計の積み重ねが強固な基盤になっているということです。例えば、StarkNetzkSyncは共にネイティブなアAccount Abstractionでローンチしており、そのデザインはEIP4337に大きく触発されたもので、私はこれを最良の提案と考えています。

最終的には、マスアダプションにおける最大の懸念事項であるEOAを排除することです。一般ユーザーは秘密鍵の管理を行うべきではありませんし、もしEthereumがEOAから移行しないのであれば、少数がセルフカストディを利用し、残りの人々が中央集権的な取引所を利用する世界になります。UXはシンプルである必要があり、EIP4337 は、その実現に近づけてくれます。

願わくば、より多くのL2がこの仕組みをサポートし、より多くのユーザーがAAによる大幅なUXの改善を実感できるようになることを期待します。そうなって初めて、より広いEthereumコミュニティにプロトコルレベルでサポートするように説得することが容易になり、Ethereum上でのAAの夢がついに現実のものとなるのです。

シリーズ最終回では、StarkNetとzkSyncに搭載しているAA独自の機能について、具体的な例を挙げて説明します。

Yakugakusei

Crypto enthusiast / researcher / blogger / ambassador / translator 🇯🇵 Feel free to contact me in English😉

Twitter | Notion | Discord

--

--

Yakugakusei
boarding bridge

Crypto bloger, Programmer, Twitter: @_Yakugakusei_