Інтерпретація технології MetaMask Snap: аналіз досвіду розробки, обмеження потужності, безпеки та бізнес-потенціалу

Зміст | Лі Дамао, Брюс

Редагування та форматування | Cikey

Дизайн | WangTeng

Цю статтю спільно написали члени експертної групи LXDAO Лі Дамао і Брюс. Ми детально обговоримо технічні аспекти MetaMask Snap. Що таке MetaMask Snap? Які технічні можливості він має? Як забезпечити безпеку? Яким був досвід розробки? Ці запитання можуть визначити майбутній потенціал MetaMask Snap.

Що таке 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 з технічної точки зору? Які обмеження їхніх можливостей? це безпечно? Яким був досвід розробки? Усе це може визначити майбутній потенціал MetaMask Snap.

Починаючи з минулого року, LXDAO проводив поглиблені дослідження впровадження Snap. Наразі багато учасників брали участь у розробці Snap і активно брали участь у відповідних хакатонах. Сьогодні ми розглянемо вищевказані проблеми з технічної точки зору та фактично розробимо Snap, щоб ви могли відчути досвід розробника Snap.

Перший досвід MetaMask Snap

Встановити MetaMask Snap

Зазвичай його можна встановити через офіційний маркет MetaMask Snap або безпосередньо на офіційному веб-сайті проекту. Для прикладу UniPass під час переходу на сторінку програми буде надано кнопку, яка дозволить вам перейти за посиланням на MetaMask.

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Після натискання Snap буде встановлено:

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Використовуйте MetaMask Snap

Після завершення інсталяції ви можете почати використовувати відповідні продукти та функції.У цій програмі UniPass створює обліковий запис смарт-контракту для полегшення вашого контролю через обліковий запис EOA MetaMask.

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Коли ви виконуєте переказ, UniPass відкриє спливаюче вікно Snap, щоб підтвердити, чи хочете ви виконати цю операцію на гаманці UniPass AA.

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Після підтвердження через MetaMask можна виконувати відповідні операції. У цьому сценарії MetaMask має можливість керувати гаманцем UniPass AA через Snap. UniPass дозволяє користувачам керувати гаманцем без розробки плагіна гаманця, а MetaMask також можна використовувати для представлення користувачів за дуже низькою ціною!

Яку інформацію ми можемо отримати в процесі встановлення та використання?

  1. Snap має відносно точне керування дозволами, навіть дозволи на підключення гаманців, мережеві запити тощо. Загальний дизайн базується на принципі найменшого доступу (Principle of Least Privilege), безпека на першому місці.
  2. З npm:@unipasswallet/unipass-snap ви можете побачити, що Snap базується на NPM для керування пакетами та версіями. Детальніше про безпеку буде розказано пізніше.
  3. Snap є дуже гнучким і може розробляти та вирішувати вміст і логіку для відображення відповідно до потреб проекту. Однак інтерфейс відносно простий і є місце для оптимізації.
  4. Досвід Snap дуже простий і надійний, справді досягаючи рівня бета-версій і робочих середовищ.

