ГЛАВНАЯ / ИНСТРУКЦИИ / ПОДПИСЬ СООБЩЕНИЯ ИЛИ ТРАНЗАКЦИИ: В ЧЁМ РАЗНИЦА
Подпись сообщения или транзакции: в чём разница
Подпись сообщения обычно создаёт доказательство владения адресом без немедленной записи в блокчейн, а подпись транзакции авторизует onchain-действие. Однако сообщение может содержать Permit, ордер или другое разрешение с финансовыми последствиями, поэтому отсутствие gas не равно отсутствию риска.
Запись в блокчейн и последствия подписи – разные вопросы
Транзакция содержит параметры сети и после отправки может перевести нативный актив, вызвать контракт или изменить состояние. Для неё обычно рассчитывается gas, назначается nonce аккаунта и после включения в блок появляется TXID.
Сообщение подписывается без отправки обычной транзакции. Оно может использоваться для входа и подтверждения владения адресом, но также для ордера, листинга NFT, Permit или Permit2. Такая подпись способна быть предъявлена позже, поэтому её нужно оценивать по содержимому, а не по нулевой комиссии.
| Запрос | Где действует | Что проверить |
|---|---|---|
| personal_sign | Сервер или протокол проверяет текст | Домен, назначение, nonce, срок |
| EIP-712 typed data | Приложение или контракт проверяет поля | Domain, primaryType, spender, value |
| Transaction | Записывается в блокчейн | Chain, to, value, data, gas |
| Connect | Открывает сайту публичный адрес | Домен, аккаунт, сеть |
Безопасный вход должен объяснять домен и одноразовый запрос
Human-readable message часто используют для входа. В корректном запросе понятны сайт, адрес аккаунта, назначение, одноразовый nonce и при наличии срок действия. Не подписывайте текст с чужим доменом, обещанием передачи активов, пустыми полями или непонятным набором символов.
Стандарт Sign-In with Ethereum предусматривает проверку полей сообщения, включая nonce и expiration. Но сам заголовок Sign-In не гарантирует соблюдение стандарта. Сверяйте фактически показанный текст и аккаунт.
Структурированные поля могут быть полноценным разрешением
EIP-712 позволяет показать типизированные данные: домен приложения, chainId, verifyingContract и поля конкретного действия. Такой формат удобнее для проверки, но семантику определяет приложение. Названия Permit, Order, SetApprovalForAll или spender указывают на возможные права над активами.
Проверьте primaryType, verifyingContract, token, spender, amount, recipient, nonce, deadline и все пакетные элементы. Кошелёк может показывать часть структуры на нескольких экранах – пролистайте её полностью и отклоните запрос, если важное поле скрыто или не объяснено.
Поля to, value и data читаются вместе
В простом переводе to является получателем, value – суммой нативного актива, а data обычно пусто. Во взаимодействии со смарт-контрактом to указывает на контракт, value может быть нулём, а реальное действие кодируется в data. Нулевая value поэтому не означает, что токены или NFT не затронуты.
Сеть определяет, где операция будет исполнена, gas – максимальные параметры оплаты выполнения, а nonce задаёт порядок транзакций аккаунта. До подписи проверьте расшифрованную функцию, токен, сумму, получателя и ожидаемые изменения баланса.
- chainId верный;
- to известен;
- value ожидаема;
- data расшифрована;
- spender и recipient проверены;
- gas показан;
- симуляция соответствует намерению.
Не подписывайте запрос только ради доступа к сайту
Поддельный dApp может сначала попросить Connect, затем показать подпись под видом проверки кошелька. Connect сам по себе обычно лишь раскрывает публичный адрес, но следующий запрос является отдельным действием. Читайте его с начала, даже если сайт уже подключён.
Отклоните сообщение с неизвестным доменом, разрешением тратить активы, чрезмерной суммой, далёким сроком, нечитаемыми данными или действием, которого вы не начинали. Отклоните транзакцию с неизвестным контрактом, получателем или неожиданным пакетным вызовом.
- airdrop требует срочной подписи;
- поддержка прислала ссылку;
- домен отличается;
- кошелёк предупреждает о риске;
- сумма или spender неизвестны;
- данные нельзя прочитать;
- запрос появился сам.
Проверка зависит от типа запроса
После транзакции сохраните TXID и проверьте статус, события, изменения баланса и новые approvals в обозревателе правильной сети. После входа убедитесь, что открыта ожидаемая сессия на правильном домене, и завершите её после работы.
После подозрительной offchain-подписи проверьте approvals и историю, но помните: сама подпись может не отображаться в блокчейне до предъявления. Закройте сайт, не выдавайте новые подписи и отзовите подтверждённые опасные разрешения через доверенный интерфейс.
Частые вопросы
Подпись сообщения всегда безопаснее транзакции?
Нет. Она может дать право на Permit, ордер или перемещение NFT и быть предъявлена позже.
Почему у сообщения нет gas?
Оно создаётся локально и может проверяться offchain. Если подпись используется контрактом, gas за последующий вызов способен оплатить другой участник.
Connect является подписью?
Обычно это отдельное разрешение сайту увидеть публичный адрес. После Connect кошелёк может запросить message, approval или transaction – каждый запрос проверяется отдельно.
Нулевая value означает отсутствие риска?
Нет. Вызов контракта может перемещать токены через data или менять разрешения при нулевой сумме нативного актива.
Где найти TXID подписи сообщения?
У чистой offchain-подписи TXID нет. Он появится только если кто-то использует её в блокчейн-транзакции.
Чек-лист: подпись сообщения или транзакции: в чём разница
- тип окна определён;
- действие инициировано вами;
- домен совпадает;
- аккаунт совпадает;
- сеть совпадает;
- текст прочитан полностью;
- typed data раскрыта;
- verifyingContract проверен;
- spender и amount понятны;
- to, value и data проверены;
- предупреждений кошелька нет;
- результат проверен по типу запроса.
Материал подготовлен редакцией сайта и проверен 11 сентября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.