アカウントアブストラクション(アカウント抽象化) 1: 基礎知識(コラム)
アカウントアブストラクション(Account Abstraction、アカウント抽象化)は、イーサリアム(Ethereum)の規格の一つであるERC-4337で定義され、簡単に言うと「ユーザーがスマートコントラクトをウォレットとして使用できるようにする」ものです。どんな構造でどんなメリット・デメリットがあるのかなどを全4回に分けて解説します。
この単元ではアカウント抽象化の基礎知識について取り上げます。なお、本単元はブロックチェーン開発プラットフォーマーであるAlchemy(アルケミー)が提供する「Understanding Account Abstraction」の内容を翻訳、一部再編集したものとなります。
アカウント抽象化で何が可能になる?
まず、アカウント抽象化をすることで何ができるようになるのでしょうか。MetaMask(メタマスク)など現在広く普及しているウォレットは一般的に秘密鍵で管理されており、EOA(Externally Owned Account、外部所有アカウント)ウォレットと呼ばれています。その一方でアカウント抽象化によって、従来のEOAではなくスマートコントラクトを使用して管理されるウォレットの作成が可能となります。
スマートコントラクトのプログラマブルな性質により、スマートコントラクトウォレットは幅広い新しいユースケースの開発を可能にします。セキュリティや匿名性を損なうことなく取り扱いの複雑さを軽減できることから、スマートコントラクトウォレットはブロックチェーン・ユーザーのマスアダプションを促進する技術として期待されています。
2023年3月1日、イーサリアム財団のYoav Weiss(ヨアブ・ウェイス)は、ERC-4337がイーサリアムのメインネット上で稼働し、アカウント抽象化の一つの機能であるEntryPoint(エントリーポイント)スマートコントラクトが初めてデプロイされたことを発表しました。その後、アカウント抽象化を利用した様々なウォレットプロダクトが誕生し、StarkNet(スタークネット)やzkSync(ジーケーシンク)など代表的なイーサリアムのレイヤー2ソリューションがアカウント抽象化のネイティブサポート導入を発表するなど、アカウント抽象化の普及が始まっています。
スマートコントラクトウォレットとは?
スマートコントラクトウォレットは、スマートコントラクトを使用してデジタルアセット(暗号資産、NFTなど)を保管・管理します。スマートコントラクトウォレットはアカウント抽象化の基盤であり、アカウントの制御をネットワークから「抽象化」し、スマートコントラクトでアカウントを定義しています。
ERC-4337を使用するスマートコントラクトウォレットの例としては、Soul Wallet、Candide、UniPass、Castle、Openfortなどがあります。なお、ERC-4337を使用しないスマートコントラクトウォレットというものも存在し、代表例としてSafeとArgentがあります。
スマートコントラクトアカウントとEOAアカウントの違い
スマートコントラクトアカウントとは、一般的にスマートコントラクトアドレスとして認識されているものと同じものです。当事者間の情報交換を管理するコードが含まれており、全ての情報はオンチェーンに記録されています。スマートコントラクトアカウントは、全てのDeFiプロトコル、NFTコレクション、ERC-20トークンで使用されます。
スマートコントラクトアカウントとEOAアカウントの主な違いは、スマートコントラクトアカウントが様々な「ロジック」を含むことができるということです。一方で、トランザクションを開始できるのはEOAアカウントのみであり、スマートコントラクトアカウントはBundler(バンドラー、操作の取りまとめ者)であるEOAアカウントに依存しています。このBundlerは、ユーザーの操作をまとめてブロックチェーンに送信するトランザクションを実行します。Bundlerについては「アカウントアブストラクション(アカウント抽象化) 2: キーコンセプト」で解説します。
現在のイーサリアムのプロトコルでは、EOAはそれがスマートコントラクトの呼び出しであれ価値の移転であれ、トランザクションを開始できる唯一のアカウントタイプです。スマートコントラクトアカウントが別のスマートコントラクトアカウントを呼び出す場合でも、トランザクションの発信元は常にEOAです。
ERC-4337スマートコントラクトウォレットの仕組み
前述の通り、スマートコントラクトウォレットは自分自身でトランザクションを開始できません。では、どのようにトランザクションを実行するのでしょうか。
スマートコントラクトウォレットはトランザクションを開始できないため、EOAウォレットから呼び出しを行う必要があります。このプロセスは、複数のアカウント抽象化インフラ・プロバイダ(Bundlersなど)とスマートコントラクト(EntryPointなど)によってサポートされています。
スマートコントラクトウォレットのトランザクションの一般的な流れは以下の通りです。なお、各用語については「アカウントアブストラクション(アカウント抽象化) 2: キーコンセプト」で解説します。
1. ユーザーが何らかのトランザクション(UserOperationという形で何らかのトランザクション)の実行を依頼する
2. EOAウォレットを持つBundler(UserOperationを取りまとめてEntryPointスマートコントラクトに送信する事業者)が、全てのUserOperationを取りまとめてEntryPointスマートコントラクトに送信する
3. EntryPointスマートコントラクトは全てのUserOperationを検証し、実行する
4. 複数のUserOperationを取りまとめたEOAウォレットは、ユーザーのウォレットまたはPaymasterから、ユーザーに代わって消費したETHを返済される
技術的な観点からスマートコントラクトウォレットの仕組みを理解するのは難しいかもしれません。しかしエンドユーザーにとってスマートコントラクトウォレットは、特定のルールや条件に沿って機能するプログラマビリティや、複数いる鍵の管理人のうち大半の鍵の管理人が合意すれば鍵を変更できるようになるなどのソーシャルリカバリーなど、EOAウォレットと比較して多くのメリットを提供することができます。具体的にどんなメリットがあるのかは、「アカウントアブストラクション(アカウント抽象化) 3: 利点と懸念点」の単元で解説します。
制作:株式会社Kudasai
Web3ポケットキャンパスはスマホアプリでも学習ができます。アプリではnote版にはない「クイズ」と「学習履歴」の機能もあり、よりWeb3学習を楽しく続けられます。ぜひご利用ください。
▼スマホアプリインストールはこちら
この記事が気に入ったらサポートをしてみませんか?