Для продукту гаманця безпека завжди на першому місці. Далі давайте проаналізуємо дизайн безпеки 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 зменшуються, тим самим зменшуючи деякі ризики. Він створює безпечну пісочницю для виконання відповідного коду, а також дотримується **Принципу найменших привілеїв для планування контролю дозволів коду. **

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Agoric співпрацював з MetaMask для розробки LavoMoat (цей проект для підвищення безпеки Snap. LavaMoat — це набір інструментів, який зосереджений на вирішенні ризиків безпеки зовнішніх залежностей у проектах JS і додає обмеження на деякі API та логіку.

Agoric і MetaMask спільно запустили випробування захисту від атак і захисту за допомогою чорної та білої скриньок і випустили докладні звіти про безпеку. Отже, на рівні середовища виконання коду ми маємо вагомі підстави вважати, що Snap є безпечним.

Snap-код має бути відкритим і перевіреним

Окрім чіткого процесу авторизації користувача та дизайну з мінімальними привілеями, щоб стати офіційно визнаним Snap, він повинен мати відкритий вихідний код. Завдяки потужності спільноти ймовірність того, що Snap принесе власний шкідливий код, значно зменшується.

Крім того, ми також виявили, що Snap на офіційному веб-сайті має пройти аудит коду сторонньою охоронною компанією перед випуском. Це значно підвищує довіру до безпеки Snap, і аудитори включають SlowMist, з яким усі добре знайомі.

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Виявлені ризики безпеки Snap

Оскільки Snap наразі базується на управлінні пакетами та версіями NPM, існує ймовірність певних змін на рівні коду, а необов’язкові аудити можуть спричинити певні ризики для безпеки.

Оскільки MetaMask не може контролювати випуск версії платформи NPM, проект може випустити нову версію в будь-який час для встановлення користувачами. Через вартість аудиту аудиторська компанія не буде перевіряти кожну версію, тому виникне ситуація: зміни в останній версії можуть не бути з відкритим вихідним кодом або перевірені.

Однак, оскільки середовище виконання є пісочним середовищем і використовує дизайн мінімальних дозволів, якщо користувач вручну не підтвердить нові зміни дозволів, нова версія Snap матиме лише дозволи попередньої версії для виконання операцій. Однак, якщо Snap запитує занадто багато дозволів, це все одно спричинить ризики, тому ви все одно повинні бути пильними під час встановлення та використання Snap.

Технічні можливості та обмеження MetaMask Snap

Хоча MetaMask Snap було офіційно анонсовано нещодавно, насправді Snap розроблявся 4 роки! Оригінальна ідея для MetaMask Snap була опублікована на Medium Деном Фінлі 10 жовтня 2019 року.

Баланс між безпекою, гнучкістю та ефективністю є дуже серйозним завданням.Також видно, що MetaMask заплатив багато грошей і зробив багато підготовки до цього дня.

Наразі відкриті три основні API:

  1. Взаємодію, що дозволяє розробникам розробляти інші ланцюгові гаманці на основі MetaMask
  2. Transaction Insights, що дозволяє розробникам отримувати дані про транзакції до того, як транзакція буде ініційована користувачем, щоб проаналізувати, чи існують ризики в транзакції.
  3. Сповіщення, push-повідомлення безпосередньо користувачам через Snap (але для цього, здається, потрібна підтримка веб-сайту, що трохи несмачно)

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Нижче наведено короткий вступ до конкретних відкритих можливостей і ефектів MetaMask Snap, щоб ви могли мати більш яскраве сприйняття.

Можливість сповіщення

Інтерфейс Snap_notify може відображати сповіщення в MetaMask або браузері. Snap може надсилати повідомлення безпосередньо користувачам через цей інтерфейс, як показано на малюнку нижче

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Можливості аналізу транзакцій

Коли користувач взаємодіє зі смарт-контрактом, MetaMask ініціює подію Snap onTransaction. MetaMask передасть непідписану вихідну транзакцію методу обробника onTransaction. Snap може повернути інтерфейс на вторинній сторінці підтвердження транзакції та налаштувати відображуваний вміст.

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Завдяки цій можливості можна реалізувати такі функції, як перевірка безпеки інформації про транзакції та розширене відображення інформації.

Діалоговий інтерфейс і можливості спеціального інтерфейсу

Можливість Dialog дозволить Snap безпосередньо відкрити незалежне вікно, досягнувши можливостей, подібних до традиційного спливаючого вікна /Confirm/ (як показано нижче), яке можна використовувати для нагадувань, підтверджень, подання інформації тощо.

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

За допомогою Dialog ви зможете налаштувати прості інтерактивні інтерфейси та операції для підключення до вашого DApp.

Які функції зараз недоступні для MetaMask Snap?

З огляду на безпеку та з інших причин Snap наразі не підтримує зовнішні фреймворки сторонніх розробників і надає лише відносно невелику кількість UIKit. Нижче все ще використовується Insight як приклад, щоб показати бібліотеки компонентів інтерфейсу користувача, які можуть викликати всі розробники.

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Як показано на малюнку, наразі лише заголовок (великий текст), текст (маленький текст), панель (картка, яку можна використовувати лише один раз), розділювач (лінія поділу), можливість копіювання (клацніть, щоб скопіювати) і невелика підмножина 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.Паролі в усіх браузерах можна шифрувати ключем гаманця та зберігати. Подбайте про свій гаманець таким чином і зберігайте всі свої паролі при собі.

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Snap дуже актуальний для розробників. Яким є досвід розробника з відкритим API? Ми могли б також розробити Snap самі, щоб випробувати це.

Розробіть тест Snap безпосередньо

Думки про відчуження

Як ми всі знаємо, у більшості випадків більшість користувачів насправді не знають, що таке смарт-контракт, з яким вони взаємодіють. Це в основному включає такі проблеми:

  1. Чи є контракт, який продається, контрактом, заміненим фішинговим веб-сайтом
  2. Чи є контракт, що торгується, контрактом з можливістю оновлення
  3. Чи є смарт-контракт контрактом, який щойно розгорнуто і не перевірено багатьма людьми?
  4. Чи є договір транзакції відкритим кодом?

Для звичайних користувачів ще більше неможливо попросити їх прочитати код надійності контракту перед операцією. На даний момент дуже доцільно використовувати функцію Transaction Insight для здійснення певного аналізу смарт-контрактів. Наприклад, використання ШІ для відносно простого аудиту безпеки смарт-контракту може відфільтрувати 80% низькорівневих фішингових атак. **

**Підготуйте середовище розробки та **завантажте гаманець

Спочатку вам потрібно встановити MetaMask Flask

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

MetaMask Flask — це дистрибутив розширення MetaMask, орієнтований на розробників, який в основному використовується для попереднього перегляду нових функцій і розробки експериментальних функцій. Зауважте, що це версія MetaMask для розробників. Будь ласка, не використовуйте її щодня та не імпортуйте закритий ключ, який використовуєте щодня. Flask використовується тут головним чином для полегшення локального попереднього перегляду Snap, який ми розробили, у реальному часі.

Рекомендується тимчасово закрити Little Fox Wallet та інші гаманці браузера після встановлення або створити новий профіль Chrome для використання, інакше виникнуть конфлікти.

створити акаунт

Після встановлення гаманця створіть новий гаманець так само, як зазвичай створюєте гаманець MetaMask. Зауважте, що це гаманець спеціально для тестування. Будь ласка, не імпортуйте свій щоденний гаманець.

Далі нам потрібно поповнити кілька тестових монет у щойно створений гаманець. Тестові монети можна отримати через кран. Згаданий у цій статті Snap використовує Goerli, тому наступна стаття буде зосереджена на Goerli.

Ініціалізувати Snap на основі шаблону

Відповідно до офіційної документації, спочатку використовуйте @metamask/create-snap CLI, щоб створити новий проект Snap, і ми використовуємо офіційний шаблон для ініціалізації:

yarn create @metamask/snap transaction-insights-snap && cd transaction-insights-snap

Структура файлу знімка

Основні файли Snap містяться в ./packages/snap, а структура каталогу файлів така

Інтерпретація технології MetaMask 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.

Після інсталяції ви побачите подібну інформацію про ризик для кожної транзакції:

Інтерпретація технології MetaMask 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 та маєте відповідні ідеї, ви можете зв’язатися з ними більш ефективно, щоб подати заявку.

Інтерпретація технології MetaMask Snap: досвід розробки, обмеження потужності, аналіз безпеки та бізнес-потенціалу

Висновок

Вище ми проаналізували, що таке Snap з технічної точки зору, наскільки він безпечний, обмеження можливостей і досвід розробника. Короткий підсумок виглядає наступним чином:

  • Snap схожий на аплет WeChat, відкриваючи більший простір для уяви MetaMask
  • Загалом безпека хороша, але є певні ризики. Ви все одно повинні бути пильними щодо дозволів із високим ризиком.
  • З міркувань безпеки наразі небагато відкритих можливостей, але вони все одно можуть створити достатньо творчі Snap
  • Після чотирьох років вдосконалення та тестування досвід розробників чудовий. Проте з міркувань безпеки розроблено механізм білого списку та вимоги до аудиту. Можна очікувати, що в майбутньому не буде великої кількості знімків.

Наразі MetaMask Snap все ще швидко ітерується, і я вірю, що в майбутньому буде відкрито більше дозволів і можливостей. Є надія, що можна буде запровадити більш відкриті та безпечні механізми, такі як офіційний механізм перевірки аудиту від Apple і контроль версій офіційного сховища коду, щоб більше розробників могли брати участь за низькою ціною. Якщо цю проблему вирішити, можна очікувати, що в майбутньому буде великий попит. Будуть навіть спеціальні посади розробників Snap.

З величезною кількістю користувачів MetaMask незалежні розробники також можуть мати певні можливості. Давайте почекаємо та подивимося, що принесе наступна проривна інновація Snap.

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Репост
  • Поділіться
Прокоментувати
Додати коментар
Додати коментар
Немає коментарів
  • Закріпити