30 января 2023

MetaMask для продвинутых. Часть I. Браузерное расширение

TL;DR

  • Введение
  • Простые вопросы
  • Настоящие проблемы MetaMask
    • Пример №00. Seed vs. Private?
    • Пример №01. Самая важная проблема ММ
    • Пример №02. Интерфейс гиков
  • Зато вот что есть 4
  • Не всегда полезные фичи — это баги? 5
  • Софт + железо
  • Аналоги и альтернативы
  • Апрувы и не только они
  • Фичи, которые нравятся мне
  • Расширения, помогающие ММ
  • Заключение
  • Продолжение следует?

Введение

MetaMask — одно из самых ярких приложений переходного типа (от Web 2.0 к Web 3.0), созданное известным разработчиком ConsenSys, который с 2022 года находится под постоянным давлением со стороны акционеров. И в 2023 году эта тема разгорелась новым пламенем. 

Но нас интересуют сегодня не правовые и/или организационные вопросы, и даже не финансовые, а сугубо технические, касающиеся “внутренней кухни” МетаМаска именно. Почему? 

Причины две. Базовые:

  • Во-первых, при количестве пользователей более 10 000 000 — оценка в магазине приложений Chrome чуть больше 3 (3,2 / 3,1); 
  • Во-вторых, часто приходится этим расширением пользоваться (мобильную версию сегодня рассматривать не будем), а значит — есть, что сказать. 

Итак… 

Простые вопросы

Вдохновил на написание материала меня вот этот пост от И. Максименка из Plasma, где звучал буквально следующий вопрос: “поделитесь с какой болью сталкиваетесь и ТОП-3 фичи, которые хотели бы видеть в идеальном расширении для Web3?”. 

Проследив с десяток ответов, пришёл к выводу, что большое число пользователей просто не знают о фичах, которые могут облегчить работу с MetaMask (MM — далее). Попробую перечислить их в виде списка: 

  1. Если всё ещё подключаете сервисы в ручном режиме, то рекомендую заглянуть на сайт chainlist.org: конечно же, не стоит забывать об азах безопасности, в частности, об атаках через DNS и MITM-взломах, то есть перепроверять подключенное, но всё же, при прочих равных — указанный сайт сильно ускоряет процесс добавления сетей (тестовых — в том числе); 
  2. Если всё ещё не поняли, в чём разница между некастодиальными и кастодиальными кошельками, то рекомендую сделать два действия: во-первых, прочитать вот этот материал на Forklog; во-вторых, понять, что каждый минус ММ может стать плюсом. Пример по последнему утверждению: если именуете (см. ниже) кошелёк в одном браузере, то факт того, что в новом название не будет синхронизировано (по аналогии с синхронизацией аккаунтов, закладок и прочего в самом Хроме) — и это не баг, но фича, поскольку это позволяет существенно сократить цифровые следы
  3. Хотите большего? Читайте далее. 

Menaskokp. Аккаунт

Настоящие проблемы MetaMask

Их довольно много, хотя большая часть из них касается, скорее, небрежного отношения к собственным средствам, но совсем исключать вину разработчиков я бы не стал. 

Пример №00. Seed vs. Private?

Впервые столкнуться с проблемным использованием ММ вынужден был в ноябре 2018 года, когда вышло очередное обновление, которое конфликтовало с установленным ПО: пришлось удалить и восстановить аддон. Но после восстановления по seed-фразе аккаунты оказались совершенно не те. Казалось бы: как так? Ведь получение приватных ключей, а из них — кошельков, из seed-фразы — процесс математически выверенный. В итоге долгих изысканий выяснилось, что в ММ было некое подобие passphrase (как у Trezor и не только), благодаря которой связка приватных ключей из сид-фразы получается совершенно иная. Подробней об этом можно почитать по ссылке: trezor.io/learn/a/passphrases-and-hidden-wallets или альтернативно — здесь

Позже опишу решение и этой проблемы, но урок №01, который усвоил до того, а в этом случае — подтвердил на практике, заключается в том, что помимо seed-фразы (которую стоит хранить хотя бы в 2-3 местах и разными способами) хорошо бы иметь всегда прямой доступ к приватному ключу

