🦾

今後のweb3業界を担うIntent AA。その元となるAccount Abstructionがもたらした変革とその流れ。

に公開

はじめに

現在、L3やIntent Account Abstruction(以降 Intent AAとする)など、よりUXを向上させる動きが活発になっている。その動きを作った大きな革命こそがAccount Abstruction(以降 AAとする)だ。これからのweb3業界の動向をきちんと把握するためにも、今一度このAAに関して本稿で理解を深められたらと思う。

AAがもたらしたものとは

以下の点で大きな変化が起きた。

  • ユーザーがEOA形式のウォレットアカウントを持っていなくても処理指示できるようになった。
  • ユーザー側から見てETH以外でもガス代を払えるようになった。(実際はPaymasterがETHを支払っている)
  • ガス代を払う側を自由に設定できるようになった。

結果、特定のDApp提供者がガス代を肩代わり(スポンサー)する設定を取れるようになり、UXが劇的に変化した。
現在の主流な流れとして、DAppまたはSuperAppごとにユーザーが初回だけ自身でAccountコントラクトデプロイ用のガス代を支払えば(技術的にはこれすらもユーザーの負担にしないようにできる)、それ以降、関連DApp上ではEOAを使用しなくてもそのサービスを利用することができるようになり、サービスやプラットフォーム次第ではガス代も運営側で肩代わりしてくれたりしている(またはETH以外の通貨でガス代を払うことも可能)。

AAが受け入れられた背景とその体制・フロー

まず、こういったインフラ上の技術革新を急速に拡げるにはどれだけその開発者に受け入れられるかが重要になる。そして、AAが急速にEthreum業界を折檻したということは開発者に受け入れられたということでもあり、開発者視点で受け入れられた最大のポイントは「全てコントラクト・オフチェーンだけで実装が完結できる」という点である。これにより、Ethereum L1自体に改修を施すなどの高負荷・高リスクを回避して、UXを大幅に改善できると見込まれたためにAAは急速に多くのDAppサービスで応用された。
では、そのAAを構成しているものは具体的になんなのか?どういった分業体制となっているのか?その点に関して、以下役割ごとに示す。

  • 誰が何をしていいかを規定する
    • Account Contract
  • ガス代のスポンサー
    • Paymaster Contract
  • 実際に行う場所(実質各チェーンに一つしかない)
    • EntryPoint Contract
  • ユーザーの「何かに対する意思」を示す複数の擬似txをまとめて配送する
    • Bundler(オフチェーン)

これらは、ユーザーがAccount Contractを使用するときに、以下の図のような流れでその役割を全うし、ユーザーの意思が反映されるようになっている。

ユーザーはEOAを必要とせず、UserOperationという形で「したいこと」「その対象」の「意図」を伝える。UserOperationはUserOperation Mempoolというオフチェーン上にあるBundler管理下の場所に一旦プールされる。そして、Bundlerが複数のUserOperationをBatchにしてEntryPoint Contractに入力として渡す。EntryPointではまずAccount Contractのルールを参照して「このユーザーの意思は通して大丈夫なものか?」を判断する。ここで引っ掛かればそのUserOperationは処理されなくなる。また、検証結果によらず、その際のガス代は原則Paymasterがいなければユーザー自身、いればPaymasterが負担する形になる。そのため、Bundlerは自己評価を守るために、ほとんどのケースで事前にシミュレーションを行なってから渡している。

Global AAの概念が生まれた背景とIntent AAの紹介

ここまでAAがweb3業界でユーザーにもたらした変革とそこに至るまでの技術的なフローを説明した。しかし、ここで一つこう思った読者もいるのではないだろうか。

「一つのアカウントでチェーンを跨いでサービスを利用することはできないのだろうか?」

この点に関して、技術的に問題となったのがアカウントに紐づいている状態結果であり、以下の点で課題となった。

  • アカウントに紐づくnounceなどの状態結果がチェーンごとに異なる。
  • 上記の状態結果は一つの確固とした「事実」であり抽象化できる対象ではない。

この課題と向き合い続けたweb3業界の有識者らがだした結論は、

「技術的な視点として1ユーザーあたりに1Account Contractで全てのチェーンを跨ぐことはできない。」

しかし、
「UX的に1つのアカウントで全てのチェーンを跨いでサービスを利用できるように見せることはできる。」
そうしてできた概念がGlobal AAだ。この概念はL3の1重要な要素になっている。

そして、現在Intent AAという形ですでにPoC段階を超えて運用されている。このIntent AAの主な特徴として、「ユーザー個人の認証は行わない(身分証自体は見ない)。ただ、その「意図」が正当な権限を有しているかどうか」という点が挙げられる。この点にフォーカスした背景として、

  • web3の世界で「個人」を検証するのはとても難しい。(複数のウォレットアカウント作成など)
  • 一方、AAコントラクト自体は確定的なもの。

であれば、このAAコントラクトを主軸にして、ただその**「意図」がAAに基づくアカウントが許可したことかという点のみにフォーカス**しようという発想で生まれた。(意図の差出人が誰かは考えない。)

今後の記事で、このIntent AAに関して、ユーザー目線・開発者目線でより詳細に説明していこうと思う。

Discussion