Безопасность и бэкапы

Декодер typed data EIP-712: что разрешает эта подпись

Запрос подписи не безобиден только потому, что не стоит газа. Typed data EIP-712 может содержать Permit, который разрешает spender распоряжаться вашими токенами, разрешение Permit2 или листинг NFT за ноль — а фишинговому сайту нужна только ваша подпись, не транзакция. Вставьте JSON и увидите домен, сеть, spender, сумму и срок действия разрешения.

Расшифровка идёт локально. Подпись не отменить: если нежелательный permit уже подписан, отзовите разрешение в сети (разрешения Permit2 отзываются через контракт Permit2), а при неизвестном spender переведите средства на новый кошелёк.

Что означают поля

У 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. Результаты — оценка для информации, а не финансовая, налоговая или юридическая консультация.

← Все крипто-инструменты (92)

Декодер подписи EIP-712: проверка запросов permit