Пример №01. Самая важная проблема ММ

MetaMask. #02Какая же? Приватность. С 2022 года ММ стал собирать, на мой взгляд — избыточные, данные, перечень коих можно найти, скажем, здесь. И отсюда приходится сделать сразу три важных вывода:

  1. Связка Infura + MM — не лучшая в плане приватности и подобных вещей, поэтому вот подборка альтернатив (ещё более глубокий уровень погружения найдёте здесь: см. рис. выше); 
  2. Double и др. VPNне роскошь, но повседневная нужда, поскольку никогда не знаете, какая именно юрисдикция и под какими санкциями окажется уже завтра (подборка VPN-2023: по ссылке); 
  3. И самое главное: любая надстройка в Web 3.0 ведёт вас к Web 2.5, а значит — к компромиссам, поэтому уже забыли о том, что есть кошельки aka полные ноды (Geth, Bitcoin.Core, etc.), но это не означает, что стоит как-то иначе относится к “поставщикам услуг” навроде Infura, MetaMask, etc. — нежели как к компромиссам именно. 

Пример №02. Интерфейс гиков

Несмотря на то, что данный баг действительно существует, особенно — когда активно торгуете на AMMs (навроде, Uniswap, Quickswap, PancakeSwap, etc.), всё же назвать его хоть сколько-нибудь существенным препятствием самостоятельным не могу. 

Конечно, если кто-то из “чёрных шляп” догадается подобный баг использовать с атаками подмены (см. ниже разбор), возможно, это станет настоящей бедой, но пока это неприятность, которая возникает время от времени при переключении сетей. И решается довольно просто: или с помощью повторной авторизации, или ещё более верным подходом. Каким? 

Правило следующее: работаете с AMM (DEX) — работайте в одном окне (вкладке) и в одной сети за один раз. Если вы — не супер-арбитражник, который по неведомой причине умудряется торговать в ручном режиме, то 2 и более вкладки — блажь, но никак не необходимость. 

К тому же — с таким подходом сможете избежать очень много сопутствующих неприятностей: 

  1. Есть масса dApps-ов, которые просят сменить сеть на “нужную” (им, а не вам: см. ниже) и постоянные игры в переключение могут ослабить внимание, а это — первый фактор любой фишинг атаки; 
  2. Непоследовательность переключений может привести к тому, что рано или поздно заплатите 10 ETH вместо 10 MATIC и сожалеть придётся крайне долго;
  3. Когда открыто множество вкладок — элементарно можете не заметить одну из тех, что открыта зловредом, как это часто делают сайты пседоторрентов и им подобные. 

QuickSwap. #01Поэтому минимализм здесь может стать если не панацеей, то спасением в 9 из 10 случаев. Точно. 

В завершении этого мини-раздела добавлю ещё одну фичу: не забывайте смотреть на подключенные к конкретному кошельку сайты: 

Wrap NFT & MetaMaskВажно использовать эту проверку с проверкой выданных разрешений (approves): об этом — ниже. Здесь же отмечу, что вопросы к интерфейсу возникают постоянно у ММ-сообщества: вот один из примеров, но это, скорее, показатель эволюции, нежели чего-то обратного — негативного. 

В частности, к ММ есть вопросы по отображению:

  1. NFT, тем более что на Uniswap v.3 — они связаны с пулами; 
  2. Токенов ERC-20 и подобных, но об этом — далее. 

Зато вот что есть

Регулировка газа: без неё многие транзакции в том же Polygon просто зависают и ждут своего реверта, а так — можно выставить нужную сумму, соблюдая баланс стоимости и затраченного времени. И в этом ММ хорош. В расширенном режиме есть возможность выставить все три параметра:

  1. Gas limit;
  2. Max priority fee(GWEI);
  3. Max fee(GWEI).

Но это не всё. Есть ещё пункт “Enable enhanced gas fee UI”, который сам по себе (найдёте в экспериментальных функциях) может оптимизировать оплату. Если вопрос интересен, рекомендую заглянуть на два следующих ресурса:

  1. ethgasstation.info
  2. etherscan.io/gastracker 

