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

В этом руководстве представлен исчерпывающий обзор экспериментальных действий ERC-7715 в MetaMask Delegation Toolkit — инновационном инструменте, позволяющем dapp-приложениям запрашивать разрешения пользователей на выполнение определённых действий (например, переводов токенов) и управлять ими.
Это открывает новые интересные сценарии использования, такие как подписки и автоматические платежи, одновременно улучшая пользовательский опыт. Мы рассмотрим базовые концепции, поможем настроить среду разработки и пройдём через процесс создания dapp-приложения на основе Gator SDK. В этом руководстве для взаимодействия с блокчейном используется Viem.
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 обеспечивает рабочий процесс на основе разрешений:
Запрос разрешения: Dapp-приложение, выступая в роли session account, инициирует запрос разрешения. Это выполняется с помощью метода wallet_grantPermissions, стандартизированного в ERC-7715. Dapp-приложение указывает тип разрешения (например, native-token-stream), цель (свой адрес) и любые конкретные параметры (например, сумму).
Авторизация пользователя: MetaMask Flask представляет запрос разрешения пользователю. Если необходимые Snaps ещё не установлены, MetaMask Flask предложит пользователю установить их на этом этапе. Затем пользователю предоставляется чёткое и понятное объяснение того, что запрашивает dapp-приложение.
Пользователь может принять или отклонить запрос. Permission Kernel Snap играет ключевую роль в этом взаимодействии, обеспечивая понимание пользователем запрашиваемых разрешений.
Создание Gator smart account: Если пользователь одобряет разрешение, Gator Permissions Snap выполняет необходимые действия. Этот Smart Account станет источником делегированных полномочий.
Пополнение Gator account: Пользователь несёт ответственность за пополнение своего Gator Smart Account достаточными средствами для покрытия делегированных действий. Например, если разрешение выдано для native-token-stream, пользователю необходимо внести соответствующий нативный токен на свой Gator Smart Account.
Создание делегирования: Это ключевой шаг. Создаётся делегирование, устанавливающее связь между Gator Smart Account пользователя и session account dapp-приложения. Это делегирование, регулируемое ERC-7710, авторизует dapp-приложение действовать от имени пользователя, но только в рамках выданного разрешения. В делегировании указываются:1. Действия, которые dapp-приложение может выполнять (например, переводить нативные токены).
Любые условия или ограничения (caveats), такие как:1. Максимальная сумма одного перевода
Частота переводов
Дата истечения срока действия
Использование разрешения (делегированное действие): Когда 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.
Установите Node.js: Скачайте и установите Node.js с официального сайта.
Установите MetaMask Flask:- Откройте новый профиль браузера.
Перейдите на страницу загрузки MetaMask Flask на сайте MetaMask.
Скачайте и установите расширение MetaMask Flask.
Настройте bundler:- При использовании Pimlico создайте аккаунт на их платформе.
Получите API-ключ bundler от Pimlico.
Ознакомьтесь с процессом отправки пользовательских операций в bundler Pimlico.
Настройте paymaster (опционально):- При использовании Pimlico вы также можете воспользоваться их сервисом paymaster. Настройте своё dapp-приложение для использования paymaster.
Самый простой способ начать работу с действиями Gator ERC7715 — использовать CLI create-gator-app, в котором есть шаблон Experimental: Basic Gator app для опробования ERC7715 Permissions. Этот шаблон поставляется со всеми необходимыми базовыми библиотеками и фрагментами кода.
Вы можете запустить CLI с помощью
npx create-gator-app@latestОбратитесь к следующим разделам документации для получения важных фрагментов кода
Выдача разрешения: https://docs.gator.metamask.io/experimental/erc-7715
Использование разрешения: https://docs.gator.metamask.io/experimental/erc-7710
Создание Gator account, если вы хотите использовать его в качестве session account: https://docs.gator.metamask.io/how-to/create-delegator-account
Официальная документация (ознакомьтесь с экспериментальными пакетами для действий ERC7715): https://docs.gator.metamask.io/
CLI create-gator-app: https://hackmd.io/@x2AtdNlxSjuUiT4xerbPSg/Byy9hijCJe
Получить помощь — канал Consensys в Discord, найдите канал mm-dtk: Присоединиться здесь
Группа MetaMask Developer Chat в Telegram: Присоединиться здесь
Переведено ИИ. Может содержать ошибки. Пожалуйста, всегда проверяйте информацию.