Что означают поля
У typed data четыре части. Domain называет контракт, который будет проверять подпись (verifyingContract), его имя и версию, а также chainId, в котором подпись действует. Types описывают структуру. primaryType говорит, какая структура подписывается, а message содержит значения. Что именно вы разрешаете, определяют primaryType и verifyingContract вместе: Permit на контракте токена разрешает этот токен, PermitSingle на контракте Permit2 (0x000000000022D473030F116dDEE9F6B43aC78BA3 во всех крупных EVM-сетях) — токен, указанный внутри сообщения.
Суммы — сырые целые числа: для токена с 6 знаками 1000000 — это одна единица. Permit2 использует 160-битные суммы, поэтому его «безлимит» — 2¹⁶⁰−1, а не 2²⁵⁶−1. Сроки — Unix-время в секундах; инструмент переводит их в даты.
Типовые запросы и тревожные признаки
- Permit (EIP-2612) — owner, spender, value, nonce, deadline. Нормальные dApp используют его, чтобы сэкономить транзакцию approve. Фишинговый сайт тем же форматом забирает ваши USDC или DAI.
- Permit2 PermitSingle / PermitBatch — разрешения через контракт Permit2 от Uniswap. Пакетные версии охватывают несколько токенов одной подписью.
- Permit2 PermitTransferFrom — разовый перевод указанных токенов тому, кто отправит подпись.
- Seaport OrderComponents — ордер на NFT или токены. Если позиции 'consideration' платят незнакомцу или в сумме почти ноль, подпись отдаёт то, что указано в 'offer'.
- Тревожные признаки — безлимитные суммы, сроки на месяцы и годы вперёд, неизвестный spender, chainId не той сети, в которой вы работаете.
Если нежелательная подпись уже сделана
Подпись не отменить, но Permit работает, только пока не истёк срок и не использован nonce. Действуйте быстро: отзовите разрешение на токен в сети (для Permit2 — разрешение в контракте Permit2) или переведите средства на новый кошелёк. Подписанный ордер Seaport считайте действующим листингом и отмените его через маркетплейс.
Всё работает в вашем браузере. Инструменту нужен только JSON typed data, который dApp отправляет кошельку, — никогда не сид-фраза и не приватный ключ.
Частые вопросы
+Может ли подпись без газа украсть токены?
Да. Подпись Permit или Permit2 даёт spender право переводить токены; затем он сам отправляет её в сеть и платит газ. Так работают многие дрейнеры.
+Где взять JSON?
Многие кошельки показывают сырые typed data на экране подписи или в расширенном виде. Разработчики могут скопировать payload eth_signTypedData_v4 из консоли браузера или запроса dApp.
+Что такое Permit2?
Контракт Uniswap Labs, который управляет разрешениями на токены для многих dApp. Вы один раз разрешаете Permit2 в сети, а затем выдаёте отдельным dApp разрешения подписью.
+Ограниченная сумма и короткий срок — это безопасно?
Это ограничивает ущерб, но подписывайте, только если узнаёте dApp и spender. Маленький permit мошеннику — всё равно потеря.
+Инструмент проверяет подпись?
Нет. Он расшифровывает запрос, который вы собираетесь подписать, чтобы вы могли его оценить. Подпись и проверка происходят в кошельке.
Все расчёты выполняются в вашем браузере, введённые данные не отправляются на KOT.CASH. Результаты — оценка для информации, а не финансовая, налоговая или юридическая консультация.