Например, если тестируете dApps, то можно научиться играться с nonce в пункте  “Customize transaction nonce” в разделе расширенных функций (Advanced). 

Мало кто использует список “Контактов” (Contact-list), но это крайне полезная вещь, которая вкупе с другими мерами защиты поможет переводить средства безопасней. с какими именно? 

  1. Используйте ENS-домены у себя, чтобы всегда можно было сравнить данные в разных источниках (в кошельке, например, и в сканере); 
  2. Проверяйте не только первые 3-4 и последние 3-4 цифры, но и хотя бы 3-4 в середине, чтобы избежать атак по похожим номерам; 
  3. Помните, что копируя адрес откуда бы то ни было, можете наткнуться на так называемые отравленные адреса: поэтому проверка всё равно должна включать хотя бы 2 источника. 

Есть и другие премудрости, но о них — не сегодня. 

Не забудьте, что в настройках приватности и безопасности (Security & privacy) есть функция антифишинга (Use phishing detection), а в оповещениях (Alerts) можно выставить функцию просмотра сайтов без авторизации (Browsing a website with an unconnected account selected), что крайне полезно в исследовательской работе любого крауд-контрибьютора и нетсталкера.

Не всегда полезные фичи — это баги? 

Не так давно ММ добавил возможность автоматического поиска токенов на ваших кошельках. Связано это с тем, что такие проекты, как: debank.com, zerion.io, zapper.fi и им подобные (так называемые smart-wallets) анализируют нативные токены (коины) и иные взаимозаменяемые токены (ERC-20, BEP-20 и подобные), а равно и NFT, а ММ хочет оставаться в рынке. 

Вот только проблема в том, что smart-wallets дают раскладку по токенам, пулам, NFTs и т.д. по запросу, а MetaMask выдаёт весь список каждый раз при просмотре:

MM & токеныПри 10-100 токенах на кошельке листание вверх-вниз может стать крайне утомительным процессом. Поэтому, рекомендую и здесь довольствоваться принципом всё того же минимализма:

  1. Добавляйте только то, что вам реально нужно/важно; 
  2. Удаляйте то, что не нужно/не важно здесь-и-сейчас. 

Добавить токен в ММ и удалить — дело секунд, а пользы от этого — навечно. Приведу пример с помощью токена NIFTSY:

  1. Прежде всего, если токен уже торгуется, то адрес его смарт-контракта в нужной сети следует посмотреть на CoinMarketCap или ближайшем аналоге. В данном случае: coinmarketcap.com/currencies/envelop — перейдя на страницу, увидим, что адрес токена в сети Ethereum будет следующим: 0x7728cd70b3dd86210e2bd321437f448231b81733;
  2. Копируем адрес и переходим в официальную документацию проект: https://docs.envelop.is/tech/smart-contracts/deployment-addresses. Зачем? Дело в том, что фишинг и прочие атаки возможные на любой стадии (не забывайте: работаете в НЕдоверенной среде), поэтому лишних проверок не бывает; 
  3. Если адреса совпадают, то можно проверить ещё с помощью AMM, на которой торгуется токен (см. скриншот ниже); 
  4. После этого — уже смело добавлять токен. 

Теперь же попробуем раскрыть ещё один важный аспект. 

Софт + железо

Собственно, речь идёт прежде всего о Ledger (ledger.com/metamask) & Trezor (trezor.io/learn/a/metamask-and-trezor). О последней связке подробно рассказывал на Forklog, поэтому повторяться не буду: пройдите и прочтите

Здесь же отмечу вот что:

  1. Trezor куда более минималистичен, чем Ledger, но это плюс, а не минус; 
  2. Уровень безопасности у Ledger & Trezor при правильном использовании — примерно одинаков (и пресловутая проблема оффлайн взлома решается с помощью passphrase легко);
  3. При этом у Ledger много лет не лечится до конца проблема с обновлением нод, а значит — балансов, поэтому в моём личном списке аппаратных кошельков он всегда — №02. 

Как бы там ни было, но связка ММ+аппаратный кошелёк — надёжная и, если научились устранять проблемы, такие как на скриншоте ниже (в том числе — радикальными способами), то это явно поможет, и не раз, сохранить собственные средства и средства ваших клиентов (если, они у вас, конечно же, есть). 

