Безопасность

Что такое Permit и Permit2 и что проверять перед подписью

Permit создаёт токенное разрешение по подписи, а Permit2 добавляет общий контракт управления. Проверяем токен, spender, сумму и срок.

Что такое Permit и Permit2 и что проверять перед подписью

Короткий ответ: Permit позволяет владельцу токенов подписать структурированное разрешение, а другая сторона затем записывает его в блокчейн. Permit2 использует отдельный общий контракт, которому сначала выдают allowance, после чего приложения запрашивают ограниченные разрешения через подписи. В обоих случаях критично проверить токен, spender, сумму, срок и сеть.

Чем Permit отличается от обычного approve

Обычный approve – отдельная транзакция к контракту токена. Владелец платит gas, а после подтверждения spender получает allowance. Permit начинается с подписи сообщения вне сети. Подпись вместе с параметрами передают контракту, который проверяет её и создаёт разрешение.

Так приложение может объединить разрешение и основное действие в одну сетевую операцию или оплатить её отправку самостоятельно. Пользователь не обязательно видит отдельный TxID в момент подписи. Однако подпись остаётся распоряжением с экономическими последствиями, а не безобидным входом на сайт.

Поддержка Permit зависит от реализации токена. Наличие кнопки в интерфейсе не доказывает, что адрес контракта правильный. Сверяйте актив и сеть так же тщательно, как при обычном approve на точную или безлимитную сумму.

Зачем нужен nonce и срок действия

Подписанное разрешение содержит nonce, чтобы его нельзя было бесконечно применять повторно. После успешного использования контракт меняет состояние, и та же подпись обычно перестаёт проходить. Deadline ограничивает время, до которого разрешение может быть принято.

Далёкий срок не означает, что подпись обязательно будет использована, но расширяет окно риска. Для разовой операции выбирайте короткий разумный период. Не подписывайте разрешение без срока, если не понимаете, как его отменить.

Nonce Permit не равен nonce обычной транзакции аккаунта. Это отдельный счётчик в логике токена или системы разрешений. Поэтому сброс истории кошелька не аннулирует уже выданную подпись.

Как устроен Permit2

Permit2 – отдельный смарт-контракт управления токенными разрешениями. Сначала пользователь делает обычный approve токена этому контракту. Затем может выдавать приложениям более узкие права по подписанным сообщениям, указывая spender, сумму и срок.

Такой подход упрощает единый процесс для токенов, которые сами не реализуют Permit. Но появляется два уровня контроля. Первый – allowance токена контракту Permit2. Второй – конкретная подписанная авторизация приложению. Проверять нужно оба.

Название Permit2 в окне подписи не гарантирует безопасность. Мошеннический сайт способен запросить разрешение на чужой spender, большую сумму или длительный срок. Контракт-посредник не выбирает намерение за пользователя.

Базовый approve контракту Permit2 может быть большим и длительным, поэтому безопасность зависит от ограничений следующей подписи. Если приложение просит максимальную сумму и на этом уровне, преимущество точной авторизации теряется. Сравните запрос с фактическим размером операции.

Что проверить в структурированной подписи

  1. Домен и chain ID должны соответствовать выбранной сети и ожидаемому контракту.
  2. Token должен быть именно тем активом, с которым вы работаете.
  3. Spender должен совпадать с проверенным контрактом приложения.
  4. Amount не должен превышать осознанно выбранный предел.
  5. Deadline или expiration должны соответствовать сроку операции.
  6. Тип сообщения и назначение подписи должны быть понятны до подтверждения.

Если кошелёк показывает только необработанный набор символов или предлагает blind signing, остановитесь. Общие риски разобраны в статье о том, что значит подписать сообщение в кошельке.

Комиссия и момент списания

Подпись вне сети сама по себе не списывает gas, но кто-то должен отправить данные в блокчейн. Комиссию может оплатить пользователь в объединённой транзакции, приложение или relayer. Формулировка «без gas» часто относится только к шагу подписи.

Токены не уходят в момент создания Permit, если сообщение содержит только разрешение. Позже spender способен применить право в предусмотренных пределах. Поэтому нельзя судить о безопасности по нулевому изменению баланса сразу после подписи.

Сохраните домен сообщения и параметры до подтверждения, если кошелёк позволяет это сделать без раскрытия секретов. При споре они показывают, какое право было подписано. Обычный снимок страницы после закрытия окна может не содержать spender и срока.

Как отменить рискованное разрешение

Если подпись ещё не использована, способы аннулирования зависят от контракта: можно изменить nonce, отозвать конкретное разрешение или снять базовый allowance. Простое отключение сайта не меняет состояние сети. Проверяйте результат чтением контракта.

Для Permit2 полезно отдельно отозвать авторизацию spender и, если система больше не нужна, уменьшить allowance токена самому контракту Permit2. Инструкция по отзыву разрешений помогает проверить базовый уровень.

Если после подписи появились неизвестные транзакции, прекратите работу с сайтом и действуйте по плану после компрометации кошелька. Не подписывайте предложенную мошенником «отмену».

Отмена одной подписи не гарантирует, что других прав нет. Просмотрите базовые allowance по всем затронутым токенам и отдельные разрешения Permit2. Выполняйте действия с доверенного устройства и внимательно проверяйте каждую транзакцию отзыва.

Что сообщать поддержке

Можно передать сеть, публичный адрес, токен, spender, контракт Permit2, сумму, срок и хеш уже отправленной транзакции. Seed-фраза, приватный ключ, пароль и 2FA не нужны для анализа подписи. Запрос этих секретов означает попытку получить полный контроль над средствами.

Итог

Permit переносит создание разрешения в подписанное сообщение, а Permit2 добавляет общий слой управления для разных токенов. Удобство не отменяет риска allowance. Читайте структурированные поля, ограничивайте сумму и срок, сверяйте spender и после работы удаляйте права, которые больше не нужны.