Как найти расхождение домена в подписи EIP-712
Два клиента могут показать одинаковый текст и подписать разные дайджесты. Для диагностики отдельно сравните разделитель домена и хеш структуры.
Вычислите дайджест по частям
В тесте подпишите сообщение с адресом проверяющего контракта A. Пересчитайте домен с адресом B, сохранив поля и тип сообщения. Если в домен входит verifyingContract, изменится разделитель домена, а хеш структуры останется тем же.
keccak256(0x1901 || domainSeparator || hashStruct(message))
Получите оба промежуточных хеша в каждой реализации. Если расходятся только хеши структуры, проверьте порядок полей и типы, включая объявления вложенных структур. Для итогового дайджеста нужен Ethereum Keccak-256.
Отдельно проверьте защиту от повторного применения
Совпадение дайджестов не исключает повторного применения сообщения. Проверьте предусмотренные приложением nonce, крайний срок или отметку однократного использования. Сам EIP-712 определяет структурированный дайджест, а защиту от повтора реализует приложение. eips.ethereum.org EIP-712