Error & MM

Аналоги и альтернативы

Для того, чтобы оценить не недостатки, а положительные стороны ММ — достаточно посмотреть на конкурентов. Не буду перечислять всех, но раскрою в нескольких примерах:

  • EMV-кошельки:
    1. MEV — один из старейших конкурентов ММ, который… теперь не поддерживается командой, потому как теперь создан кошелёк Enkrypt — мультичейновый и в прямом смысле — альтернативный ММ: использовать оба расширения одновременно — крайне сложно. Победить Enkrypt хочет явно за счёт дистрибуции: заявлена поддержка не только Chrome, но и Brave, FireFox, Opera, и даже Edge и, что совсем уж удивительно — Safari
    2. Coin98 — ещё одно расширение с мультичейн поддержкой, которое пока имеет чуть более 50 000 пользователей и мной не тестировалось (сюда же можно отнести EVM-кошелёк Argent X, потому как его по крайне мере тестировал: единожды); 
    3. Есть довольно большая плеяда мобильных кошельков (порой — с десктопными версиями), как то: Trustee, Trust, Atomic, etc. Но все они работают в связке с Wallet Connect и поэтому именно базовому функционалу ММ конкуренции не представляют. К тому же, интегрировать их с ММ тоже можно. 
  1. НЕ EVM-кошельки — лучшее доказательство, что ММ не так уж и плох. Судите сами:
    1. Avalanche с прошлого года имеет “Core | Crypto & NFT Wallet Extension”: за это время у него чуть более 10 000 скачиваний и менее 100 оценок. При этом на первой стадии, из-за конфликтов с ММ, это приложение перенёс в отдельный профиль. Каких-то изысков в сравнении с ММ на тот момент не отметил; 
    2. Polkadot — пожалуй, самое минималистичное из всех расширений: polkadot.js.org/apps/#/explorer — тот, кто это видел, никогда не скажет, что ММ плох (хотя мне и по душе простота .js); 
    3. Phantom — приложение от Solana, которое имеет более 2 000 000 установок, но не может похвастаться даже половиной функционала ММ; 
    4. Tronlink — близится к 500 000 скачиваний и тоже не содержит каких-либо kill-фич относительно ММ; 
    5. Помимо этого удавалось (и не раз) на практике использовать: Yoroi (ADA), ioPay (IOTX), Mask Network (ETH), ZilPay (ZIL), Braavos (StarkNet), Frontier (мультичейн) и пока каких-то существенных фич обнаружить не удалось, хотя ряд из них остались для нативных монет (Yoroi, ioPay, ZilPay). 

Конечно, можно было бы сделать объективное (табличное, например) сравнение функции, но оставим это для второй части: да и то, если будет соответствующий запрос. 

Поэтому получается буквально следующее: критиковать ММ можно, пока… не станете полноценно использовать множество других решений, куда менее развитых. А ещё лучше — разрабатывать. 

Апрувы и не только они

Но есть вещи, которых мне, правда, не хватает в ММ. Перечислю пять ТОПовых:

  1. Апрувы. Их приходится искать и удалять (при необходимости) через эксплореры, а не кошелёк (хотя работа с сайтами им и поддерживается). Список в помощь:
    1. Arbitrum — https://arbiscan.io/tokenapprovalchecker
    2. BSC — https://bscscan.com/tokenapprovalchecker 
    3. Ethereum — https://etherscan.io/tokenapprovalchecker 
    4. Optimism — https://optimistic.etherscan.io/tokenapprovalchecker 
    5. Polygon — https://polygonscan.com/tokenapprovalchecker
  2. Отображение NFT. Здесь можно использовать сразу несколько решений:
    1. Смарт-кошельки: навроде тех, что перечислил выше; 
    2. NFT 2.0 агрегаторы: appv1.envelop.is — как пример; 
    3. NFT-маркетплейсы: OpenSea, Rarible и другие (см. дополнительно); 
    4. Прочие площадки; 
  3. Сортировки балансов. От меньшего к большему и наоборот. Не просто удалять нулевые балансы (для этого нужно перейти в “Настройки” (Settings) -> затем на вкладку “Основные” (General) и спуститься в самый вниз, активировав пункт “Скрывать токены без баланса” (Hide tokens without balance)), а именно сортировать, чтобы можно было быстро проанализировать ситуацию с ними; 
  4. Кастомизации тем: название и аватарка — это хорошо, но добавить 2-3 цветовые схемы не так и сложно, зато антифишинг функционал возрастает в разы; 
  5. Тестнеты выделить бы более блеклыми цветами и не отмечать точками, как майннеты. 

