ГЛАВНАЯ / ИНСТРУКЦИИ / EIP-712 TYPED DATA: КАКИЕ ПОЛЯ ПРОВЕРЯТЬ В СТРУКТУРИРОВАННОЙ ПОДПИСИ
EIP-712 typed data: какие поля проверять в структурированной подписи
EIP-712 превращает набор полей в типизированное сообщение для подписи, но не проверяет за пользователя смысл операции. До подтверждения сопоставьте домен, сеть, контракт и каждое существенное значение с действием, которое вы начали.
Домен задаёт контекст, в котором подписывается структура
Стандарт EIP-712 вычисляет подпись из domain separator и хэша сообщения. Среди возможных полей домена – name, version, chainId, verifyingContract и salt. Разработчик включает те поля, которые нужны приложению; отсутствие отдельного поля не обязательно означает ошибку, но убирает соответствующую проверку контекста.
Сверьте читаемое имя приложения и версию с сайтом, который открыли сами. chainId должен соответствовать выбранной сети, а verifyingContract – ожидаемому адресу контракта. Не подтверждайте подпись, если домен выглядит чужим или сеть внезапно отличается.
Смысл задают структура, поля и конкретные данные
Проверьте primaryType и типизированные поля: какие адреса участвуют, какой актив и сумма указаны, какой nonce и срок действия применяются. Название типа само по себе не является доказательством назначения. Например, Permit может выражать разрешение контракту тратить токены, хотя прямого перевода в запросе нет.
Сравните сумму и адрес с экраном приложения до открытия окна подписи. Для списков и вложенных структур проверьте все элементы, а не только первые строки предпросмотра. Если кошелёк свернул содержание или показывает только хэш, не считайте его проверенным.
EIP-712 не включает автоматическую защиту от повтора
Спецификация прямо не включает replay protection. Nonce, deadline и правила использования подписи должны задаваться самим протоколом или приложением. Проверяйте, присутствуют ли эти поля и как контракт их применяет. Нельзя считать каждую подпись одноразовой или ограниченной одной сетью.
Подпись может быть передана релейеру и исполнена позже. Если изменились страница, сеть, получатель или параметры действия, отмените окно подписи и начните проверку заново. Не повторяйте одну подпись в другом контексте без ясного понимания её назначения.
Короткий порядок проверки
- проверить название и версию домена
- сверить chainId
- проверить verifyingContract
- домен относится к ожидаемому приложению
- сеть и контракт проверены
- числа и адреса сопоставлены
Когда не следует продолжать
- nonce и срок не приняты на веру
Частые вопросы
Какие поля домена нужно проверить?
Если они присутствуют: name, version, chainId, verifyingContract и salt. Сверьте их с ожидаемым приложением и сетью.
EIP-712 всегда показывает понятный текст?
Формат структурирован, но качество предпросмотра зависит от кошелька и приложения.
Есть ли в стандарте защита от повтора?
Нет. Проверяйте nonce, deadline и логику контракта конкретной подписи.
Что означает verifyingContract?
Это адрес контракта, который должен проверять подпись, если поле включено в домен.
Нужно ли проверять сумму Permit?
Да. Также проверьте spender, токен, срок и ограничения разрешения.
Чек-лист: eip-712 typed data: какие поля проверять в структурированной подписи
- домен и приложение совпадают;
- chainId относится к ожидаемой сети;
- verifyingContract сопоставлен при наличии;
- primaryType прочитан;
- адреса и суммы проверены;
- nonce и срок изучены;
- непонятные поля не подписаны.
Материал подготовлен редакцией сайта и проверен 30 октября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.