Фьючерсы
Доступ к сотням фьючерсов
TradFi
Золото
Одна платформа мировых активов
Опционы
Hot
Торги опционами Vanilla в европейском стиле
Единый счет
Увеличьте эффективность вашего капитала
Демо-торговля
Введение в торговлю фьючерсами
Подготовьтесь к торговле фьючерсами
Фьючерсные события
Получайте награды в событиях
Демо-торговля
Используйте виртуальные средства для торговли без риска
Запуск
CandyDrop
Собирайте конфеты, чтобы заработать аирдропы
Launchpool
Быстрый стейкинг, заработайте потенциальные новые токены
HODLer Airdrop
Удерживайте GT и получайте огромные аирдропы бесплатно
Launchpad
Будьте готовы к следующему крупному токен-проекту
Alpha Points
Торгуйте и получайте аирдропы
Фьючерсные баллы
Зарабатывайте баллы и получайте награды аирдропа
Инвестиции
Simple Earn
Зарабатывайте проценты с помощью неиспользуемых токенов
Автоинвест.
Автоинвестиции на регулярной основе.
Бивалютные инвестиции
Доход от волатильности рынка
Мягкий стейкинг
Получайте вознаграждения с помощью гибкого стейкинга
Криптозаймы
0 Fees
Заложите одну криптовалюту, чтобы занять другую
Центр кредитования
Единый центр кредитования
Интерпретация технологии MetaMask Snap: анализ опыта разработки, ограничений мощности, безопасности и бизнес-потенциала
Содержание | Ли Дамао, Брюс
Редактирование и форматирование | Cikey
Дизайн | ВанТэн
Что такое MetaMask Snap?
Несколько дней назад ConsenSys объявила о запуске открытой бета-версии MetaMask Snaps. MetaMask Snaps может расширить возможности кошелька, и вы сможете устанавливать приложения (Snaps), созданные сторонними разработчиками, для получения новых функций.
Если ConsenSys встроила MetaMask в WeChat, то Snap — это апплет WeChat. Таким образом, мы видим амбиции MetaMask: в сочетании с размером ConsenSys и количеством пользователей MetaMask шаблон поля кошелька изменится.
На данный момент официальный представитель анонсировал 35 доступных моделей Snap и выпустил Snap App Store.
Частичный список привязок
Так как же выглядит MetaMask Snap с технической точки зрения? Каковы ограничения их возможностей? Это безопасно? Как прошел опыт разработки? Все это может определить будущий потенциал MetaMask Snap.
С прошлого года LXDAO проводит углубленное исследование реализации Snap.В настоящее время многие участники участвовали в разработке Snap и активно участвовали в связанных хакатонах. Сегодня мы углубимся в вышеуказанные вопросы с технической точки зрения и фактически разработаем Snap, чтобы вы могли испытать опыт разработчика Snap.
Первый опыт MetaMask Snap
Установить MetaMask Snap
Обычно его можно установить через официальный магазин MetaMask Snap или непосредственно на официальном сайте проекта. Если взять в качестве примера UniPass, при доступе к странице приложения будет предоставлена кнопка, позволяющая вам перейти к MetaMask.
После нажатия Snap будет установлен:
Используйте MetaMask Snap
После завершения установки вы можете начать использовать соответствующие продукты и функции.В этом приложении UniPass создает для вас учетную запись смарт-контракта, чтобы облегчить вам управление через учетную запись EOA MetaMask.
Когда вы выполняете перевод, UniPass отобразит всплывающее окно Snap, чтобы подтвердить, хотите ли вы выполнить эту операцию с кошельком UniPass AA.
После подтверждения через MetaMask можно выполнять соответствующие операции. В этом сценарии MetaMask имеет возможность управлять кошельком UniPass AA через Snap.UniPass позволяет пользователям управлять кошельком без разработки плагина кошелька, а MetaMask также можно использовать для ознакомления пользователей по очень низкой цене!
Какую информацию мы можем получить в процессе установки и использования?
Для продукта-кошелька безопасность всегда на первом месте.Давайте проанализируем структуру безопасности Snap.
Безопасен ли Snap?
Анализ времени выполнения Snap-кода
Как упоминалось выше, Snap основан на NPM для управления пакетами и версиями, что показывает, что Snap на самом деле является веб-приложением и приложением на основе Java. Как мы все знаем, синтаксис JS очень гибок и свободен и может легко привести к таким атакам, как XSS и фишинг. Как MetaMask Snap решает эту проблему?
После некоторых исследований нетрудно обнаружить, что MetaMask финансирует Agoric и глубоко интегрирует Hardened JavaS команды Agoric (также известную как Secure Ecma) в качестве своего решения для «песочницы» для «полной виртуализации». Агорик разработал API с ограниченным доступом к Java и представил проект предложения в TC-39 (Консорциум по стандартизации JS) по адресу:
Проще говоря, Hardened Java — это более безопасная подмножество стандартной Java. С помощью некоторых возможностей и механизмов JS некоторые разрешения и методы вызова JS API сокращаются, тем самым снижая некоторые риски. Он создает безопасную изолированную программную среду для выполнения соответствующего кода и следует **Принципу наименьших привилегий для планирования контроля разрешений кода. **
Agoric сотрудничал с MetaMask для разработки LavoMoat (этот проект по повышению безопасности Snap. LavaMoat — это набор инструментов, который фокусируется на решении рисков безопасности, связанных с внешними зависимостями в проектах JS, и добавляет ограничения на некоторые API и логику.
Agoric и MetaMask совместно запустили тесты атак и защиты безопасности «черного» и «белого ящика», а также подготовили подробные отчеты о безопасности. Таким образом, на уровне выполнения кода у нас есть веские основания полагать, что Snap безопасен.
Код Snap должен иметь открытый исходный код и пройти проверку
В дополнение к четкому процессу авторизации пользователей и дизайну с минимальными привилегиями, чтобы стать официально признанной Snap, она должна открыть исходный код.
Кроме того, мы также обнаружили, что Snap на официальном сайте перед выпуском должен пройти проверку кода сторонней охранной компанией. Это значительно повышает надежность безопасности Snap, и в число аудиторов входит SlowMist, с которым все хорошо знакомы.
Обнаруженные в настоящее время угрозы безопасности Snap
Поскольку Snap в настоящее время основан на управлении пакетами и версиями NPM, существует вероятность определенных изменений на уровне кода, а необязательные проверки могут вызвать определенные риски безопасности.
Поскольку MetaMask не может контролировать выпуск версий платформы NPM, проект может выпустить новую версию в любое время для установки пользователями. Из-за стоимости аудита аудиторская компания не будет проверять каждую версию, поэтому возникнет ситуация: изменения в последней версии могут не быть открытыми или проверенными.
Однако, поскольку среда выполнения является изолированной средой и использует минимальную структуру разрешений, если пользователь вручную не подтвердит новые изменения разрешений, новая версия Snap будет иметь только разрешения предыдущей версии для выполнения операций. Однако, если Snap запрашивает слишком много разрешений, это все равно будет вызывать риски, поэтому вам все равно нужно проявлять бдительность при установке и использовании Snap.
Технические возможности и ограничения MetaMask Snap
Хотя MetaMask Snap был официально анонсирован недавно, на самом деле Snap разрабатывался уже 4 года! Оригинальная идея MetaMask Snap была опубликована на Medium Дэном Финли 10 октября 2019 г.
Баланс между безопасностью, гибкостью и эффективностью — очень большая задача.Также видно, что MetaMask заплатила много денег и провела большую подготовку к этому дню.
В настоящее время открыты три основных API:
Ниже приводится краткое введение в конкретные открытые возможности и эффекты MetaMask Snap, чтобы вы могли получить более яркое представление.
Возможность уведомления
Интерфейс Snap_notify может отображать уведомления в MetaMask или браузере. Snap может отправлять сообщения напрямую пользователям через этот интерфейс, как показано на рисунке ниже.
Возможности анализа транзакций
Когда пользователь взаимодействует со смарт-контрактом, MetaMask запускает событие onTransaction Snap. MetaMask передает неподписанную исходную транзакцию методу обработчика onTransaction. Snap может возвращать интерфейс на вторичной странице подтверждения транзакции и настраивать отображаемый контент.
Благодаря этой возможности могут быть реализованы такие функции, как проверка безопасности информации о транзакциях и расширенное отображение информации.
Диалоговый интерфейс и возможности пользовательского интерфейса
Возможность диалога позволит Snap напрямую открывать независимое окно, обеспечивая возможности, аналогичные традиционному всплывающему окну /Confirm/ (как показано ниже), которое можно использовать для напоминаний, подтверждений, отправки информации и т. д.
С помощью Dialog вы сможете настраивать простые интерактивные интерфейсы и операции для подключения к вашему DApp.
Какие функции в настоящее время недоступны для MetaMask Snap?
Из соображений безопасности и по другим причинам Snap в настоящее время не поддерживает сторонние интерфейсные платформы и предоставляет лишь относительно небольшое количество UIKit. Ниже по-прежнему используется Insight в качестве примера, чтобы показать библиотеки компонентов пользовательского интерфейса, которые могут вызывать все разработчики.
Как показано на рисунке, в настоящее время только заголовок (крупный текст), текст (мелкий текст), панель (карточка и может использоваться только один раз), разделитель (линия разделения), копирование (нажмите, чтобы скопировать) и небольшое подмножество Markdown ( **жирный ** и курсив), поэтому кажется, что создание интерактивности временно невозможно, и невозможно использовать встроенный HTML для выполнения интерактивных операций. Однако, задав вопросы в официальном Discord, чиновник заявил, что это сделано по соображениям безопасности и будет выпущено в следующей версии.
Кроме того, также из соображений безопасности для внешних запросов поддерживается только метод Fetch, а другие протоколы запросов, такие как WebSocket, не поддерживаются. Из-за ограничений безопасности, возможностей и конфиденциальности также невозможно получить информацию о клиенте, например текущий URL-адрес, который вызывает Snap, и невозможно реализовать более богатые и разнообразные функции.
Большинство этих проблем и ограничений вызваны соображениями безопасности.Я считаю, что в будущем, после проверки безопасности, будут учитываться дополнительные разрешения.
MetaMask, предоставляющий эти API, фактически стал продуктом, похожим на открытую платформу. Это ощущение похоже на то, когда WeChat запустил официальные учетные записи и мини-программы, которые мгновенно заставили людей почувствовать, что это больше не простой инструмент для чата.
MetaMask предвидел сегодняшнюю структуру рынка в 2019 году, то есть существует множество публичных сетей и участников проектов, а также различные индивидуальные потребности в кошельках. Вместо того, чтобы каждому участнику проекта приходилось разрабатывать свой собственный плагин, а пользователям приходилось устанавливать несколько плагинов одновременно, лучше разрабатывать на основе MetaMask Snap. Среди первой партии выпущенных Snaps мы также обнаружили другие экологические кошельки, не относящиеся к EVM, такие как Sui Wallet, Solana Wallet и Arweave Wallet. MetaMask Snap с существующей базой пользователей окажет значительное влияние на ситуацию с кошельками.
На самом деле, воображение MetaMask Snap может оказаться шире, чем мы ожидали, даже за пределами кошельков. Мы также можем увидеть работу команды EthSign, которая создает универсальный менеджер паролей KeyChain на основе MetaMask Snaps.Пароли во всех браузерах могут быть зашифрованы ключом кошелька и сохранены. Бережно относитесь к своему кошельку и храните все свои пароли при себе.
Snap очень важен для разработчиков.Каковы особенности работы разработчиков с открытым API? С тем же успехом мы могли бы сами разработать Snap, чтобы испытать его.
Разработка Snap-теста напрямую
Мысли об отчуждении
Как мы все знаем, большинство пользователей в большинстве случаев на самом деле не знают, с каким смарт-контрактом они взаимодействуют.
Тем более невозможно попросить обычных пользователей прочитать код надежности контракта перед началом работы. В настоящее время на самом деле очень удобно использовать функцию Transaction Insight для реализации некоторого анализа смарт-контрактов. Например, использование ИИ для проведения относительно простого аудита безопасности смарт-контракта может отфильтровать 80% фишинговых атак низкого уровня. **
**Подготовьте среду разработки и **загрузите кошелек
Сначала вам нужно установить MetaMask Flask.
MetaMask Flask — это дистрибутив расширений MetaMask, ориентированный на разработчиков, который в основном используется для предварительного просмотра новых функций и экспериментальной разработки функций. Обратите внимание, что это версия MetaMask для разработчиков. Не используйте ее ежедневно и не импортируйте закрытый ключ, который вы используете ежедневно. Flask используется здесь в основном для облегчения локального предварительного просмотра разработанного нами Snap в режиме реального времени.
зарегистрироваться
После установки кошелька создайте новый кошелек так же, как обычно создаете кошелек MetaMask. Обратите внимание, что это кошелек специально для тестирования. Пожалуйста, не импортируйте свой собственный ежедневный кошелек.
Затем нам нужно пополнить несколько тестовых монет во вновь созданный кошелек.Тестовые монеты можно получить через кран.Упомянутый в этой статье Snap использует Goerli, поэтому следующая статья будет посвящена Goerli.
Инициализация Snap на основе шаблона
Согласно официальной документации, сначала используйте CLI @metamask/create-snap для создания нового проекта Snap, а для инициализации используем официальный шаблон:
Yarn create @metamask/snap транзакция-insights-snap && cd транзакция-insights-snap
Привязка структуры файла
Основные файлы Snap находятся в ./packages/snap, а структура каталогов файлов следующая.
Файл конфигурации Snap находится в snap.mainfest.json, а основной файл Snap — ./src/index.ts, что очень кратко.
Включить разрешения
Сначала нам нужно включить разрешения.Сначала мы добавляем следующие три элемента в snap.mainfest.json.
“начальные разрешения”: {
“endowment:transaction-insight”: {}, //Сведения о транзакциях
“endowment:ethereum-provider”: {}, //Получаем rpc
“endowment:network-access”: {}//Запросить сеть
}
Вы также можете изменить deion и предложенное имя в файле Mainfest, чтобы изменить описание и имя проекта.
ПОЛУЧИТЬ ТРАНЗАКЦИЮ
Далее в этом случае вам нужно только изменить файл index.ts для выполнения всех функций. Простой пример кода выглядит следующим образом. Перейдите к коду, который можно полностью запустить:
import { OnTransactionHandler, OnRpcRequestHandler } from’@metamask/snaps-types’;import { заголовок, панель, текст, копируемый, разделитель } from’@metamask/snaps-ui’;export const onTransaction: OnTransactionHandler = async ({транзакция}) => {
// транзакция включает в себя to (адрес контракта), data (данные взаимодействия) и другие значения
//Ниже приведен пример кода для получения данных аудита контракта.
константная информация = выборка(
//Ниже приведен пример кода части пользовательского интерфейса
возвращаться {
содержание: [
текст(
${info.riskList.length} элемент риска,
),
заголовок(${info.riskList.length? ‘Список рисков’: ‘’}),
…info.riskList.map((item, i) => text(${i + 1} ${item.text})),
делитель(),
текст(
Дополнительную информацию об аудите можно найти по следующему URL-адресу:
),
копируемый(
)
]
};
};
Для получения дополнительной информации обратитесь к документации разработчика MetaMask Snap для создания более сложных продуктов Snap.
После установки вы увидите аналогичную информацию о риске для каждой транзакции:
В настоящее время процесс разработки Snap очень прост, почти не возникает проблем, а официальные шаблоны также очень богаты и разнообразны. Разработчики с большим опытом обычно могут приступить к работе и начать разработку нужных им Snaps в течение нескольких часов. Но его необходимо официально выпустить и сделать доступным для основных пользователей.Самым большим препятствием станут проверки безопасности. Не у всех независимых разработчиков и небольших команд есть ресурсы для аудита своих Snap. Таким образом, можно ожидать, что количество и богатство Snap не будут иметь очень большого взрывного роста в течение длительного времени.
Поддержка разработчиков
Если вы сможете разобраться с приведенными выше примерами, поздравляем вас с тем, что вы стали квалифицированным разработчиком Snap начального уровня!
В прошлом году представители MetaMask также учредили MetaMask Grants DAO для финансирования ценных проектов в экосистеме MetaMask посредством программы грантов. MetaMask Grants DAO — это экспериментальная программа, возглавляемая сотрудниками, которая предоставляет гранты внешним разработчикам по всему миру для создания впечатляющего опыта в экосистеме MetaMask. MetaMask вкладывает часть своей прибыли в этот DAO каждый квартал. Текущий годовой бюджет MetaMask Grants DAO составляет 2,4 миллиона долларов США.
В настоящее время любой проект, который может обогатить экосистему MetaMask, может подать заявку на получение официального гранта MetaMask Grants DAO (MetaMask Grant).Для получения дополнительной информации перейдите сюда.
Стоит отметить, что LXDAO имеет честь подать заявку на гранты MetaMask в этом году и принять участие в разработке связанных проектов, а также установила контактный канал. Если вы являетесь членом LXDAO и у вас есть соответствующие идеи, вы можете более эффективно связаться с ними, чтобы оставить заявку.
Заключение
Выше мы проанализировали, что такое Snap с технической точки зрения, безопасен ли он, ограничения возможностей и опыт разработчиков. Краткое изложение следующее:
В настоящее время MetaMask Snap все еще быстро совершенствуется, и я считаю, что в будущем будет открыто больше разрешений и возможностей. Есть надежда, что можно будет ввести более открытые и безопасные механизмы, такие как официальный механизм проверки аудита Apple и официальный контроль версий репозитория кода, чтобы больше разработчиков могли участвовать с меньшими затратами. Если эта проблема будет решена, можно ожидать, что в будущем спрос будет большим. Будут даже выделены должности разработчиков Snap.
Учитывая огромное количество пользователей MetaMask, независимые разработчики также могут иметь определенные возможности. Давайте подождем и посмотрим, какие следующие прорывные инновации принесет Snap.