Запрос «как понять что подписывает криптокошелёк» возникает, когда на экране появляется кнопка «Подтвердить». Что подписывает криптокошелёк в этот момент? Иногда это обычный перевод монет, который сразу отправится в блокчейн. Иногда — вызов смарт-контракта, разрешение на расход токена, заявка на обмен, ордер на продажу NFT или структурированное сообщение, которое само по себе не записывается в сеть, но позднее может быть использовано другим участником. Внешне окна похожи, однако юридический и технический смысл подписи различается радикально.
Кошелёк не принимает решение вместо владельца. Он получает данные от приложения, показывает доступное ему описание, формирует криптографическую подпись и передаёт результат обратно сайту либо в сеть. Безопасность поэтому зависит не только от надёжности seed-фразы. Пользователь должен понять, какой аккаунт подписывает, в какой сети, для какого контракта, на какую сумму, с каким сроком и может ли запрос изменить баланс или полномочия.
Это руководство построено как практическая система чтения запросов на подпись. Оно отделяет подключение кошелька от выдачи прав, транзакцию от сообщения, approve от Permit, разовую операцию от бессрочного разрешения и интерфейсное обещание сайта от фактических полей, которые подтверждает ключ. Для незнакомого приложения полезно сначала пройти проверку подключений и разрешений, а уже затем решать, безопасно ли продолжать работу.
Главное правило: подпись следует рассматривать как самостоятельное распоряжение. Название кнопки, логотип проекта и отсутствие комиссии не доказывают, что действие безвредно.
Что означает подпись криптокошелька
Подпись доказывает полномочие ключа
Криптографическая подпись связывает конкретный набор данных с приватным ключом, не раскрывая сам ключ. Узел, смарт-контракт или сервер приложения может восстановить адрес подписанта и проверить, что данные после подписания не менялись. Подпись не является универсальным согласием «со всем сайтом»: она относится к определённому сообщению, транзакции или структуре.
Практическая проверка. Перед подтверждением установите подписывающий адрес и тип запроса. Один аппаратный кошелёк, браузерное расширение или мобильное приложение может управлять несколькими аккаунтами, поэтому знакомое устройство ещё не гарантирует, что выбран правильный адрес. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «подпись доказывает полномочие ключа» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. Перед подтверждением установите подписывающий адрес и тип запроса. Один аппаратный кошелёк, браузерное расширение или мобильное приложение может управлять несколькими аккаунтами, поэтому знакомое устройство ещё не гарантирует, что выбран правильный адрес.
Кошелёк хранит ключ, а не смысл операции
Интерфейс кошелька способен декодировать стандартные функции и показать получателя, сумму или spender, но он не всегда знает экономическую цель сложного контракта. Сайт может назвать действие «получить бонус», тогда как фактические данные создают ордер, устанавливают operator для NFT или разрешают списание токена.
Сравнивайте описание сайта с полями в окне кошелька. Если интерфейс обещает только вход в аккаунт, а запрос содержит token, amount, spender, operator, deadline или verifyingContract, требуется отдельная проверка. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «кошелёк хранит ключ, а не смысл операции» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Сравнивайте описание сайта с полями в окне кошелька. Если интерфейс обещает только вход в аккаунт, а запрос содержит token, amount, spender, operator, deadline или verifyingContract, требуется отдельная проверка. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Подписание не равно отправке в блокчейн
Транзакция обычно передаётся в сеть, расходует комиссию и получает TxID. Сообщение может быть подписано вне блокчейна и не иметь TxID до тех пор, пока кто-то не предъявит подпись контракту или сервису. Отсутствие газа поэтому не означает отсутствие риска: off-chain подпись способна авторизовать последующее действие.
Что делать пользователю: После подписи сообщения сохраняйте домен, время, тип данных и скрин полей. Если смысл не установлен, не считайте отсутствие немедленного списания доказательством безопасности. После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «подписание не равно отправке в блокчейн» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». После подписи сообщения сохраняйте домен, время, тип данных и скрин полей. Если смысл не установлен, не считайте отсутствие немедленного списания доказательством безопасности.
Подпись необратима как математический факт
Готовую подпись нельзя «забрать назад» из чужого компьютера. Можно сделать её непригодной: изменить nonce, отозвать связанное разрешение, дождаться deadline, переместить активы или выполнить специальную отмену, если протокол это поддерживает. Но простое отключение сайта от кошелька не уничтожает уже выданную подпись.
При подозрении сначала определите механизм: транзакция, allowance, Permit, Permit2, NFT order или авторизационное сообщение. Только после этого выбирают revoke, cancel order, invalidate nonce или перенос активов. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «подпись необратима как математический факт» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. При подозрении сначала определите механизм: транзакция, allowance, Permit, Permit2, NFT order или авторизационное сообщение. Только после этого выбирают revoke, cancel order, invalidate nonce или перенос активов. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
Контекст подписи задаёт реальные последствия
Одинаковые байты могут иметь разный смысл в разных доменах и контрактах. Структурированные подписи используют сведения о приложении, версии, сети и проверяющем контракте, чтобы отделить одно назначение от другого. Однако пользователь всё равно должен проверить эти поля: ложный домен способен выглядеть похоже на настоящий.
Контроль риска. Особое внимание уделяйте chain ID и verifying contract. Название проекта — удобная подпись для человека, но адрес контракта и сеть являются техническими идентификаторами. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «контекст подписи задаёт реальные последствия» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Особое внимание уделяйте chain ID и verifying contract. Название проекта — удобная подпись для человека, но адрес контракта и сеть являются техническими идентификаторами. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
Почему аппаратный кошелёк не решает всё
Аппаратное устройство изолирует приватный ключ и требует физического подтверждения, но оно подпишет вредные данные, если владелец сознательно их одобрит. Маленький экран, неполное декодирование и blind signing могут превратить надёжное хранение ключа в подтверждение непонятного вызова.
Используйте аппаратный кошелёк вместе с проверкой адресов и симуляцией. Для значительного резерва разумно отделить хранилище от операционного адреса, который подключается к DeFi и новым сайтам. Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «почему аппаратный кошелёк не решает всё» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Используйте аппаратный кошелёк вместе с проверкой адресов и симуляцией. Для значительного резерва разумно отделить хранилище от операционного адреса, который подключается к DeFi и новым сайтам. Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
Тип действия и его след
| Действие | Запись в блокчейне | Комиссия | Главная проверка |
|---|---|---|---|
| Connect Wallet | Нет | Нет | Домен, адрес и сеть |
| Транзакция | Да после broadcast | Да | To, value, data, gas |
| personal_sign | Нет | Обычно нет | Текст, домен, nonce |
| EIP-712 | Не обязательно | Обычно нет | Domain, type, message |
| Approve | Да | Да | Token, spender, amount |
| Permit | После предъявления подписи | Может платить relayer | Value, deadline, nonce |
Типы запросов: connect, транзакция и сообщение
Connect Wallet — только установление сессии
Подключение обычно сообщает приложению публичный адрес, выбранную сеть и возможность отправлять запросы в кошелёк. Само по себе оно не передаёт приватный ключ и не создаёт allowance. Опасность начинается, когда после соединения пользователь подтверждает отдельные транзакции или сообщения.
Практическая проверка. Проверяйте домен ещё до соединения, но не путайте disconnect с отзывом ончейн-разрешений. После работы закройте сессию и отдельно проверьте approvals, если они выдавались. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «connect wallet — только установление сессии» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. Проверяйте домен ещё до соединения, но не путайте disconnect с отзывом ончейн-разрешений. После работы закройте сессию и отдельно проверьте approvals, если они выдавались.
Обычный перевод нативной монеты
Запрос на перевод нативного актива содержит адрес назначения, value, комиссионные параметры и nonce. Если поле data пустое, операция чаще всего перемещает монету между адресами. Если data заполнено, даже при наличии value это может быть вызов контракта с дополнительной логикой.
Сверяйте не только крупно показанную сумму, но и полный адрес получателя, сеть, value и наличие calldata. Для нового адреса используйте тестовый перевод, когда комиссии и минимумы это позволяют. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «обычный перевод нативной монеты» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Сверяйте не только крупно показанную сумму, но и полный адрес получателя, сеть, value и наличие calldata. Для нового адреса используйте тестовый перевод, когда комиссии и минимумы это позволяют. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Вызов смарт-контракта
Контрактная транзакция содержит адрес to и calldata, где закодированы функция и аргументы. Кошелёк может показать swap, deposit, mint, claim или approve, но при неизвестном ABI часть данных останется нечитаемой. Функция способна переместить несколько активов, создать позицию или выдать полномочие.
Что делать пользователю: Проверяйте адрес контракта из независимого официального источника, декодированную функцию, получателя результата и максимальные потери. При непонятном вызове безопасный ответ — отклонить, а не проверять его основной суммой. После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «вызов смарт-контракта» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». Проверяйте адрес контракта из независимого официального источника, декодированную функцию, получателя результата и максимальные потери. При непонятном вызове безопасный ответ — отклонить, а не проверять его основной суммой.
personal_sign и вход в приложение
Подпись текста часто используется для доказательства владения адресом: сервер выдаёт nonce, пользователь подписывает сообщение, после чего получает сессию. Нормальная авторизация указывает домен, адрес, случайный nonce, время и назначение. Но произвольный текст может быть сформулирован как согласие на иной процесс или использоваться в уязвимой схеме повторного воспроизведения.
Читайте сообщение целиком. Не подписывайте пустые строки, нечитаемый hex, обещание перевода активов или текст с неизвестным доменом. Авторизация не должна просить seed-фразу и обычно не требует выдавать token allowance. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «personal_sign и вход в приложение» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. Читайте сообщение целиком. Не подписывайте пустые строки, нечитаемый hex, обещание перевода активов или текст с неизвестным доменом. Авторизация не должна просить seed-фразу и обычно не требует выдавать token allowance. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
eth_sign как высокий риск
Метод eth_sign исторически позволяет подписывать произвольный хэш без удобного человекочитаемого контекста. Пользователь может увидеть только последовательность байтов и не понять, будет ли подпись интерпретирована как распоряжение. Современные кошельки нередко предупреждают о таком запросе или ограничивают его.
Контроль риска. Не подтверждайте eth_sign на незнакомом сайте. Если легитимный сервис действительно требует этот метод, найдите его официальное объяснение и используйте отдельный операционный адрес с ограниченным балансом. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «eth_sign как высокий риск» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Не подтверждайте eth_sign на незнакомом сайте. Если легитимный сервис действительно требует этот метод, найдите его официальное объяснение и используйте отдельный операционный адрес с ограниченным балансом. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
EIP-712 typed data
Структурированная подпись разделяет данные на domain, primaryType и message. Это позволяет кошельку показать поля вроде token, amount, spender, nonce и deadline. Читаемость выше, чем у голого hex, но безопасность зависит от правильного отображения и проверки домена.
Сверьте name, version, chainId, verifyingContract, primaryType и каждое экономически значимое поле. Подпись typed data не является автоматически безопасной только потому, что окно выглядит аккуратно. Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «eip-712 typed data» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Сверьте name, version, chainId, verifyingContract, primaryType и каждое экономически значимое поле. Подпись typed data не является автоматически безопасной только потому, что окно выглядит аккуратно. Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
Подпись смарт-аккаунта
У smart account полномочия могут проверяться контрактом, несколькими владельцами, модулем, сессионным ключом или политикой расходов. Подпись одного устройства иногда является лишь частью авторизации, а иногда активирует модуль, способный действовать дальше без каждого ручного подтверждения.
Практическая проверка. Проверьте, какой validator или модуль проверяет подпись, какие лимиты имеет session key и можно ли его отозвать. Для корпоративного кошелька документируйте роли и кворум, а не полагайтесь на название интерфейса. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «подпись смарт-аккаунта» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. Проверьте, какой validator или модуль проверяет подпись, какие лимиты имеет session key и можно ли его отозвать. Для корпоративного кошелька документируйте роли и кворум, а не полагайтесь на название интерфейса.
Быстрая классификация окна
| Что видно | Вероятный запрос | Риск | Действие |
|---|---|---|---|
| Только адрес и сеть | Connect | Фишинговый домен | Проверить URL |
| Получатель и gas | Транзакция | Перевод не туда | Сверить to и сеть |
| Текст и nonce | Авторизация | Replay или ложный домен | Прочитать полностью |
| Spender и amount | Approve/Permit | Списание токенов | Ограничить лимит |
| Operator и approved | NFT approval | Все NFT коллекции | Проверить operator |
| Список вложенных вызовов | Multicall | Скрытый шаг | Декодировать каждый |
Как читать транзакцию до подтверждения
Сеть и chain ID
Chain ID отделяет Ethereum Mainnet от L2, тестовых и совместимых EVM-сетей. Одинаковый формат адреса не означает общий баланс. Подпись в другой сети может вызвать контракт с тем же адресом, но совершенно иной логикой или владельцем.
Первым полем фиксируйте сеть. Если приложение неожиданно предлагает переключение, остановитесь и выясните, зачем это требуется. Не соглашайтесь на неизвестную custom network только ради обещанного airdrop. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «сеть и chain id» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Первым полем фиксируйте сеть. Если приложение неожиданно предлагает переключение, остановитесь и выясните, зачем это требуется. Не соглашайтесь на неизвестную custom network только ради обещанного airdrop. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Поле from
From показывает аккаунт, чьи средства и nonce будут использованы. При нескольких адресах легко подтвердить операцию резервным кошельком вместо операционного. Подключённый сайт также может запомнить ранее выбранный адрес и сформировать запрос не для того аккаунта, который пользователь видит в другом окне.
Что делать пользователю: Сверяйте from по началу и концу адреса, а для крупной операции — полностью. На аппаратном устройстве проверьте, что выбран тот же аккаунт и путь, который используется в приложении. После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «поле from» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». Сверяйте from по началу и концу адреса, а для крупной операции — полностью. На аппаратном устройстве проверьте, что выбран тот же аккаунт и путь, который используется в приложении.
Поле to
To может быть получателем монеты, токеновым контрактом, роутером, мостом, marketplace или прокси. Красивое имя в интерфейсе является меткой, а не доказательством. Прокси-адрес может сохраняться, тогда как implementation обновляется администраторами.
Сверяйте адрес с официальной документацией и эксплорером. Для прокси дополнительно проверяйте текущую реализацию, историю обновлений и полномочия администратора, если сумма существенна. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «поле to» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. Сверяйте адрес с официальной документацией и эксплорером. Для прокси дополнительно проверяйте текущую реализацию, историю обновлений и полномочия администратора, если сумма существенна. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
Value и amount — не всегда одно
Value обозначает количество нативной монеты, приложенной к вызову. Количество ERC-20 или NFT часто находится внутри calldata. Поэтому окно может показывать нулевой ETH, хотя функция разрешает списание USDT или передаёт токены из кошелька.
Контроль риска. Ищите декодированные token amount, token ID, recipient и spending cap. Нулевой value не делает контрактный вызов безопасным. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «value и amount — не всегда одно» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Ищите декодированные token amount, token ID, recipient и spending cap. Нулевой value не делает контрактный вызов безопасным. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
Calldata и selector функции
Первые четыре байта calldata обычно идентифицируют функцию, далее идут аргументы. Известный selector помогает распознать transfer, approve, swap или multicall, но совпадение имени не доказывает добросовестность контракта. В multicall несколько операций упаковываются в один запрос.
Используйте декодирование и симуляцию. Если функция неизвестна или аргументы не показаны, не подтверждайте на основании одного текста сайта. Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «calldata и selector функции» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Используйте декодирование и симуляцию. Если функция неизвестна или аргументы не показаны, не подтверждайте на основании одного текста сайта. Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
Nonce и последовательность операций
Nonce предотвращает повторное включение одной и той же транзакции аккаунта и задаёт порядок операций. Замена или отмена pending-транзакции обычно создаёт новую транзакцию с тем же nonce и более высокой комиссией. Для сообщений nonce может быть отдельным полем протокола.
Практическая проверка. При зависании сначала проверьте статус и nonce по эксплореру. Не отправляйте повторно несколько разных действий, пока не понятно, какое из них будет исполнено. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «nonce и последовательность операций» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. При зависании сначала проверьте статус и nonce по эксплореру. Не отправляйте повторно несколько разных действий, пока не понятно, какое из них будет исполнено.
Gas limit, fee и максимальная стоимость
Gas limit ограничивает объём вычислений, а комиссионные параметры задают цену ресурса. Высокий limit не означает, что вся сумма обязательно будет потрачена, но необычная оценка может указывать на сложный вызов или неисправность. Комиссия не ограничивает стоимость токенов, доступных через allowance.
Отдельно считайте сетевую комиссию и потенциальное изменение активов. Подозрительно дешёвая подпись может быть off-chain разрешением, а дорогая транзакция — ошибочным или сложным контрактным сценарием. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «gas limit, fee и максимальная стоимость» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Отдельно считайте сетевую комиссию и потенциальное изменение активов. Подозрительно дешёвая подпись может быть off-chain разрешением, а дорогая транзакция — ошибочным или сложным контрактным сценарием. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Поля транзакции
| Поле | Что означает | Опасная ошибка | Контроль |
|---|---|---|---|
| chainId | Сеть исполнения | Подписать в другой сети | Сверить сеть |
| from | Аккаунт плательщика | Выбрать резервный адрес | Проверить полностью |
| to | Получатель или контракт | Довериться метке | Сверить адрес |
| value | Нативная монета | Не заметить calldata | Проверить вместе с data |
| data | Функция и аргументы | Blind signing | Декодировать |
| nonce | Порядок транзакций | Создать конфликт | Проверить pending |
| gas | Лимит вычислений | Считать лимитом токенов | Оценить отдельно |
Как читать сообщение и EIP-712
Domain name и version
Name и version описывают домен подписи для пользователя и контракта. Мошенник может выбрать похожее имя, заменить символ или указать известный бренд, поэтому текстовое поле нельзя проверять отдельно от verifyingContract. Version помогает отделять несовместимые схемы одного приложения.
Что делать пользователю: Сравните название с текущим доменом сайта, но главным идентификатором считайте контракт и сеть. Не игнорируйте отличие версии, если протокол объявлял миграцию. После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «domain name и version» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». Сравните название с текущим доменом сайта, но главным идентификатором считайте контракт и сеть. Не игнорируйте отличие версии, если протокол объявлял миграцию.
Verifying contract
VerifyingContract — адрес, который предполагается использовать для проверки typed signature. Именно ему или связанной логике подпись может дать полномочие. Если адрес нулевой, неизвестный или не совпадает с официальным, смысл запроса нельзя считать установленным.
Проверьте контракт в эксплорере, его код, прокси, метки и историю. Не доверяйте адресу, присланному в чате поддержки или рекламе. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «verifying contract» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. Проверьте контракт в эксплорере, его код, прокси, метки и историю. Не доверяйте адресу, присланному в чате поддержки или рекламе. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
Primary type
PrimaryType показывает основную структуру: Permit, PermitSingle, Order, Listing, Vote, Login или другая модель. Название задаёт подсказку, но разработчик может выбрать произвольный термин. Экономический смысл раскрывается только вместе с полями message.
Контроль риска. Если primaryType связан с transfer, permit, order, listing или delegation, относитесь к подписи как к распоряжению активами или полномочиями. Для login ожидайте nonce, домен и ограниченный срок. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «primary type» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Если primaryType связан с transfer, permit, order, listing или delegation, относитесь к подписи как к распоряжению активами или полномочиями. Для login ожидайте nonce, домен и ограниченный срок. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
Spender и operator
Spender получает право использовать ERC-20 в пределах allowance. Operator в NFT-контрактах может получить управление всеми токенами владельца через setApprovalForAll. Эти адреса часто важнее адреса сайта, потому что именно контракт-исполнитель сможет перемещать активы.
Сверьте spender/operator, лимит и область активов. Не подтверждайте неизвестный адрес даже при правильном логотипе токена. Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «spender и operator» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Сверьте spender/operator, лимит и область активов. Не подтверждайте неизвестный адрес даже при правильном логотипе токена. Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
Amount, token и tokenId
Подпись должна однозначно указывать актив. У ERC-20 важны contract address, decimals и amount; у NFT — collection contract, tokenId или признак всех токенов. Интерфейс может округлять сумму или показывать символ, который легко скопировать.
Практическая проверка. Сравнивайте raw amount с decimals и полным адресом контракта. Для batch-запроса раскройте все элементы списка, а не только первый показанный токен. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «amount, token и tokenid» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. Сравнивайте raw amount с decimals и полным адресом контракта. Для batch-запроса раскройте все элементы списка, а не только первый показанный токен.
Deadline и expiration
Срок ограничивает окно использования подписи, но может быть задан далеко в будущем или максимальным числом, фактически делая разрешение бессрочным. Разные поля — deadline подписи и expiration allowance — способны существовать одновременно.
Переведите timestamp в понятную дату и проверьте оба срока. Для разовой операции выбирайте короткое окно, достаточное для исполнения, а не бесконечное разрешение. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «deadline и expiration» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Переведите timestamp в понятную дату и проверьте оба срока. Для разовой операции выбирайте короткое окно, достаточное для исполнения, а не бесконечное разрешение. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Nonce и replay
Nonce помогает не использовать одно разрешение повторно, но схема защиты зависит от контракта. Стандарт EIP-712 сам по себе не решает replay для приложения: корректную одноразовость обеспечивает логика, проверяющая nonce, chain ID, domain и состояние заказа.
Что делать пользователю: Убедитесь, что nonce присутствует и меняется после использования или отмены. Не переносите подпись между сетями и версиями протокола без подтверждения совместимости. После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «nonce и replay» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». Убедитесь, что nonce присутствует и меняется после использования или отмены. Не переносите подпись между сетями и версиями протокола без подтверждения совместимости.
Witness и дополнительные условия
Современные схемы могут включать witness — хэш или тип дополнительных условий сделки. Это позволяет связать разрешение с маршрутом, получателем или параметрами ордера, но делает окно сложнее. Неполное отображение witness создаёт риск подписи скрытых условий.
Используйте кошелёк, который декодирует структуру, и симулятор, способный показать ожидаемый результат. Если дополнительные данные не читаются, уменьшите экспозицию или откажитесь от операции. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «witness и дополнительные условия» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. Используйте кошелёк, который декодирует структуру, и симулятор, способный показать ожидаемый результат. Если дополнительные данные не читаются, уменьшите экспозицию или откажитесь от операции. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
Поля EIP-712
| Поле | Назначение | Красный флаг | Нормальный контроль |
|---|---|---|---|
| name | Название домена | Копия бренда | Сравнить с контрактом |
| version | Версия схемы | Неожиданная миграция | Проверить документацию |
| chainId | Привязка к сети | Другая сеть | Сверить кошелёк |
| verifyingContract | Проверяющий контракт | Неизвестный адрес | Проверить код |
| primaryType | Тип распоряжения | Transfer вместо login | Прочитать message |
| nonce | Одноразовость | Нет понятной защиты | Проверить логику |
| deadline | Срок | Максимальная дата | Сократить |
Approve, Permit, Permit2 и NFT-разрешения
ERC-20 approve
Approve — ончейн-транзакция к токеновому контракту, устанавливающая allowance для spender. Деньги не обязательно уходят сразу, но spender получает возможность вызвать transferFrom позднее. Разрешение часто сохраняется после завершения swap и действует, пока не уменьшено, не израсходовано или не отозвано.
Контроль риска. Выдавайте точный лимит, когда это возможно. После разовой работы проверьте остаточный allowance и отзовите ненужное разрешение через проверенный инструмент или прямой вызов контракта. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «erc-20 approve» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Выдавайте точный лимит, когда это возможно. После разовой работы проверьте остаточный allowance и отзовите ненужное разрешение через проверенный инструмент или прямой вызов контракта. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
Unlimited approval
Неограниченный allowance обычно кодируется максимальным числом и уменьшает число будущих approve-транзакций. Удобство оплачивается размером потенциального ущерба: компрометация spender или ошибочное взаимодействие может затронуть весь текущий и будущий баланс токена на адресе.
Для нового или редко используемого протокола предпочитайте ограниченный cap. На операционном адресе не держите резерв, который не нужен для текущего сценария. Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «unlimited approval» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Для нового или редко используемого протокола предпочитайте ограниченный cap. На операционном адресе не держите резерв, который не нужен для текущего сценария. Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
EIP-2612 Permit
Permit позволяет установить ERC-20 allowance с помощью EIP-712 подписи, содержащей owner, spender, value, nonce и deadline. Подпись может передать relayer, поэтому пользователь экономит отдельную approve-транзакцию, но атакующий также способен предъявить украденный permit до истечения срока.
Практическая проверка. Проверяйте spender, value, nonce, deadline и token contract. Подозрительный permit требует быстрой оценки: одного disconnect недостаточно. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «eip-2612 permit» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. Проверяйте spender, value, nonce, deadline и token contract. Подозрительный permit требует быстрой оценки: одного disconnect недостаточно.
Permit2 AllowanceTransfer
Permit2 стандартизирует подписи для токенов, даже если сам токен не поддерживает EIP-2612. В модели AllowanceTransfer пользователь сначала одобряет контракт Permit2 на уровне токена, а затем подписывает разрешения конкретным spender с amount и expiration.
Разделяйте базовый approval токен → Permit2 и последующие Permit2-разрешения. Отзыв одного уровня не всегда отменяет другой, поэтому проверять нужно оба. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «permit2 allowancetransfer» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Разделяйте базовый approval токен → Permit2 и последующие Permit2-разрешения. Отзыв одного уровня не всегда отменяет другой, поэтому проверять нужно оба. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Permit2 SignatureTransfer
SignatureTransfer позволяет разово авторизовать перевод подписанным сообщением без постоянного allowance конкретному приложению. Безопасность зависит от permitted token, amount, spender, nonce, deadline и дополнительных условий. Одноразовый характер снижает висящие разрешения, но не спасает от вредной подписи.
Что делать пользователю: Убедитесь, что подпись привязана к ожидаемой операции и будет использована сразу. Не подписывайте batch transfer, если не видите каждый токен и получателя. После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «permit2 signaturetransfer» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». Убедитесь, что подпись привязана к ожидаемой операции и будет использована сразу. Не подписывайте batch transfer, если не видите каждый токен и получателя.
setApprovalForAll для NFT
Функция setApprovalForAll выдаёт operator право управлять всеми NFT конкретной коллекции, принадлежащими адресу. Это шире продажи одного tokenId. Фишинговая страница может назвать запрос подтверждением mint или проверки владения, хотя фактически он открывает оператору доступ к коллекции.
Проверяйте operator и boolean approved. Для продажи одного NFT предпочитайте механизм с понятным ордером и ограниченной областью, если marketplace его поддерживает. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «setapprovalforall для nft» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. Проверяйте operator и boolean approved. Для продажи одного NFT предпочитайте механизм с понятным ордером и ограниченной областью, если marketplace его поддерживает. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
Подпись listing или offer
Маркетплейс может создавать off-chain ордер на продажу NFT или предложение покупки. В подписи присутствуют collection, tokenId, цена, валюта, получатель комиссии, зона, nonce и срок. Актив не перемещается сразу, но ордер может быть исполнен контрагентом при выполнении условий.
Контроль риска. Проверьте цену с decimals, сторону сделки, fee recipient и срок. После ошибки отмените ордер поддерживаемым способом или инвалидацией nonce, а не только удалением объявления в браузере. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «подпись listing или offer» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Проверьте цену с decimals, сторону сделки, fee recipient и срок. После ошибки отмените ордер поддерживаемым способом или инвалидацией nonce, а не только удалением объявления в браузере. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
Revoke и отмена подписи
Revoke allowance создаёт новое состояние контракта и предотвращает дальнейший transferFrom в рамках этого разрешения. Но он не отменяет отдельный ордер, session key или другой spender. Подписанный Permit может стать бесполезным после изменения nonce или allowance, но способ зависит от реализации.
Составьте карту выданных полномочий. Проверяйте токеновые allowances, Permit2, NFT operators, активные ордера, делегации и модули smart account отдельно. Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «revoke и отмена подписи» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Составьте карту выданных полномочий. Проверяйте токеновые allowances, Permit2, NFT operators, активные ордера, делегации и модули smart account отдельно. Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
Разрешения на активы
| Механизм | Что получает контрагент | Срок | Главный риск |
|---|---|---|---|
| ERC-20 approve | Allowance у токена | Пока не изменён | Unlimited spending |
| EIP-2612 Permit | Подписанный allowance | До deadline/nonce | Отложенное предъявление |
| Permit2 AllowanceTransfer | Лимит spender через Permit2 | Amount + expiration | Два уровня разрешений |
| Permit2 SignatureTransfer | Разовый подписанный перевод | До использования/срока | Вредная batch-подпись |
| setApprovalForAll | Управление NFT коллекции | Пока не отозвано | Потеря всех NFT |
| Session key | Ограниченные действия smart account | По политике | Слишком широкие права |
Сложные операции DeFi, мосты и агрегаторы
Swap через роутер
Один swap может включать approve, подпись Permit2, вызов universal router, несколько пулов, wrap/unwrap и перевод результата. Сайт показывает ожидаемый output, но подпись подтверждает конкретный маршрут, минимальный receive amount, deadline и получателя.
Практическая проверка. Сверьте токен входа, максимальный расход, токен выхода, minimum received, recipient и срок. Слишком широкая slippage увеличивает пространство для неблагоприятного исполнения. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «swap через роутер» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. Сверьте токен входа, максимальный расход, токен выхода, minimum received, recipient и срок. Слишком широкая slippage увеличивает пространство для неблагоприятного исполнения.
Multicall
Multicall объединяет несколько функций в одну транзакцию. Это экономит газ и упрощает интерфейс, но скрывает последовательность действий за одной кнопкой. Внутри могут одновременно находиться approve, deposit, swap, transfer и sweep остатка.
Раскройте каждый вложенный вызов с помощью декодера или симуляции. Не подтверждайте multicall, если понятен только общий заголовок. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «multicall» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Раскройте каждый вложенный вызов с помощью декодера или симуляции. Не подтверждайте multicall, если понятен только общий заголовок. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Bridge
Мост обычно блокирует или сжигает актив, создаёт сообщение между сетями и выпускает либо разблокирует результат. Запрос может включать approve мосту, destination chain, recipient, token, relayer fee, deadline и дополнительный claim. Ошибка сети или токена приводит не только к комиссии, но и к получению другой версии актива.
Что делать пользователю: Сверьте исходную и целевую сеть, output contract, recipient и необходимость claim. Для нового маршрута пройдите полный цикл минимальной суммой и сохраните оба TxID. После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «bridge» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». Сверьте исходную и целевую сеть, output contract, recipient и необходимость claim. Для нового маршрута пройдите полный цикл минимальной суммой и сохраните оба TxID.
Lending и collateral
Deposit в lending-протокол может передать токен и создать receipt token; borrow — увеличить долг; approve delegation — разрешить другому адресу занимать от имени пользователя. Подпись, названная «активировать доход», способна открыть кредитное полномочие.
Смотрите не только входящий процент, но и collateral, debt asset, health factor, delegate и лимит. Не выдавайте credit delegation неизвестному адресу. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «lending и collateral» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. Смотрите не только входящий процент, но и collateral, debt asset, health factor, delegate и лимит. Не выдавайте credit delegation неизвестному адресу. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
Стейкинг и restaking
Операция может передать актив в контракт, выпустить ликвидный токен, назначить withdrawal credentials или делегировать оператору. Некоторые действия имеют очередь выхода и slashing risk. Подпись не должна оцениваться как простой перевод только из-за знакомого слова staking.
Контроль риска. Проверьте контракт, актив, коэффициент выдачи, право на вывод, операторов и срок. Разделяйте custody, smart-contract и рыночный риск производного токена. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «стейкинг и restaking» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Проверьте контракт, актив, коэффициент выдачи, право на вывод, операторов и срок. Разделяйте custody, smart-contract и рыночный риск производного токена. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
Account abstraction и paymaster
В smart account пользователь может подписывать UserOperation, а bundler отправляет её в сеть. Paymaster способен оплачивать газ при выполнении условий. Пакет содержит target, calldata, nonce, gas limits и данные paymaster, поэтому «газ бесплатно» не означает, что операция не меняет активы или права.
Проверьте вызываемый контракт, session key, paymaster terms и симуляцию UserOperation. Не активируйте неизвестный модуль ради одной бесплатной транзакции. Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «account abstraction и paymaster» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Проверьте вызываемый контракт, session key, paymaster terms и симуляцию UserOperation. Не активируйте неизвестный модуль ради одной бесплатной транзакции. Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
Batch и агрегированные подписи
Batch-запросы охватывают несколько токенов, получателей или действий. Кошелёк может свернуть список, а пользователь замечает только верхний элемент. Чем шире пакет, тем выше цена неполного декодирования.
Практическая проверка. Раскрывайте полный список и отклоняйте запрос, если хотя бы один элемент неизвестен. Для крупной операции создайте собственный контрольный лист ожидаемых изменений балансов. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «batch и агрегированные подписи» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. Раскрывайте полный список и отклоняйте запрос, если хотя бы один элемент неизвестен. Для крупной операции создайте собственный контрольный лист ожидаемых изменений балансов.
Сложные DeFi-запросы
| Сценарий | Что может быть внутри | Что проверить | Стоп-сигнал |
|---|---|---|---|
| Swap | Permit, route, minOut | Token, amount, recipient | Неизвестный spender |
| Bridge | Approve, destination, claim | Обе сети и output token | Непонятная версия актива |
| Lending | Deposit, borrow, delegation | Debt и delegate | Кредит неизвестному |
| NFT marketplace | Listing, fee, operator | Цена, tokenId, срок | Продажа всей коллекции |
| Restaking | Deposit, operator, withdrawal | Выход и slashing | Нет понятного redemption |
| Multicall | Несколько функций | Каждый вложенный вызов | Скрытый transfer |
Кошельки, симуляция и аппаратное подтверждение
Человекочитаемое декодирование
Современный кошелёк пытается сопоставить selector с ABI, показать токены, разрешения и результат. Однако база ABI может ошибаться, контракт может использовать прокси, а сложная логика — зависеть от текущего состояния. Декодирование является помощником, а не гарантией.
Сравнивайте данные минимум в двух независимых представлениях для значимой суммы: окно кошелька, эксплорер или симулятор. Расхождение требует остановки. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «человекочитаемое декодирование» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Сравнивайте данные минимум в двух независимых представлениях для значимой суммы: окно кошелька, эксплорер или симулятор. Расхождение требует остановки. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Симуляция транзакции
Симулятор исполняет запрос на копии состояния и прогнозирует изменения балансов, approvals и NFT. Он полезен для выявления скрытых transferFrom или operator, но не всегда учитывает будущие состояния, фронтраннинг, oracle updates и логику, зависящую от времени.
Что делать пользователю: Используйте симуляцию как дополнительный контроль. Сверяйте expected outcome и максимальный ущерб, а не только зелёную метку «успешно». После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «симуляция транзакции» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». Используйте симуляцию как дополнительный контроль. Сверяйте expected outcome и максимальный ущерб, а не только зелёную метку «успешно».
Security alerts
Кошельки и протоколы репутации могут предупреждать о фишинговом домене, вредном контракте или подозрительной подписи. Такие системы снижают риск известных атак, но не являются безошибочными: новый домен или свежий контракт может ещё не иметь негативной истории.
Не обходите предупреждение автоматически. Одновременно не считайте отсутствие предупреждения доказательством безопасности; продолжайте проверку полей и источника адреса. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «security alerts» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. Не обходите предупреждение автоматически. Одновременно не считайте отсутствие предупреждения доказательством безопасности; продолжайте проверку полей и источника адреса. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
Blind signing
Blind signing означает подтверждение данных, которые устройство не может полностью представить человеку. Оно бывает необходимо для новых контрактов, но разрушает главное преимущество аппаратного экрана: независимую проверку смысла. Вредоносное приложение может подменить calldata после того, как пользователь изучил сайт.
Контроль риска. Включайте blind signing только под конкретную проверенную операцию и отключайте после неё. Для резерва используйте отдельный адрес, который не взаимодействует с неизвестными dapp. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «blind signing» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Включайте blind signing только под конкретную проверенную операцию и отключайте после неё. Для резерва используйте отдельный адрес, который не взаимодействует с неизвестными dapp. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
Адресная подмена и clipboard malware
Даже понятная подпись перевода опасна, если получатель подменён вредоносным ПО или выбран из истории по похожим символам. Address poisoning создаёт небольшие входящие операции, чтобы ложный адрес появился рядом с настоящим.
Не копируйте адрес из истории транзакций. Сверяйте независимый источник, начало, середину и конец адреса; при крупной сумме используйте whitelist и тест. Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «адресная подмена и clipboard malware» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Не копируйте адрес из истории транзакций. Сверяйте независимый источник, начало, середину и конец адреса; при крупной сумме используйте whitelist и тест. Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
Отдельный кошелёк для DeFi
Сегментация ограничивает ущерб: резервный адрес не подключается к сайтам, операционный держит только нужную сумму, а экспериментальный используется для новых протоколов. Это не заменяет проверку подписи, но уменьшает стоимость ошибки и упрощает аудит разрешений.
Практическая проверка. Определите лимит на каждом адресе и регулярно выводите излишек. Не импортируйте seed резервного кошелька в браузерный профиль, используемый для повседневного серфинга. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «отдельный кошелёк для defi» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. Определите лимит на каждом адресе и регулярно выводите излишек. Не импортируйте seed резервного кошелька в браузерный профиль, используемый для повседневного серфинга.
Корпоративное подтверждение
Для бизнеса одна подпись сотрудника не должна бесконтрольно перемещать резерв. Multisig, роли, лимиты и политика контрагентов позволяют разделить подготовку, проверку и исполнение. Но сложная схема бесполезна, если все владельцы механически подтверждают один и тот же вредный запрос.
Введите независимую проверку контракта, суммы, назначения и документов. Подписанты должны видеть единый паспорт операции, а не только сообщение инициатора в чате. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «корпоративное подтверждение» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Введите независимую проверку контракта, суммы, назначения и документов. Подписанты должны видеть единый паспорт операции, а не только сообщение инициатора в чате. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Инструменты контроля
| Инструмент | Что показывает | Ограничение | Как использовать |
|---|---|---|---|
| Окно кошелька | Декодированные поля | Может скрыть детали | Первичная проверка |
| Аппаратный экран | Подписываемые данные | Малый экран/blind sign | Независимое подтверждение |
| Эксплорер | Контракт и события | Не объясняет намерение | Проверка адреса |
| Симулятор | Прогноз балансов | Не видит все будущие состояния | Дополнительный контроль |
| Security alert | Репутацию домена/контракта | Новые угрозы неизвестны | Не игнорировать |
| Внутренний whitelist | Проверенные адреса | Требует обновления | Для регулярных операций |
Что делать после подозрительной подписи
Сначала не подписывать повторно
Мошеннический сайт часто предлагает «отмену», «синхронизацию» или «возврат» через вторую подпись. Она может расширить полномочия или переместить оставшиеся активы. Повторное взаимодействие до диагностики увеличивает неопределённость.
Что делать пользователю: Закройте сайт, сохраните URL и скрин, не вводите seed и не общайтесь с поддержкой из входящих сообщений. Перейдите к проверке через независимое устройство или официальный эксплорер. После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «сначала не подписывать повторно» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». Закройте сайт, сохраните URL и скрин, не вводите seed и не общайтесь с поддержкой из входящих сообщений. Перейдите к проверке через независимое устройство или официальный эксплорер.
Определить тип подписанного запроса
Нужно установить, была ли это broadcast-транзакция, approve, Permit, Permit2, NFT operator, order, session key или только login. Источниками служат история кошелька, активность адреса, события Approval, список разрешений и сохранённое окно подписи.
Запишите время, адрес, сеть, домен, контракт, TxID или отсутствие TxID. Без классификации легко отозвать не то разрешение и оставить главный риск. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «определить тип подписанного запроса» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. Запишите время, адрес, сеть, домен, контракт, TxID или отсутствие TxID. Без классификации легко отозвать не то разрешение и оставить главный риск. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
Проверить ончейн-изменения
По адресу и TxID смотрят статус, logs, Transfer, Approval, ApprovalForAll и внутренние вызовы. Успешная транзакция может не изменить баланс сразу, но создать allowance. Reverted-транзакция обычно не меняет состояние, хотя комиссия может быть потрачена.
Контроль риска. Используйте проверку транзакции по TxID и не полагайтесь на текст уведомления сайта. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «проверить ончейн-изменения» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Используйте проверку транзакции по TxID и не полагайтесь на текст уведомления сайта. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
Отозвать разрешения
Для ERC-20 уменьшают allowance до нуля или безопасного значения; для NFT снимают operator; для Permit2 проверяют оба уровня; для smart account отключают module или session key. Revoke требует газа и правильной сети.
Используйте официальный интерфейс токена, проверенный revoke-инструмент или прямой вызов. Не вводите seed на странице «проверки разрешений». Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «отозвать разрешения» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Используйте официальный интерфейс токена, проверенный revoke-инструмент или прямой вызов. Не вводите seed на странице «проверки разрешений». Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
Перенести активы на новый адрес
Если подписан неизвестный permit, скомпрометирован приватный ключ или нельзя быстро определить полномочия, безопаснее переместить активы на новый кошелёк с новой seed-фразой. Старый адрес остаётся под риском, а будущие поступления могут быть списаны.
Практическая проверка. Сначала подготовьте газ и порядок вывода наиболее ценных активов. При активном drainer обычная транзакция может быть перехвачена; тогда нужна специализированная помощь, но seed всё равно нельзя передавать неизвестным лицам. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «перенести активы на новый адрес» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. Сначала подготовьте газ и порядок вывода наиболее ценных активов. При активном drainer обычная транзакция может быть перехвачена; тогда нужна специализированная помощь, но seed всё равно нельзя передавать неизвестным лицам.
Зафиксировать доказательства
Для расследования и обращения в площадку важны URL, домен, время, адреса, сеть, подпись или её параметры, TxID, события, скрин окна и переписка. Один скрин баланса не показывает, какое полномочие было выдано.
Сохраните данные до очистки браузера. Используйте чек-лист доказательств криптооперации. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «зафиксировать доказательства» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Сохраните данные до очистки браузера. Используйте чек-лист доказательств криптооперации. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Не платить recovery-мошенникам
После кражи появляются лица, обещающие вернуть активы через «синхронизацию», удалённый доступ или оплату комиссии. Блокчейн-транзакции не отменяются секретной программой, а передача seed создаёт новую потерю.
Что делать пользователю: Обращайтесь только в официальную поддержку площадки и к специалистам с проверяемой репутацией. Никто не должен просить приватный ключ для анализа публичной транзакции. После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «не платить recovery-мошенникам» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». Обращайтесь только в официальную поддержку площадки и к специалистам с проверяемой репутацией. Никто не должен просить приватный ключ для анализа публичной транзакции.
Проверить остальные адреса и устройства
Одна вредная подпись обычно относится к конкретному адресу, но фишинг мог сопровождаться установкой расширения, вводом seed или утечкой сессии. Тогда риск шире одного allowance.
Проверьте расширения, приложение, резервные копии, активные сессии и другие аккаунты. Если seed вводилась на сайте, считайте все производные адреса скомпрометированными. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «проверить остальные адреса и устройства» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. Проверьте расширения, приложение, резервные копии, активные сессии и другие аккаунты. Если seed вводилась на сайте, считайте все производные адреса скомпрометированными. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
Реакция на инцидент
| Ситуация | Первое действие | Технический контроль | Чего не делать |
|---|---|---|---|
| Подозрительная транзакция | Проверить TxID | Logs и balances | Подписывать recovery |
| Approve | Проверить allowance | Revoke spender | Ограничиться disconnect |
| Permit/Permit2 | Проверить nonce и разрешения | Invalidate/revoke | Ждать списания |
| NFT operator | Снять ApprovalForAll | Проверить коллекции | Продавать через случайный сайт |
| Seed введена на сайте | Новый кошелёк | Перевести все активы | Лечить старую seed |
| Неизвестный тип | Изолировать адрес | Собрать доказательства | Платить recovery |
Профессиональный протокол безопасной подписи
Паспорт операции
Перед значимой подписью зафиксируйте цель, актив, сеть, адрес from, контракт to, сумму, максимальный расход, ожидаемый результат и способ проверки. Такой паспорт превращает визуальное окно в сверяемый набор условий и упрощает независимое подтверждение.
Контроль риска. Для бизнеса добавьте инициатора, основание платежа, контрагента, курс, комиссию и ответственного проверяющего. После выполнения приложите TxID и конечный баланс. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «паспорт операции» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Для бизнеса добавьте инициатора, основание платежа, контрагента, курс, комиссию и ответственного проверяющего. После выполнения приложите TxID и конечный баланс. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
Правило независимого источника
Адрес контракта нельзя брать из того же сообщения, которое привело на сайт. Независимым источником является официальный домен, ранее сохранённый bookmark, репозиторий проекта или проверенная документация. Реклама и личный чат не являются подтверждением.
Сверяйте минимум два источника при крупной сумме. Для часто используемых контрактов заведите внутренний whitelist с сетью и назначением. Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «правило независимого источника» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Сверяйте минимум два источника при крупной сумме. Для часто используемых контрактов заведите внутренний whitelist с сетью и назначением. Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
Лимит потенциального ущерба
Оценивать нужно не только сумму текущей операции, но и все активы, которые spender, operator или module сможет затронуть. Unlimited approval на пустом адресе становится опасным после будущего пополнения.
Практическая проверка. Держите на операционном адресе ограниченный баланс, устанавливайте spending cap и expiration, а резерв храните отдельно. Результат проверки должен быть воспроизводим: другой человек, имеющий те же публичные данные, должен прийти к тому же выводу о сети, контракте и пределах полномочия.
Экспертная интерпретация. Для темы «лимит потенциального ущерба» полезно разделить три слоя: данные, которые видит человек; байты, которые фактически подписывает ключ; и действие, которое сможет выполнить сеть, контракт или получатель подписи. Ошибка на любом слое меняет риск всей операции. Держите на операционном адресе ограниченный баланс, устанавливайте spending cap и expiration, а резерв храните отдельно.
Двухэтапная проверка
Первый этап подтверждает бизнес-смысл: что пользователь хочет получить. Второй проверяет технические поля: сеть, контракт, function, token, amount, recipient, spender, deadline и nonce. Ошибка часто возникает, когда оба этапа заменяются знакомым логотипом.
Для крупной операции сделайте паузу между подготовкой и подписью. Повторно откройте реквизиты из независимого источника и проверьте их на аппаратном экране. Если интерфейс скрывает существенное поле или показывает только маркетинговое описание, запрос нельзя считать понятным. Безопасное решение принимают по фактическим данным, а не по обещанию кнопки.
Почему это важно. Смысл запроса «двухэтапная проверка» нельзя восстанавливать по одному логотипу или названию функции. Надёжная оценка связывает адреса, сеть, параметры и ожидаемый результат. Для крупной операции сделайте паузу между подготовкой и подписью. Повторно откройте реквизиты из независимого источника и проверьте их на аппаратном экране. Такая процедура особенно важна, когда подпись можно использовать позднее и немедленного списания не происходит.
Тест не всегда проверяет подпись
Маленькая тестовая транзакция полезна для адреса и сети, но unlimited approval или operator не становится безопаснее из-за малого первого swap. Разрешение может охватывать весь будущий баланс.
Что делать пользователю: Тестируйте маршрут и отдельно ограничивайте полномочия. После теста проверьте, какие approvals остались активными. После подтверждения сохраните техническое доказательство результата — TxID, параметры подписи, изменение allowance или статус ордера, в зависимости от типа действия.
Модель угроз. В сценарии «тест не всегда проверяет подпись» атакующий стремится получить полномочие, которое выглядит уже обычной частью интерфейса. Поэтому проверка должна отвечать не только на вопрос «что произойдёт сейчас», но и «что контрагент сможет сделать потом». Тестируйте маршрут и отдельно ограничивайте полномочия. После теста проверьте, какие approvals остались активными.
Регулярный аудит
Разрешения, подключения, ордера и модули накапливаются. Ежемесячная или событийная проверка помогает удалить старые spender, закрыть неиспользуемые сессии и выявить неожиданные операторы. Аудит особенно важен после airdrop, mint, bridge и работы с новым DEX.
Ведите журнал адресов и действий. Проверяйте активность после каждого подозрительного сайта, а не только после исчезновения средств. При расхождении между сайтом, кошельком и эксплорером остановите операцию. Нельзя выбирать наиболее удобное объяснение и игнорировать остальные источники.
Операционный вывод. Разбор «регулярный аудит» должен завершаться конкретным решением: подтвердить, ограничить, отложить или отклонить. Неопределённый статус недопустим для адреса со значительным балансом. Ведите журнал адресов и действий. Проверяйте активность после каждого подозрительного сайта, а не только после исчезновения средств. Итог фиксируют до нажатия кнопки, а не восстанавливают после инцидента.
Когда операцию нужно остановить
Стоп-условиями являются неизвестный домен, несовпадающая сеть, непроверенный verifyingContract, скрытые поля, unlimited amount без необходимости, слишком дальний deadline, неожиданный operator, blind signing и давление «подписать сейчас». Потерянная возможность дешевле необратимого распоряжения.
Контроль риска. Отклоните запрос и начните проверку заново с официального сайта. Не позволяйте собеседнику диктовать, какие предупреждения кошелька следует игнорировать. Для значимого баланса дополнительно ограничьте потенциальный ущерб отдельным адресом, точной суммой или коротким сроком действия.
Проверяемый критерий. Для «когда операцию нужно остановить» нормальным считается запрос, параметры которого совпадают с заранее сформулированной задачей и независимым источником реквизитов. Отклоните запрос и начните проверку заново с официального сайта. Не позволяйте собеседнику диктовать, какие предупреждения кошелька следует игнорировать. Любая лишняя функция, новый получатель или расширенный лимит требует повторного анализа с начала.
Итоговая модель решения
Безопасная подпись состоит из четырёх ответов: кто подписывает, что именно закодировано, кто сможет использовать результат и как ограничены сумма, срок и сеть. Если хотя бы один ответ неизвестен, риск нельзя считать рассчитанным.
Перед новой операцией используйте базовую защиту криптокошелька, а неизвестные токены и airdrop проверяйте без взаимодействия с их ссылками. Проверка завершена только тогда, когда понятны ожидаемое изменение балансов, будущие права контракта и способ отмены либо ограничения полномочия.
Граница доверия. При оценке «итоговая модель решения» кошелёк, сайт, RPC, симулятор и эксплорер выполняют разные роли. Ни один из них отдельно не гарантирует безопасность. Перед новой операцией используйте базовую защиту криптокошелька, а неизвестные токены и airdrop проверяйте без взаимодействия с их ссылками. Совпадение независимых данных снижает риск, а противоречие является основанием остановить подпись.
Финальный контрольный лист
| Вопрос | Проверяемый ответ | Если ответа нет |
|---|---|---|
| Кто подписывает? | Точный from и устройство | Отклонить |
| Где исполняется? | Chain ID и сеть | Отклонить |
| Кто получит право? | To/spender/operator | Проверить контракт |
| Какой актив? | Token contract и amount | Не продолжать |
| Каков срок? | Deadline/expiration | Сократить |
| Каков максимум ущерба? | Value + доступный allowance | Ограничить баланс |
| Как проверить результат? | TxID, nonce, allowance | Подготовить способ |
| Как отменить? | Revoke/cancel/invalidate | Не подписывать |
Решение за 30 секунд
| Сигнал | Оценка | Решение |
|---|---|---|
| Понятны сеть, контракт, актив и лимит | Контролируемый запрос | Сверить и подтвердить |
| Непонятно одно существенное поле | Неопределённый риск | Отклонить и проверить |
| Unlimited approval без необходимости | Избыточное полномочие | Уменьшить лимит |
| Blind signing на новом сайте | Высокий риск | Не подписывать |
| Permit с долгим deadline | Отложенный риск | Сократить срок или отказаться |
| Неизвестный operator NFT | Риск всей коллекции | Отклонить |
| Сайт требует seed-фразу | Компрометация кошелька | Закрыть сайт |
Вывод: подписывать нужно данные, а не обещание сайта
Вопрос «что подписывает криптокошелёк» решается не по цвету кнопки. Сначала определяется тип запроса: подключение, транзакция, сообщение, typed data, approve, Permit, Permit2, NFT operator, order или UserOperation. Затем проверяются сеть, подписант, контракт, актив, сумма, получатель полномочия, срок, nonce и ожидаемое изменение состояния. Только после этого можно оценивать удобство и комиссию.
Главная практическая разница проходит между действием, которое уже отправляется в блокчейн, и подписью, которую другой участник сможет предъявить позднее. В обоих случаях ключ создаёт действительное распоряжение. Поэтому отсутствие TxID или списания сразу после клика не освобождает от проверки разрешений. После незнакомого airdrop используйте безопасную проверку неизвестного токена, не открывая ссылки из его описания.
Для постоянной работы полезны три уровня защиты: раздельные адреса, ограниченные разрешения и воспроизводимая проверка подписываемых полей. Аппаратный кошелёк, симулятор и security alert усиливают систему, но не заменяют решение владельца. Если операция не может быть объяснена простыми словами и подтверждена техническими данными, её следует отклонить.