
Ayush Bherwaniは、MetaMaskのシニアデベロッパーリレーションズマネージャーです。
すべての記事を読むユーザーの代わりに実行するための、スコープ付き・期間限定のアクセス権をdappsに付与。追加署名、別ウォレット、カストディの妥協は不要。

新たにリリースしたAdvanced Permissionsは、ERC-7715をベースに構築され、MetaMask Smart Accounts Kitの一部として提供されます。これにより、ユーザーはdappが実行できる操作を1回のインタラクションで正確に承認できます。dappはセッションアカウントを通じてその範囲内で実行され、ユーザーのウォレットは常にユーザー自身の管理下に置かれます。
サブスクリプション、DCA、AIエージェント、ベスティング、オートコンパウンド——これらを場当たり的な回避策を組み合わせることなく構築できる標準的な方法を待ち望んでいたなら、その答えがここにあります。
暗号資産ウォレットはこれまで、すべてのトランザクションにユーザーの明示的な署名を必要とするシンプルなインタラクションモデルに従ってきました。その結果、繰り返されるポップアップ、アプリとウォレット間の切り替え、そして承認疲れが生じていました。やがてユーザーは内容を確認せずに習慣的にリクエストを承認するようになり、これはインフォームドコンセントとは正反対の状態です。
また、dappがウォレットにスコープ付きのパーミッションをリクエストするための標準的な方法も存在しませんでした。その仕組みがなければ、サブスクリプション、AIエージェント、期間限定アクセスといった製品カテゴリ全体が、適切に構築することが困難または不可能なままでした。
Embedded walletはこうした摩擦の一部を解消しましたが、別のトレードオフをもたらしました。ユーザーはdappごとに別々の残高を持つことになり、複数のアドレスにわたって資産を管理・入金する必要が生じました。その結果、エクスペリエンスはより断片化されました。
Advanced Permissionsは異なるアプローチを採用しています:1つのウォレット、スコープ付きアクセス。
Advanced Permissionsを使用すると、ユーザーはウォレットへのフルアクセスを渡したり、すべてのトランザクションに署名したりすることなく、dappに対して特定の限定的な操作をユーザーの代わりに実行する権限を付与できます。
プロトコルレベルでの仕組みは以下の通りです:
dappがwallet_requestExecutionPermissionsを呼び出し、ユーザーのMetaMaskウォレットにスコープ付きパーミッションをリクエストします。
MetaMaskが人間が読める承認画面を表示し、リクエストされている内容(資産、金額、期間、制約条件)を正確に示します。
ユーザーが内容を確認し、必要に応じてパラメータを調整(リクエストで許可されている場合)して承認します。
dappはセッションアカウントを通じて付与されたスコープ内で実行されます。セッションアカウントとは、dappが作成・管理する専用アカウント(EOAまたはスマートアカウント)です。セッションアカウントはユーザーの資金を保持しません。ERC-7710のデリゲーションを通じてパーミッションを行使し、定義された制限内でユーザーのMetaMaskアカウントから直接トランザクションを実行します。
例えば、ユーザーはAIエージェントに対して、30日間にわたり1日最大10 USDCを使ってETHを購入するDCA戦略を設定できます。毎日トランザクションに署名する代わりに、ユーザーはMetaMaskを通じて1回のスコープ付きパーミッションを承認するだけです。
インターフェースは承認前に、資産、金額、期間といった条件を明確に示します。一度付与されると、アプリケーションは定義された制限内でユーザーの代わりにトランザクションを実行できます。

ERC-7715は、リクエストすべきパーミッションの仕様・標準、およびそれらのパーミッションに適用すべきルールを定義しています。
Smart Accounts Kitはこれをベースに、4つの実装レベルのパーミッションタイプを提供します:
カテゴリ | パーミッションタイプ | 機能 | ユースケース例 |
Periodic | erc20-token-periodic、native-token-periodic | トークン転送に対する期間ごとの上限額。各期間にリセット | サブスクリプション、DCA戦略、定期的なガス予算 |
Streaming | erc20-token-stream、native-token-stream | 開始時刻、レート、上限を設定可能なリニアストリーミング上限額 | ベスティング、継続的な支払い、段階的なアンロック |
Revocation | erc20-revocation | dappがユーザーの代わりにERC-20トークンの承認を取り消すことを許可 | 古くなったまたはリスクのあるapprove上限額のクリーンアップ |
各パーミッションタイプは、有効期限、人間が読めるパーミッションの理由、およびisAdjustmentAllowedをそれぞれのパラメータとして受け付けます。完全なスキーマについてはAdvanced Permissionsリファレンスをご覧ください。
Advanced Permissionsは、繰り返しの承認からインテントベースの実行へとモデルを転換します:ユーザーが一度スコープ付きパーミッションを定義すれば、その範囲内でアクションが継続的に実行されます。
自動化・定期実行フロー: サブスクリプション、DCA戦略、オートコンパウンドは1回の承認後に実行できます。請求または実行サイクルに合わせたperiodDurationを持つerc20-token-periodicまたはnative-token-periodicパーミッションにマッピングしてください。
エージェントベースの実行: AIエージェントはユーザーが定義した範囲内でトレード、リバランス、またはアクションを実行できます。エージェントはセッションアカウントのキーを管理し、デリゲーションを通じて実行します——ユーザーのメインウォレットが公開されることはなく、エージェントは付与されたスコープ内でのみ操作できます。別途ウォレットへの入金は不要です。
期間限定アクセス: パーミッションはstartTimeとexpiryパラメータを受け付け、ベスティングスケジュール、スケジュール実行、セッション内ゲームアクションなどのユースケースをサポートします。段階的なトークンリリースにはストリーミングパーミッションと組み合わせてください。
Advanced PermissionsはSmart Accounts KitのSmart Contractsを通じてオンチェーンで強制されます。実際には以下を意味します:
設計によるスコープ制限: 各パーミッションは、セッションアカウントがアクセスできる内容(資産、金額、時間枠、転送タイプ)を正確に定義します。Delegation FrameworkのCaveat Enforcerは、スコープ外の実行をすべて拒否します。
人間が読める承認: MetaMaskはユーザーが何かを付与する前に、完全なパーミッションパラメータを示すリッチな確認UIを表示します。
ユーザーによる調整可能: パーミッションリクエストでisAdjustmentAllowed: trueを設定した場合、ユーザーは承認前にパラメータ(例:金額の減額や期間の短縮)を変更できます。
取り消し可能: ユーザーはMetaMaskの「Dapp connections」オプションからいつでも有効なパーミッションを取り消せます。
セッションアカウントは資金を保持しない: 実行はユーザーのSmart Accountからのデリゲーション行使を通じて行われます。セッションアカウントは署名キーであり、資産の保管場所ではありません。
Advanced Permissionsデベロッパードキュメント:ERC-7715とERC-7710がどのように連携するか、またAdvanced Permissionsが通常のデリゲーションとどう異なるかを確認できます。
MetaMaskユーザーの代わりに実行を行う:セッションアカウントのセットアップ、パーミッションのリクエスト、および行使方法を説明します。
Advanced Permissions (ERC-7715) Extension for Scaffold-ETH 2:動作例を含むドロップイン型スタータープロジェクトを探索できます。
ERC-7715仕様:wallet_requestExecutionPermissionsの完全な提案を読むことができます。
AIによる翻訳です。エラーが含まれている可能性があります。常に情報を確認してください。