EIP-712 стандартизирует структурированное подписание. Его спецификация явно оставляет защиту повтора для приложения с использованием подписи.

Что источник устанавливает

EIP-712 определяет хеширование и подписание для типизированных структурированных данных, включая разделитель домена. В нем прямо говорится, что стандарт не включает защиту повторного воспроизведения. Приложения должны определить, что подписанное сообщение разрешает и когда оно может быть принято. Ethereum Предложения по улучшению — EIP-712 ⁇

Стандарт описывает доменные поля, которые могут идентифицировать цепочку и проверять контракт. Эти поля помогают различать контексты подписания при правильном использовании, но наличие только читаемых данных не устанавливает одноразовое использование или политику истечения срока действия. Ethereum Предложения по улучшению — EIP-712 ⁇

Что изменяет различие

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

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

Вопросы для следующего обзора

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