スマートアカウントを理解する
イーサリアムのスマートアカウントが実用的な進歩を続けています。
スマートアカウントとは
アカウント抽象化技術
のことで
ユーザーがアカウントでスマートコントラクトが使用可能になるブロックチェーン技術
です。
スマートアカウントの実装により
ガス代をユーザー側でなく、サービス提供側が支払う(建て替える)ことが可能
イーサやERC20トークンで、サブスク等の引き落としが可能
になります。
現在、上記の事柄は、既存のイーサリアムアカウント(EOA)では不可能ですが、今後スマートアカウントが当たり前になれば上記のような
暗号通貨で日常の支払いに必要な機能が実現できる
ようになります。
例えば
ステーブルコインと組み合わせることで、銀行やクレジットカードより低い手数料で自動引き落としを可能にする
ようなことも可能です。
これ以外にも、スマートアカウントには様々な用途が考えられます。
なのでweb3のサービス提供者は、スマートアカウントについて理解をしておく時期にきています。
というわけで今回は
スマートアカウントを理解する
というテーマで記載します。
具体的には
スマートアカウントとは
スマートアカウントの構成と仕組み
スマートアカウントのメリット
についてお話します。
スマートアカウントとは
スマートアカウントとは
ユーザーがアカウントでスマートコントラクトを使用可能にするブロックチェーン技術
です。
スマートコントラクトを利用するので「ロジック」を実装して、様々なことが可能になります。
イーサリアムのアカウントには現在
外部所有アカウント(以下EOA)
コントラクトアカウント(以下CA)
の2種類のアカウントが存在します。
外部所有アカウント(EOA)は一般的にユーザーアカウントと呼ばれ、コントラクトアカウント(CA)はスマートコントラクトと呼ばれています。
普段皆さんがMetamaskや暗号通貨取引所等で利用しているアドレスは、外部所有アカウント(EOA)です。
スマートアカウントはEOAでCAを使用可能にしようと考案・実装されました。
現在のスマートアカウントはERC4337と呼ばれる仕様で実装されてますが、今後は
EOAを一時的にスマートアカウントとして扱えるようにするトランザクションタイプを実装する
ことが予定されています。
これはイーサリアムの創始者の一人であるヴィタリック・ブテリンによって提案されました。
これにより
スマートアカウントを実装しつつ、既存のスマートコントラクトを利用する際に追加の実装をする必要がなくなる
というメリットが生まれます。
つまり、
スマートアカウントはさらに一歩実用に近づいた
ということが言えます。
スマートアカウントの構成と仕組み
この章は若干マニアックな内容になるので、エンジニア以外は読まなくても結構です。
イーサリアムのスマートアカウントで、最低限理解しておきたい構成要素は
EntryPoint
UserOperation
bundler
の3つになります。
詳細な説明をするとかなり難しい内容になるので、この記事では簡潔な内容に留めておきます。
EntryPointは
トランザクションの検証と実行ロジックを処理するスマートコントラクト
です。
EntryPointは各チェーンにインスタンスが1つしか存在しないシングルコントラクトなので、実装も1つしかありません。
以下はメインネットとsepoliaにおけるEntryPointのイーサスキャンになります。
https://etherscan.io/address/0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789#code
https://sepolia.etherscan.io/address/0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789#code
なので、hardhat等の開発環境でEntryPointを使用したい場合は、自身でEntryPointのコントラクトを開発環境にdeployして検証用のコントラクトを用意する必要があります。
これは結構な手間な作業で、スマートアカウントをDappsに導入するハードルを困難にしている原因です。
EntryPointコントラクトは、送られてきたUserOperation(擬似トランザクション)のバンドル(束)を検証し、実行します。
UserOperationとは
スマートアカウントでトランザクションを実行するために使用される擬似トランザクションオブジェクト
です。
UserOperationはEOAの保留中のトランザクションを、従来のパブリックなmempool(順番待ちトランザクションの一時的な保管場所)ではなく、UserOperation専用の上位レベルのmempoolである、UserOperation mempoolに送られます。
このUserOperation専用の上位レベルのmempoolでは、bundlerが動作します。
bundlerは
コアとなるインフラストラクチャーコンポーネントであり、プロトコルに変更を加えることなく、どのEVMネットワーク上でもアカウント抽象化を動作させることができます。
bundlerは、UserOperationsのmempoolで動作し、トランザクションをオンチェーンに含めることができます。
この3つの構成に加えて、アカウントやペイマスターなどのコントラクトと組み合わせることで、スマートアカウントを利用することが可能になります。
さらに詳細な仕組みを知りたい人は、
実際にコードを書いてみると理解が深まると思います。
スマートアカウントのコードを書くと、イーサリアムの低レイヤーの仕様が理解できるようになるのでオススメです。
スマートアカウントのメリット
スマートアカウントのメリットは
ユーザー側がガス代を直接支払わなくて良くなる(サービス提供側で支払う)
サブスクなどの月額引き落としの支払いサービスに対応できる
ことです。
例えば
一般ユーザーがXやインスタグラムなどのSNSで投稿をしてデータをサーバーに保存する時、ユーザーは保存のための料金を支払いません。
しかし、web3のアプリケーションで同じことをしようとすると、保存時に料金を支払う必要があります。
これは、web2に慣れ親しんでいる多くの一般ユーザーにとっては、異質でおかしなことだと感じる可能性が高い仕様です。
なぜなら、現在のwebサービスでは、SNSの投稿では支払いが発生しないのが当たり前だからです。
スマートアカウントでペイマスターを使うと、このような支払いを、Dappsが代わりに払うことが可能になります。
これによりユーザーは、web2とユーザー体験が変わることなくweb3の世界に入り込むことができます。
Dappsはこのガス代の建て替えの際、ETH以外のERC-20トークン、例えばUSDCでガス代を支払うこともできます。
まとめ
今回は
スマートアカウントを理解する
というテーマで記事を書きました。
まとめると
スマートアカウントはアカウントでコントラクトの機能が利用できる
スマートアカウントを使うことでユーザーのUX体験が向上する
ガス代の支払いを肩代わりしてもらうことが可能なので、サブスクなどの支払いの実装が可能になる
ということです。
つい先日ヴィタリック・ブテリンが
eip-7702
を発表しました。
これは、EIP-3074と同様の機能を提供します。
つまりスマートアカウントの
バッチ機能の実装
スポンサー
動作の制御
を可能にします。
これにより便利さが向上するので、今後ますますスマートアカウントの重要性は増していくでしょう。
一方で、まだまだ課題もあります。
特に開発者にとって
スマートアカウントの実装は複雑で難しい問題
です。
ほとんどのweb3エンジニアには、実装はおろか、処理内容をきちんと理解をすることさえ難しいのが現状ではないでしょうか。
スマートアカウントの実装には広範囲な知識が必要になります。
このままだと
サービスに搭載されるという状況にはなりにくいと思います。
もちろん、今後はもっとスマートアカウントを簡単に実装できるライブラリが生まれてくるはずです。
しかし、それはもう少し先の未来になりそうです。
なので、その時を楽しみにしながら
今はスマートアカウントの理解を深めていくことが大切だと思います。
この記事が皆さんのweb3の活動に役立てば幸いです。
この記事が気に入ったらサポートをしてみませんか?