Хотя, пока писал, понял, что есть и ещё. Но остановимся пока на этом: всё же 8 страниц — довольно утомительны к восприятию, а осталось ещё две прочесть. 

Фичи, которые нравятся мне

Пожалуй, самая главная из них состоит в том, что ММ позволяет как создавать новую связку аккаунтов из seed-фразы, так импортировать/экспортировать аккаунты из других кошельков. 

Почему? 

Во-первых, такой подход позволяет разделить кошельки на ряд типов (видов):

  1. Те, которые используются постоянно: для тестов, в том числе — будущих airdrops, для разного рода экспериментов с токенами, DeFi-механиками и прочим (условно — это и будет горячий кошелёк); 
  2. Те, которые в повседневном использовании не нуждаются, но могут понадобиться (и не обязательно это “холод”): например, если  раз в месяц подписываете мультисиг, то соединить ММ + Trezor — хорошая идея, как и отключить в период неактивности; 
  3. Те, которые стоит использовать в качестве одноразовых. 

При этом то, чего многие не ценят, и есть главная ценность ММ: не важно — идёте ли  создавать multisig на Gnosis Safe, делать обмен через свопы Uniswap, подключать очередной домен через ENS или даже выдвигать proposal через безгазовую подпись на SnapShot — везде и всюду будет подключение через Wallet Connect & MetaMask, а остальное — уже как повезёт. 

Расширения, помогающие ММ

Здесь не будет полного списка. Почему? 

  • Во-первых, он сугубо индивидуален и подбирается под ваши задачи; 
  • Во-вторых, всех приложений так много, что их даже краткое описание потребует ещё одной внушительной статьи. 

И всё же, вот некоторые из:

  1. EtherAddressLookup — помогает противостоять тому самому фишингу, о котором так часто пишу, в том числе — в рамках данного материала; 
  2. EtherMail — не аддон, но крайне полезная вещь, если хотите писать письма “прямо из кошельке” (альтернативы);
  3. Decentralized Websites (если не знакомы с проектом — начните отсюда) — вполне себе способ путешствий по Deep Web с помощью не-.onion-доменов. 

Если эта тема интересна — напишите на menaskop и продолжу подборку аддонов, а пока — переходим к итоговой части. 

Заключение

Представьте, что было бы, если бы производители цифровых камер “слушали” плёночный “Kodak”? Были бы у вас гигабайты сделанных фото или до сих пор бы довольствовались 12 кадрами и не всегда удачными? Или подумайте о том, что если бы iPhone не дал бы нам опыт touch-взаимодействия со смартфоном? Продвинулась ли бы индустрия столь далеко? Да, пусть он лишь синтезировал ранее созданные технологии, но вопрос по существу иным не станет. 

Даже в этих, схожих примерах ответы очевидны, но их объединяет то, что они разработаны в опыте потребительства, а Web 3.0 — это опыт созидателей и творцов и он никак не может быть похож на консьюмеризм-концепт. По определению. 

Поэтому ММ и другие решения имеют множество недостатков…, но тогда, когда вы их ищите, а не начинаете использовать инструментарий по назначению: в конкретном случае — как точку входа в “Матрицу”, то есть в мир децентрализованного бэкенда (блокчейны, DAGs, etc.), и децентрализуемого (действие происходит в Present Continuous) в моменте фронтенда. 

Продолжение следует?

Да, если материал будет полезен, важен, востребован, а пока всё и 

До!

Обсудить в Discord!

Menaskop
  • Зарегистрирован: 22 мая 2012 г.
  • Локация:London/United Kingdom
  • Сайт:penroseisparty.com