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

Подключение сайта к расширению — это выданное домену право читать ваш адрес и присылать вам запросы на подпись; само по себе оно ничего не переводит и ничем не распоряжается, но открывает канал, по которому запрос может прийти в любой момент.

Что означает подключение сайта к расширению

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

Право это одностороннее: сайт спрашивает, вы подтверждаете. Без вашего подтверждения ни одна операция не состоится. Опасность не в подключении, а в том, что подтверждают, не читая второе окно.

У расширения есть встроенные средства защиты, описанные в стандарте подписи типизированных данных. EIP-712 создан 12 сентября 2017 года, статус Final. Среди полей домена подписи — идентификатор цепочки, причём стандарт предписывает клиенту отказывать в подписи, если идентификатор не совпадает с активной сетью, и адрес проверяющего контракта, по которому клиент вправе вести защиту от подделки под конкретный контракт. Всего полей домена пять: имя, версия, идентификатор цепочки, адрес контракта и соль.

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

Как перевести предмет между кошельками через браузерное расширение: три типа запросов

Запросы бывают разной природы. Путают их постоянно.

Тип запроса Что в окне расширения Плата сети След в сети сразу
Транзакция перевода Адрес контракта коллекции, нулевая сумма, разобранный вызов с получателем и номером Есть Есть: смена владельца в журнале
Транзакция выдачи прав Адрес контракта коллекции и оператор, которому выдаются права; поля количества нет Есть Есть: событие выдачи прав
Подпись обычного сообщения Текст сообщения как есть, иногда нечитаемый Нет Нет
Подпись типизированных данных Домен подписи и поля структуры: предмет, цена, срок действия Нет Нет: подпись хранится у сайта и предъявляется позже
Запрос смены сети Название и идентификатор другой цепочки Нет Нет, но меняет, в какой сети пойдут следующие запросы

Вторая строка — главная ловушка сегмента. У разрешения на распоряжение монетами в окне видна сумма, и несоразмерную сумму замечают даже невнимательные. У разрешения на коллекцию суммы нет вовсе. Сравнивать не с чем. Охват при этом полный.

Схема из пяти проверок в окне расширения: домен сайта, тип запроса, адрес контракта, аргументы с получателем и номером, отдельный отзыв прав
Схема из пяти проверок в окне расширения: домен сайта, тип запроса, адрес контракта, аргументы с получателем и номером, отдельный отзыв прав

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

Издержки: комиссии, роялти, газ — и бесплатные подписи

Расходы делятся на две группы. Видимые и отложенные.

  • Перевод оплачивается платой сети. Это единственная строка, которую окно расширения показывает заранее.
  • Выдача прав оператору оплачивается отдельно, отзыв прав — тоже. Операция из трёх подписей даёт три платы.
  • Подписи сообщений и типизированных данных платы не требуют. Отсюда и ощущение бесплатности, за которым скрывается отложенный расчёт.
  • Тариф торгового сервиса и роялти коллекции при переводе между своими адресами не возникают: ERC-2981 (создан 15 сентября 2020 года, идентификатор интерфейса 0x2a55205a) называет выплату роялти добровольной, поскольку перевод между кошельками сделкой не является.
  • Смена сети по запросу сайта бесплатна, но уводит следующие операции в другую цепочку, где у знакомой коллекции может оказаться другой контракт.

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

Пошаговый сценарий перевода и отзыва доступа

  1. Откройте страницу коллекции по заранее сохранённой закладке, а не по ссылке из переписки или из поисковой выдачи. Домен — первое, что подделывают.
  2. Перед подключением выпишите адрес контракта и номер экземпляра. Эти две величины понадобятся для сверки в окне расширения.
  3. Подключите сайт и выберите в расширении тот адрес, с которого уходит предмет. Если адресов несколько, убедитесь, что активен нужный: запрос соберётся под активный.
  4. Соберите перевод и в окне расширения сверьте четыре поля: домен сайта, тип запроса, адрес контракта и аргументы с получателем и номером. Домен в этом окне подставляет браузер, и страница его не меняет.
  5. Отклоните запрос, если в окне нет получателя предмета. Запрос без получателя переводом не является, чем бы его ни называла страница.
  6. После подтверждения отключите сайт в расширении и отдельно проверьте, не остался ли у кого-то оператор на эту коллекцию. Права отзываются транзакцией, а не отключением.
  7. Через сутки откройте журнал транзакции и сверьте номер предмета в событии смены владельца с выписанным.

