コンテンツへスキップ
0%

ERC-4337スマートコントラクトウォレットの仕組みとは?

2024年2月5日 公開読了時間 1 分

Account Abstraction (ERC-4337)を利用するスマートコントラクトウォレットは、EOAウォレット(Externally Owned Address)のような単一の秘密鍵で管理されるウォレットではなく、スマートコントラクトで管理されるウォレットを作成します。

スマートコントラクトウォレットのプログラマブルな性質により、幅広い新しいユースケースの開発が可能になります。セキュリティや匿名性を損なうことなく複雑さを軽減することで、スマートコントラクトウォレットは次のブロックチェーンユーザーのオンボーディングを促進します。

埋め込み型スマートコントラクトウォレットをアプリに追加したいですか?シードフレーズやガス、摩擦なしでユーザーをオンボーディングできる、エンタープライズグレードのEmbedded Accountsと垂直統合されたAAインフラストラクチャをご利用ください。

スマートコントラクトウォレットとは?

スマートコントラクトウォレットは、スマートコントラクトを使ってデジタル資産(暗号通貨、NFTなど)を保管・管理します。スマートコントラクトウォレットはアカウントアブストラクションの基盤です。アカウントアブストラクションとは、さまざまなEthereumアカウントタイプを単一のタイプに統合するプロセスであり、アカウントの制御をネットワークから「アブストラクト」してスマートコントラクトで定義します。

ERC-4337を利用するスマートコントラクトウォレットの例:

  1. Soul Wallet
  2. Candide
  3. UniPass
  4. Castle
  5. Openfort

ERC-4337を利用していない主なスマートコントラクトウォレットはSafeとArgentです。

コントラクトアカウント(cas)とは?

スマートコントラクトとも呼ばれるコントラクトアカウントは、当事者間の情報交換を管理するコードを含みます。コントラクトアカウントはすべてのDeFiプロトコル、NFTコレクション、ERC-20トークンで利用されています。

コントラクトのビジネスロジックと状態変数はすべてオンチェーンに保存されます。スマートコントラクトの状態とコードはオンチェーンに保存されるため、それをデプロイする外部所有アカウントが手数料を支払う必要があります。

注: web3プログラミングには「スマートコントラクトファクトリー」というパターンがあり、コントラクトが事前に定義されたインターフェースを介して他のコントラクトをデプロイできます。この場合でも、取引を開始するのはEOAであり、その費用もEOAが支払う必要があります。

コントラクトアカウントは**外部所有アカウント(eoas)**とどう違うのか?

スマートコントラクトアカウントとEOAアカウントの主な違いは、スマートコントラクトアカウントはロジックを含めることができる点です。EOAアカウントのみが取引を開始できるため、スマートコントラクトアカウントはBundlerのEOAアカウントに依存し、ユーザーオペレーションを1つの取引にまとめてブロックチェーンに送信します。

現在のEthereumプロトコルでは、コントラクト呼び出しであれ価値の転送であれ、取引を開始できるアカウントタイプはEOAのみです。あるコントラクトアカウントが別のコントラクトアカウントを呼び出す場合でも、取引の起点は常に外部所有アカウントです。

以下はコントラクトアカウントとEOAアカウントの比較です:

EOA
CONTRACTS

秘密鍵を通じて人間によって制御される

秘密鍵はない。自身のコードによって統治される

取引を開始できる

取引開始の起点には決してなれない

コードを含まない

ストレージに保存されるコードと状態を含む

オフチェーンで無料で作成される

オンチェーンで、デプロイヤーが負担するコストをかけて作成される

では、スマートコントラクトウォレットが自ら取引を開始できないなら、どうやって取引を実行するのでしょうか?

ERC-4337スマートコントラクトウォレットの仕組み

スマートコントラクトウォレットは取引を開始できないため、EOAウォレットによって呼び出される必要があります。このプロセスは複数のAccount Abstractionインフラストラクチャプロバイダー(例: Bundler)とスマートコントラクト(例: EntryPoint)によってサポートされています。

スマートコントラクトウォレットの取引の典型的な流れ:

  1. ユーザーがUserOperationを実行したいと考える
  2. UserOperationは「代替メンプール」に送信される
  3. EOAウォレットを持つBundlerがすべてのUserOperationをバンドルし、EntryPointコントラクトに送信する
  4. EntryPointコントラクトがすべてのUserOperationを検証・実行する
  5. UserOperationをバンドルしたEOAウォレットは、ユーザーに代わって使用したETHを、ユーザーのウォレットまたはPaymasterから返済される
UserOpsがバンドル、検証、実行される仕組みを示す図。
UserOpsがバンドル、検証、実行される仕組みを示す図。

スマートコントラクトウォレットの仕組みを技術的な観点から理解するのは難しいかもしれませんが、エンドユーザーにとっては、スマートコントラクトウォレットはEOAウォレットと比べて多くの改善をもたらします。プログラマビリティやソーシャルリカバリーのような機能がその例です。

スマートコントラクトウォレットの仕組みを学ぶための追加リソース

Account Abstractionの各コンポーネントがどのように機能するかについて詳しくは、AlchemyのAccount Abstraction InfrastructureエンジニアリングチームのDavid Philipsonが執筆したシリーズ「You Could Have Invented Account Abstraction」をお読みください。

  1. UserOps、Bundler、EntryPointコントラクト
  2. Paymasterを使ったガスのスポンサー
  3. 署名の集約

よくある質問

スマートコントラクトウォレットとは何ですか?

スマートコントラクトウォレットは、単一の秘密鍵の代わりにスマートコントラクトを使って暗号通貨やNFTなどのデジタル資産を保管・管理するものであり、アカウントアブストラクションの基盤となっています。

ERC-4337スマートコントラクトウォレットはどのように機能しますか?

ERC-4337ウォレットは、ユーザーがUserOperationを作成し、それを代替メンプールに送信し、bundlerがそれらを収集してEntryPointコントラクトに送信して検証・実行を行い、その後ウォレットまたはPaymasterから返済を受けるというフローを使用します。

スマートコントラクトアカウントとEOAアカウントの違いは何ですか?

スマートコントラクトアカウントはプログラム可能なロジックを含むことができますが、自ら取引を開始することはできません。一方、EOAアカウントは取引を開始できますが、プログラム可能な機能を持ちません。

UserOperationとは何ですか?

UserOperationは、ユーザーが作成する取引リクエストであり、代替メンプールに送信され、bundlerがEntryPointコントラクトを通じた処理のためにそれらを収集します。

ERC-4337におけるbundlerの役割は何ですか?

BundlerはEOAウォレットを持つノードであり、代替メンプールからUserOperationを収集し、それらをバンドルしてEntryPointコントラクトに送信し、検証・実行を行います。

EntryPointコントラクトとは何ですか?

EntryPointコントラクトは、bundlerによって送信されたバンドル済みのUserOperationを検証・実行するオンチェーンのスマートコントラクトです。

スマートコントラクトウォレットにはガス手数料が必要ですか?

スマートコントラクトウォレットはPaymasterを使ってガス手数料をスポンサーできるため、ユーザーが直接ガスを支払う必要のないガスレス取引が可能になります。

ERC-4337スマートコントラクトウォレットの例を教えてください。

例としてSoul Wallet、Candide、UniPass、Castle、Openfortがあります。一方、SafeとArgentはERC-4337を使用していないスマートコントラクトウォレットです。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。