Итак, в первой части рассмотрели многие вопросы: hub.forklog.com/metamask-dlya-prodvinutyh-chast-i-brauzernoe-rasshirenie — многие, но далеко не все.
Попробуем сегодня восполнить ряд пробелов.
MetaMask и обновления
Речь не пойдёт про то, что обновлять нужно из официального “стора”, потому как, если не дошли до этого момента (что вполне возможно), то вам сюда и сюда, но о том, что произошло после последней публикации о данном некастодиальном кошельке.
Во-первых, MetaMask добавил возможность указания трат для конкретного приложения (dApp) и конкретного вызова, что сильно усложняет задачу тем атакам, которые направлены на совмещение фишинга с выдачей апрувов. Сейчас поле выглядит так:
Не знаю, почему сразу команда ММ не внедрила этот функционал, но хорошо, что сейчас он появился. (Попробовать можно всё новое через экспериментальные функции: например “Improved token allowance experience. Turn this on to go through the improved token allowance experience whenever a dapp requests an ERC20 approve”).
Во-вторых, внедрена функция (совместно с HAPI) по проверке смарт-контрактов: своеобразный антифишинг контроль. Обещают также добавить возможность жалоб на конкретные адреса (правда, как будут бороться с обратным процессом, когда вполне себе добротные смарты спамят вымогатели, — не ясно). И вот здесь для меня возникает большая развилка: понятно, что пользователям хочется “проще, быстрее и лучше”, но какое отношение это имеет к Web 3.0? То, что мы добавляем централизованных посредников — точно: никакого.
Как по мне — лучше бы такие вопросы отдать в нормальное DAO-тестировщиков: протестировали, проголосовали и дали рекомендации в виде белых списков, а для продвинутых пользователей — оставить всё как есть. Иначе опять те же грабли — вид сбоку только.
Точка ноль
В прошлый раз рассказал про работу с нулевыми балансами и получил отзыв, что “не так это и важно”. Наверное, если у вас 5-10 токенов, то не важно. Если же их 5-10 десятков, а то и сотен — то всё не так просто: нечто вы уже переслали на холод, нечто — перестало торговаться и обновляться, нечто — в целом торгуется около нуля, потому что такова судьба. Вариантов множество.
В любом случае — есть три важных аспекта:
- Всегда должен быть “чистый” аккаунт, где кроме нативной монеты не указано ничего, исключая токены, которые сейчас в работе: это сильно упрощает жизнь и в тестнетах, и новых майннетах;
- Этот же подход ещё на шаг отдаляет от фишинговых атак, о которых напомню ниже;
- Наконец, с помощью этой простой функции — крайне просто дифференцировать разные аккаунты в одной учётной записи MetaMask.
Что значит одной? Когда авторизуетесь в Google Хроме, например, то можете выбрать один из аккаунтов:
И поэтому, совместив три практики:
- Отдельная учётная запись в браузере;
- Отдельная учётная запись (а значит — и первичный пароль доступа) — в MetaMask;
- Отдельная связка с Trezor/Ledger (о нём скоро расскажу).
Получите куда более безопасную работу даже на одном компьютере и даже без виртуальной машины (хотя с ней всё равно многого не сделаешь, но и об этом расскажу отдельно).
Во тьме кроличьей норы
Упоминал о том, что без VPN жизнь с MM нынче плоха. Но на самом деле в мире bigdata & AI нужно помнить, что способов идентификации куда больше, чем просто VPN:
- Это могут быть метаданные самой разной величины: поступите парадоксальным образом и сходите на https://yandex.ru/internet/, чтобы спуститься в техническую информацию и осознать, сколько именно всего передаёт браузер. Поэтому, когда работаете с TOR-браузером — не нужно менять окно, открывая его полностью; не нужно менять языковые настройки и т.д., но это же касается и вашего холода: работать с ним, если он связан с MM, лучше с максимальной анонимизацией всего и вся;
- Если у вас есть мобильная версия и браузерная, то синхронизация их неизбежна (на стороне как провайдеров, так и самого дапса), поэтому сей факт стоит учесть в практике и лучше бы ММ ввели стратегию, которую использует Apple (раз уж всё равно речь про центрального персонажа этой пьесы): авторизовать аккаунт дополнительно при синхронизации нового устройства. Это влияет на кастоидальность? Ещё как, но что-то мне подсказывает, что ММ это уже заботит меньше всего;
- Собственно, ранее было так: если перейти в расширенные настройки (“Advanced”) и далее в подпункт “Sync with mobile”, то можно как раз провести синхронизацию мобильного устройства: теперь же функция не доступна. И в этом смысле ММ явно мечется между true-историей некастодиальности и санкционными списками;
- Отдельная фича стоит в тех же расширенных настройках в подпункте “Show hex data”: зачем это нужно? В первую очередь для тестов и баг-репортов, но ещё интересней поработать с транзакциями, которые ещё не отправлены в блокчейн (опять же — попробую поведать об этом в crossing-механиках, но не сегодня), а ещё можно много всего сделать — главное: уметь. На мой взгляд эта функция наиболее близка к браузерной консоли, вызываемой F12, где можно напрямую поработать с исходным кодом страницы и посмотреть на поведение: просто не стоит забывать, что действия в блокчейне стоят денег и тесты делать лучше в Goreli и собратьях.
Цены — не то, чем кажутся
Крайне важной, хотя и мало изучаемой стороной, работы ММ являются… цены на токены. С одной стороны — ММ прямо говорит, на что ссылается: “мы используем API CoinGecko и CryptoCompare для отображения вашего баланса и цены токена”; с другой стороны — CoinGecko по токенам/коинам ниже ТОП-100/200 даёт крайне скудную и не всегда точную информацию, а потому лучше перепроверять данные:
- Способ первый — тривиальный: через другие кошельки, включая те, что пишутся с приставкой смарт:
- https://zapper.xyz/
- https://debank.com/
- подобные
- Способ второй — через другие агрегаторы:
- https://coinmarketcap.com/
- прочие
- Способ третий — наиболее верный:
- Искать торгуемые пары и смотреть напрямую на DEXs (AMMs)
- Смотреть сделки (объём — в первую очередь) на ОТС
- Способ четвёртый:
- Разного рода портфолио сайты, но
- Так как они в большинстве своём стали смарт-кошельками — этот способ во многом похож с первым.
И всё же цены всегда лучше проверять в 2-3 источниках:
- Так вы обезопасите себя от фишинга;
- Привьёте привычку идти от смарт-контракта, а не посредника;
- Научитесь анализировать проекты (методика 4К вам в помощь: подкаст по ней “1+1=3” выходит каждую неделю на Forklog).
NFT — ахиллесова пята MM
Тут писать особо нечего: на данный момент и по моему личному мнению ММ — худший кошелёк для NFT, тем более с приставками Smart, Wrap, Financial, Programmable, etc.
Да, есть вот такая фича, но что она даёт на практике?
Фактически ничего:
- Большинство NFT не отображается или отображается без метаданных;
- Добавить токен, особенно ERC-1155, не всегда возможно: особенно — если не ты — не единоначальный владелец копий;
- Работа с IPFS-данными тоже зависит от третей стороны и отрабатывается потому не всегда корректно.
Как по мне в этом у ММ точно проблемы и делать продвинутым пользователям с ним особо нечего. Впрочем, справедливости ради отмечу, что есть теперь отдельный поддомен: https://portfolio.metamask.io/?tab=nfts, где можно как раз поработать с NFT, но и он пока далёк от идеала.
Чего бы хотелось мне ещё?
Много всего, но перечислю ТОП-10 личных пожеланий:
- Удалять IP и метаданные, собранные за период: пусть они хранятся, скажем, 6 месяцев, а потом — канут в Лету навсегда (хотя лучше и честнее — не хранить вообще);
- Работать с NFT любого формата и с разными вариациями метаданных: всё же хайп невзаимозаменяемых токенов 2017 и 2021 — это не просто ажиотаж вокруг картинок, но и технологий;
- Конечно же, хотелось бы работать с выданными апрувами, а не просто сайтами и работать как можно детальней;
- Весьма интересно было бы понимать, что скрывается за фразой: “Participate in MetaMetrics to help us make MetaMask better” — не искать это через тесты, записи в документах и прочее, а именно видеть в виде чек-листа: это ведь связано и с п. 1, и п. 2, и п. 3 — и много чем ещё;
- Почему бы не сделать верифицируемые источники сетей навроде https://chainlist.org/ и подобных? Ведь сейчас добавление сети — целый квест: особенно — если речь идёт о новых проектах;
- Прекрасно, что внедрили обучающие уроки: https://learn.metamask.io/ru-RU, которые есть и на русском, и на английском, и на украинском, и на других языках, но хотелось бы такой же функционал и по продвинутым функциям;
- EVM-сети — это прекрасно: их много и они связывают другие миры — EvmOs в Cosmos, Moonbeam в Polkadot, Avrora в Near и т.д. И всё же надеюсь, что будет какая-то версия для работы и с НЕ EVM-сетями, потому как использовать Phantom, Polkadot.js, TronLink и другие, которые, к тому же, начинают конфликтовать с ММ, весьма не просто и с каждым годом это не просто становится совсем не простым;
- …
Да, о многоточии будет ещё одна часть: например — об этом. А пока — итоги.
Выводы ко второй части
С одной стороны — после выхода первой части — получил с десяток запросов, но все они касались технических деталей, а не общего функционала, поэтому, если и писать ответы на такие запросы, то в DM-стиле, или же отдельной статьёй. Пока же хочется скомпоновать опыт в ряде простых и понятных тезисов. Пусть и не для всех.
С другой стороны — ММ за последний месяц-полтора продвинулся и довольно далеко: это радует. Это усиливает положительную конкуренцию на рынке и именно в стане не кастодиальных кошельков жду наращивание различных видов “вооружений”, так борьба за пользователя — дело не шуточное. К тому же ММ стал стандартом априори для многих и многих dApps.
Наконец, с третьей стороны — мне есть, что ещё добавить, а значит? Да, верно, будет и третья часть, а пока всё и
До!