С момента запуска открытой бета-версии MetaMask Snaps в сентябре 2023 года мы поставили перед собой цель — демократизировать инновации, предоставив независимым разработчикам возможность создавать функции и расширять возможности MetaMask, раскрывая весь потенциал изобретательности в нашем web3-пространстве. За 9 месяцев с момента запуска сторонние разработчики создали 55 Snaps, размещённых в нашем официальном каталоге, а суммарное количество установок всех Snaps превысило 900 тысяч.
Продолжая искать способы сделать разработку Snaps и расширение возможностей MetaMask более удобными для разработчиков, мы определили 2 ключевых направления и выпустили ряд важных обновлений, о которых подробнее расскажем в этой публикации.
1. Упрощённые требования к аудиту для включения в список разрешённых Snaps
Публикация стороннего Snap стала проще. Раньше разработчикам требовалось пройти аудит перед отправкой любого Snap в allowlist для включения в реестр Snaps. Теперь мы смягчаем это требование: Snaps, не использующие управление ключами (entropy API), можно добавлять в allowlist и распространять через наш канал без прохождения проверки безопасности.
Важно отметить, что для Snaps, использующих управление ключами, мы по-прежнему требуем проведения стороннего аудита безопасности. API управления ключами или entropy API — это API, используемые для управления блокчейн-аккаунтами от имени пользователя. К таким API относятся snap_getBip32Entropy, snap_getBip44Entropy и snap_getEntropy. Если вы используете эти API и хотите узнать, как подготовить свой Snap к стороннему аудиту безопасности, ознакомьтесь с публикацией 5 советов по аудиту безопасности от MSQ Snap и Consensys Diligence.
На сегодняшний день добавление в allowlist по-прежнему осуществляется вручную. При подаче заявки на включение в allowlist мы проверяем, требует ли Snap аудита, и если нет — приступаем к добавлению его в реестр. Для включения в allowlist каждый Snap должен получить одобрение от двух участников команды Snaps.
Кроме того, теперь определённое подмножество сторонних Snaps может быть установлено любым пользователем без включения в наш allowlist — без каких-либо ограничений. Snaps, использующие только «открытые» разрешения из приведённого ниже списка, не требуют включения в allowlist перед установкой:
endowment:cronjob
endowment:ethereum-provider
endowment:lifecycle-hooks
endowment:page-home
endowment:signature-insight
endowment:transaction-insight
snap_dialog
snap_getLocale
snap_manageState
Snap_notify
Мы по-прежнему рекомендуем разработчикам проводить сторонний аудит безопасности своих Snaps, даже если это не является обязательным условием для включения в allowlist. Также обратите внимание: для отображения в каталоге Snaps включение в allowlist по-прежнему обязательно.
2. Бесшовное автоматическое подключение для выбранных dapps
Теперь разработчики могут указать список dapps с привилегиями автоматического подключения к своему Snap. Это означает, что для конкретных dapps при вызове wallet_requestSnaps пользователям больше не нужно вручную подтверждать подключение, а dapp может беспрепятственно проверить, установлен ли Snap. Это особенно удобно для Snaps, используемых несколькими dapps, поскольку обеспечивает следующий UX-сценарий:
Вы создаёте Snap для использования одним или несколькими dapps и разрешаете автоматическое подключение к companion dapp вашего Snap, добавив его в параметр конфигурации initialConnections.
Пользователь устанавливает ваш Snap при взаимодействии с dapp, который его использует.
Пользователь переходит на companion dapp вашего Snap.
Ваш companion dapp может сразу определить, что Snap уже установлен.
Пользователь может взаимодействовать с companion dapp без ручного подключения к Snap.
Это можно распространить на любые доверенные dapps по вашему выбору, интегрирующие ваш Snap.
Linea Voyager Snap уже использует эту функцию. Вы можете убедиться в бесшовности подключения, установив Linea Voyager Snap из каталога Snaps и посетив companion dapp Linea Voyager. В отличие от большинства companion dapps, этот автоматически подключается к Snap, даже если вы не устанавливали его и не подключали вручную через dapp. Подробную информацию об использовании этой функции см. в документации Snaps.
Продолжайте создавать с MetaMask Snaps
Пока мы строим безразрешительное будущее для web3-кошельков, мы постоянно работаем над улучшением пользовательского опыта — и эти два обновления лишь часть того, что у нас в планах.
Если вы уже разрабатываете с использованием Snaps, нам важно знать ваше мнение — оставьте отзыв, это помогает нам создавать лучший кошелёк для будущего. Если вы разработчик и хотите создать Snap, начните с изучения документации Snaps, а когда проект будет готов — поделитесь им с нами.