Ф'ючерси
Сотні безстрокових контрактів
TradFi
Золото
Одна платформа для світових активів
Опціони
Hot
Торгівля ванільними опціонами європейського зразка
Єдиний рахунок
Максимізуйте ефективність вашого капіталу
Демо торгівля
Вступ до ф'ючерсної торгівлі
Підготуйтеся до ф’ючерсної торгівлі
Ф'ючерсні події
Заробляйте, беручи участь в подіях
Демо торгівля
Використовуйте віртуальні кошти для безризикової торгівлі
Запуск
CandyDrop
Збирайте цукерки, щоб заробити аірдропи
Launchpool
Швидкий стейкінг, заробляйте нові токени
HODLer Airdrop
Утримуйте GT і отримуйте масові аірдропи безкоштовно
Launchpad
Будьте першими в наступному великому проекту токенів
Alpha Поінти
Ончейн-торгівля та аірдропи
Ф'ючерсні бали
Заробляйте фʼючерсні бали та отримуйте аірдроп-винагороди
Інвестиції
Simple Earn
Заробляйте відсотки за допомогою неактивних токенів
Автоінвестування
Автоматичне інвестування на регулярній основі
Подвійні інвестиції
Прибуток від волатильності ринку
Soft Staking
Earn rewards with flexible staking
Криптопозика
0 Fees
Заставте одну криптовалюту, щоб позичити іншу
Центр кредитування
Єдиний центр кредитування
Центр багатства VIP
Преміальні плани зростання капіталу
Управління приватним капіталом
Розподіл преміальних активів
Квантовий фонд
Квантові стратегії найвищого рівня
Стейкінг
Стейкайте криптовалюту, щоб заробляти на продуктах PoS
Розумне кредитне плече
Кредитне плече без ліквідації
Випуск GUSD
Мінтинг GUSD для прибутку RWA
Інтерпретація технології MetaMask Snap: аналіз досвіду розробки, обмеження потужності, безпеки та бізнес-потенціалу
Зміст | Лі Дамао, Брюс
Редагування та форматування | Cikey
Дизайн | WangTeng
Що таке 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 базується на NPM для керування пакетами та версіями, що показує, що Snap насправді є програмою на основі Інтернету та Java. Як ми всі знаємо, синтаксис JS дуже гнучкий і вільний, і він може легко призвести до таких атак, як XSS і фішинг. Як MetaMask Snap вирішує цю проблему?
Після деяких досліджень неважко виявити, що MetaMask фінансує Agoric і глибоко інтегрує Hardened JavaS команди Agoric (також відомий як Secure Ecma) як своє рішення «пісочниці з повною віртуалізацією». Agoric розробив обмежений Java API та подав чернетку пропозиції до TC-39 (консорціуму стандартизації JS) за адресою:
Простіше кажучи, Hardened Java є більш безпечною частиною стандартної Java. За допомогою деяких можливостей і механізмів JS деякі дозволи та методи викликів JS API зменшуються, тим самим зменшуючи деякі ризики. Він створює безпечну пісочницю для виконання відповідного коду, а також дотримується **Принципу найменших привілеїв для планування контролю дозволів коду. **
Agoric співпрацював з MetaMask для розробки LavoMoat (цей проект для підвищення безпеки Snap. LavaMoat — це набір інструментів, який зосереджений на вирішенні ризиків безпеки зовнішніх залежностей у проектах JS і додає обмеження на деякі API та логіку.
Agoric і MetaMask спільно запустили випробування захисту від атак і захисту за допомогою чорної та білої скриньок і випустили докладні звіти про безпеку. Отже, на рівні середовища виконання коду ми маємо вагомі підстави вважати, що Snap є безпечним.
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 ініціює подію Snap onTransaction. MetaMask передасть непідписану вихідну транзакцію методу обробника onTransaction. Snap може повернути інтерфейс на вторинній сторінці підтвердження транзакції та налаштувати відображуваний вміст.
Завдяки цій можливості можна реалізувати такі функції, як перевірка безпеки інформації про транзакції та розширене відображення інформації.
Діалоговий інтерфейс і можливості спеціального інтерфейсу
Можливість Dialog дозволить 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, гаманець Solana та гаманець Arweave. З існуючою базою користувачів 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 на основі шаблону
Відповідно до офіційної документації, спочатку використовуйте @metamask/create-snap CLI, щоб створити новий проект Snap, і ми використовуємо офіційний шаблон для ініціалізації:
yarn create @metamask/snap transaction-insights-snap && cd transaction-insights-snap
Структура файлу знімка
Основні файли Snap містяться в ./packages/snap, а структура каталогу файлів така
Конфігураційний файл Snap міститься в snap.mainfest.json, а основний файл Snap — це ./src/index.ts, який дуже стислий.
Увімкнути дозволи
Спочатку нам потрібно ввімкнути дозволи.Спочатку ми додамо наступні три елементи в snap.mainfest.json
“initialPermissions”: {
“endowment:transaction-insight”: {}, //Transaction Insights
“endowment:ethereum-provider”: {}, //Отримати rpc
“endowment:network-access”: {}//Запит мережі
}
Ви також можете змінити deion і suggestName у файлі Mainfest, щоб змінити опис і назву проекту.
ОТРИМАТИ ТРАНЗАКЦІЮ
Далі, у цьому випадку вам потрібно лише змінити файл index.ts, щоб завершити всі функції. Нижче наведено простий приклад коду. Перейдіть до коду, який можна повністю запустити:
import { OnTransactionHandler, OnRpcRequestHandler } from’@metamask/snaps-types’;import { heading, panel, text, copyable, divider } from’@metamask/snaps-ui’;export const onTransaction: OnTransactionHandler = async ({transaction}) => {
// транзакція включає до (адреса контракту), дані (дані взаємодії) та інші значення
//Нижче наведено приклад коду для отримання даних аудиту контракту
const info = fetch(
//Нижче наведено приклад коду частини інтерфейсу користувача
return {
зміст: [
текст(
${info.riskList.length} елемент ризику,
),
заголовок (${info.riskList.length ? ‘Список ризиків’ : ‘’}),
…info.riskList.map((item, i) => text(${i + 1} ${item.text})),
дільник(),
текст(
Більше інформації про аудит за такою URL-адресою,
),
можна копіювати (
)
]
};
};
Для отримання додаткової інформації зверніться до документації для розробників MetaMask Snap, щоб завершити складніші продукти Snap.
Після інсталяції ви побачите подібну інформацію про ризик для кожної транзакції:
Наразі розробка Snap проходить дуже гладко, майже без проблем, а офіційні шаблони також дуже багаті та різноманітні. Розробники з великим досвідом зазвичай можуть почати роботу та почати розробляти потрібні Snaps протягом кількох годин. Але його потрібно офіційно випустити та зробити доступним для звичайних користувачів.Найбільшою перешкодою будуть перевірки безпеки. Не всі незалежні розробники та невеликі команди мають ресурси для аудиту своїх Snaps. Таким чином, можна очікувати, що кількість і багатство 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.