Перейти к содержимому

Руководство хакера: действия MetaMask Delegation Toolkit ERC-7715

Руководство хакера по созданию с разрешениями ERC-7715

2 мин
Руководство хакера: действия MetaMask Delegation Toolkit ERC-7715

В этом руководстве представлен исчерпывающий обзор экспериментальных действий ERC-7715 в MetaMask Delegation Toolkit — инновационном инструменте, позволяющем dapp-приложениям запрашивать разрешения пользователей на выполнение определённых действий (например, переводов токенов) и управлять ими.

Это открывает новые интересные сценарии использования, такие как подписки и автоматические платежи, одновременно улучшая пользовательский опыт. Мы рассмотрим базовые концепции, поможем настроить среду разработки и пройдём через процесс создания dapp-приложения на основе Gator SDK. В этом руководстве для взаимодействия с блокчейном используется Viem.

Основы: переосмысление транзакций в web3

ERC-7715 вводит новую парадигму взаимодействия dapp-приложений с кошельками пользователей. Вместо того чтобы требовать от пользователей подтверждения каждой транзакции вручную, dapp-приложения могут запрашивать разрешение на выполнение определённых действий от имени пользователя в рамках заранее установленных ограничений.

Ключевые концепции

  • Session account: Аккаунт dapp-приложения (EOA или смарт-контракт), которому предоставлено разрешение действовать от имени пользователя.

  • User wallet: Кошелёк MetaMask пользователя, который выдаёт разрешения session account.

  • Permissions: Конкретные действия, которые dapp-приложение авторизовано выполнять. Gator SDK в настоящее время поддерживает native-token-stream.

  • Gator smart account: Смарт-аккаунт, созданный внутри MetaMask Snap пользователя специально для управления разрешениями, выданными через Gator SDK.

  • Delegation: Основной механизм, обеспечивающий транзакции на основе разрешений. Когда пользователь выдаёт разрешение, создаётся делегирование от его Gator Smart Account к session account dapp-приложения.

Это устанавливает авторизацию вне блокчейна, позволяя dapp-приложению выполнять определённые действия в заданных условиях без необходимости подписывать каждую транзакцию. Это похоже на настройку регулярных выплат с установленными правилами.

  • ERC-7715 (запросы разрешений кошелька): Стандарт для запроса dapp-приложениями разрешений у кошельков пользователей. https://eip.tools/eip/7715

  • ERC-7710 (делегирование смарт-контрактов): Стандарт, определяющий, как смарт-контракты могут делегировать возможности другим аккаунтам.https://eip.tools/eip/7710

  • MetaMask Snaps: Система, позволяющая разработчикам расширять функциональность MetaMask. Snaps — это по сути плагины, которые могут расширять возможности MetaMask, добавляя поддержку новых блокчейнов, новых типов транзакций и, в случае Gator SDK, расширенного управления разрешениями. Gator SDK опирается на два Snap:- Permission kernel snap: Выступает в роли маршрутизатора к конкретному Snap-провайдеру разрешений — в нашем случае к Gator Permission Snap.

  • Gator permissions snap: Создаёт Gator Smart Account пользователя и управляет им. Этот Snap отвечает за предоставление пользователю интерфейса Permission Picker, а также за возможность редактировать разрешения, принимать или отклонять их.

- ERC-4337: Стандарт Account Abstraction, обеспечивающий более гибкие смарт-аккаунты и управление транзакциями; часто используется совместно с Gator SDK. https://eip.tools/eip/4337

- Bundler: Сервис, объединяющий несколько пользовательских операций (транзакций) в одну транзакцию для оптимизации расхода газа.

  • Paymaster (опционально): Смарт-контракт, который может оплачивать комиссии за газ, обеспечивая пользователям транзакции без газа.

Принцип работы

Gator SDK совместно с MetaMask Snaps, ERC-7715 и ERC-7710 обеспечивает рабочий процесс на основе разрешений:

  1. Запрос разрешения: Dapp-приложение, выступая в роли session account, инициирует запрос разрешения. Это выполняется с помощью метода wallet_grantPermissions, стандартизированного в ERC-7715. Dapp-приложение указывает тип разрешения (например, native-token-stream), цель (свой адрес) и любые конкретные параметры (например, сумму).

  2. Авторизация пользователя: MetaMask Flask представляет запрос разрешения пользователю. Если необходимые Snaps ещё не установлены, MetaMask Flask предложит пользователю установить их на этом этапе. Затем пользователю предоставляется чёткое и понятное объяснение того, что запрашивает dapp-приложение.