Шестой шаг пропускают почти все. Он же единственный, который закрывает доступ по-настоящему: пока оператор числится в контракте, он вправе забрать любой экземпляр этой коллекции с вашего адреса, и ни закрытая вкладка, ни удалённое расширение этому не помешают.

Риски: подмена интерфейса страницы и живые разрешения

Схемы здесь строятся на одном зазоре. Страница пишет одно, запрос содержит другое.

  • Кнопка «перевести на свой второй кошелёк», отправляющая запрос на выдачу прав оператору.
  • Всплывающее окно, нарисованное самой страницей и похожее на окно расширения: настоящее окно рисует браузер вне области страницы.
  • Копия расширения из поисковой выдачи или из сторонней витрины дополнений.
  • Запрос смены сети перед переводом: та же коллекция по названию, другой контракт по адресу.
  • Подпись типизированных данных без срока действия: предъявить её могут через месяцы.
  • «Отзыв доступа» на сайте, который сам же и просил права: отзыв делается на стороне контракта, а не кнопкой на странице.

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

Материалы по теме:

Итог

Расширение — не кабинет и не хранилище доверия, а посредник, который показывает запрос и ждёт решения. Страница сайта в этой схеме не источник сведений, а оформление, и расхождение между её текстом и содержимым запроса — нормальный сценарий атаки, а не редкость. Отключение домена и отзыв прав в контракте — разные операции, и вторая стоит денег.

Первоисточники откройте сами. Поля домена подписи, предписание отказывать в подписи при несовпадении сети и возможность защиты по адресу проверяющего контракта — в тексте стандарта EIP-712. Требование допускать несколько операторов у одного владельца и устройство выдачи прав — в тексте стандарта ERC-721. Данные сверены на 17 октября 2026 года. Что проверить не удалось: единого стандарта на то, как расширения оформляют запрос выдачи прав на коллекцию, нет, формулировки у поставщиков разные, и опознавать такой запрос приходится по отсутствию получателя предмета в аргументах.

Частые вопросы

Я отключил сайт в расширении. Доступ к предметам закрыт?

Нет. Отключение убирает у домена право присылать вам запросы и не меняет записи в контракте коллекции. Если ранее вы выдали оператора, он остаётся оператором и распоряжается предметами без вашего участия. Закрывается это отдельной транзакцией отзыва прав, с платой сети, и делать её нужно для каждого оператора по отдельности.

Как отличить запрос перевода от запроса выдачи прав?

По наличию получателя предмета в аргументах. У перевода есть адрес, которому уходит экземпляр, и номер этого экземпляра. У выдачи прав получателя предмета нет: есть оператор и признак включения прав, а поля количества не бывает вовсе. Любой текст на странице при этом значения не имеет.

Что опаснее — транзакция или бесплатная подпись?

Зависит от содержания, но бесплатная подпись коварнее. Она не стоит денег, не появляется в сети и может быть предъявлена спустя месяцы, когда вы о ней забыли. Поэтому в окне типизированных данных смотрят на срок действия и на предмет: подпись без срока действует, пока существует условие её исполнения.

Сайт просит сменить сеть перед переводом. Это нормально?

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

Можно ли доверять окну, которое выглядит как окно расширения?

Только тому, которое браузер рисует вне области страницы. Страница способна нарисовать похожее окно внутри себя, с тем же оформлением и кнопками. Признак подлинного — домен запросившего сайта в заголовке запроса, подставленный браузером. Если домен не виден или отличается от адресной строки, закрывайте окно и начинайте заново из закладки.

Вердикт

Браузерное расширение переносит ответственность туда, где её меньше всего ждут: не на ключ и не на сеть, а на чтение одного небольшого окна. Коллекционные предметы делают эту ответственность острее, потому что разрешение на серию выдаётся без числа, а значит и без подсказки о масштабе. Редакционное правило простое и редко выполняемое: разрешения, выданные площадкам, стоит пересматривать раз в месяц и отзывать те, которыми вы не пользуетесь. Отключённый сайт и отозванные права — разные состояния, и второе достигается только транзакцией.

Разборы операций с коллекционными предметами и предупреждения о свежих схемах выходят в нашем Telegram-канале Cryptium.