Пользователь может принять или отклонить запрос. Permission Kernel Snap играет ключевую роль в этом взаимодействии, обеспечивая понимание пользователем запрашиваемых разрешений.

  1. Создание Gator smart account: Если пользователь одобряет разрешение, Gator Permissions Snap выполняет необходимые действия. Этот Smart Account станет источником делегированных полномочий.

  2. Пополнение Gator account: Пользователь несёт ответственность за пополнение своего Gator Smart Account достаточными средствами для покрытия делегированных действий. Например, если разрешение выдано для native-token-stream, пользователю необходимо внести соответствующий нативный токен на свой Gator Smart Account.

  3. Создание делегирования: Это ключевой шаг. Создаётся делегирование, устанавливающее связь между Gator Smart Account пользователя и session account dapp-приложения. Это делегирование, регулируемое ERC-7710, авторизует dapp-приложение действовать от имени пользователя, но только в рамках выданного разрешения. В делегировании указываются:1. Действия, которые dapp-приложение может выполнять (например, переводить нативные токены).

  4. Любые условия или ограничения (caveats), такие как:1. Максимальная сумма одного перевода

  5. Частота переводов

  6. Дата истечения срока действия

  7. Использование разрешения (делегированное действие): Когда dapp-приложению необходимо действовать в рамках выданного разрешения, оно «использует» делегирование. Это предполагает формирование dapp-приложением транзакции (или User Operation при использовании ERC-4337), соответствующей правилам, установленным в делегировании.

Затем dapp-приложение отправляет эту транзакцию (или User Operation при использовании ERC-4337), предоставляя подтверждение действительного делегирования.

Настройка среды разработки

Обратите внимание, что Snaps, необходимые для действий ERC-7715, в настоящее время работают только в Sepolia. Если вы разрабатываете в рамках трека ERC-7715, обязательно используйте тестовую сеть Sepolia. Для других функций Delegation Toolkit вы можете использовать любую из тестовых сетей, перечисленных здесь

Предварительные требования

  • Node.js: Убедитесь, что Node.js установлен в вашей системе.

  • MetaMask Flask: Установите MetaMask Flask — версию MetaMask, ориентированную на разработчиков. Скачайте её с официального сайта MetaMask. Важно: используйте отдельный профиль браузера для Flask. Если вы используете тот же браузер с обычным кошельком MetaMask, отключите его.

  • MetaMask Snaps: Snaps, необходимые для Gator SDK (Permission Kernel Snap и Gator Permissions Snap), можно установить вручную, или MetaMask Flask предложит пользователю установить их при первом запросе разрешений dapp-приложением.

  • ERC-4337 bundler: Требуется, если session account является кошельком ERC-4337. Для отправки пользовательских операций из кошелька ERC-4337 вам понадобится доступ к bundler. Pimlico — хороший вариант. Ознакомьтесь с их документацией.

  • Paymaster (опционально): Если вы хотите спонсировать комиссии за газ, вам понадобится paymaster. Pimlico также предоставляет услуги paymaster.

Шаги установки

  1. Установите Node.js: Скачайте и установите Node.js с официального сайта.

  2. Установите MetaMask Flask:- Откройте новый профиль браузера.

  • Перейдите на страницу загрузки MetaMask Flask на сайте MetaMask.

  • Скачайте и установите расширение MetaMask Flask.

  1. Настройте bundler:- При использовании Pimlico создайте аккаунт на их платформе.

  • Получите API-ключ bundler от Pimlico.

  • Ознакомьтесь с процессом отправки пользовательских операций в bundler Pimlico.

  1. Настройте paymaster (опционально):- При использовании Pimlico вы также можете воспользоваться их сервисом paymaster. Настройте своё dapp-приложение для использования paymaster.

Создание dapp-приложения с действиями Gator ERC-7715

Самый простой способ начать работу с действиями Gator ERC7715 — использовать CLI create-gator-app, в котором есть шаблон Experimental: Basic Gator app для опробования ERC7715 Permissions. Этот шаблон поставляется со всеми необходимыми базовыми библиотеками и фрагментами кода.

Вы можете запустить CLI с помощью

npx create-gator-app@latest

Обратитесь к следующим разделам документации для получения важных фрагментов кода

Ресурсы

Переведено ИИ. Может содержать ошибки. Пожалуйста, всегда проверяйте информацию.

Оцените перевод

Автор статьи: