Перейти к содержанию

Авторизация кошелька

Авторизация кошелька — это on-chain разрешение, позволяющее указанному spender вызвать transferFrom для токенов пользователя. Объясняются подписи, безлимитные разрешения и их проверка или отзыв.

Обновлено

Только в образовательных целях; не является инвестиционной рекомендацией. Инвестиции могут привести к убыткам.

Краткий ответ

Авторизация кошелька, или одобрение токена, — allowance от владельца одному адресу spender. В ERC-20 approve(spender, amount) записывает её, а transferFrom расходует остаток. Приватный ключ и другие токены не передаются. Одобрение меняет состояние, а входная подпись обычно off-chain. Permit ERC-2612 — подписанные данные для создания allowance без газа владельца, но это всё равно разрешение. ETH не использует ERC-20 allowance. Проверяйте токен, spender, сумму, срок и сеть; подключение сайта не даёт права тратить.

Авторизация кошелька
0 / 5
0 проверено; 5 осталось

Завершение этой проверки не доказывает безопасность актива, транзакции или системы.

Как это работает

  1. Пользователь отправляет approve; 0 означает отсутствие остатка, большое значение показывается как безлимитное.
  2. Spender позже вызывает transferFrom; контракт проверяет баланс и allowance, переводит токены и обычно уменьшает allowance.
  3. Изменение — переход состояния on-chain; замена положительных значений может конкурировать в mempool, поэтому при необходимости используйте подтверждённый ноль сначала.
  4. Permit ERC-2612 — подписанное сообщение: проверьте токен, chain ID, nonce, deadline, spender и сумму, так как его может отправить другой.
  5. Одобряйте только проверенный spender и нужную сумму, симулируйте вызов, сверяйте receipt, события, баланс и allowance. Для отзыва отправьте 0 в правильной сети; подтверждённый перевод не отменяется.

Пример

У Алисы 100 USDC, и она одобрила проверенный роутер на 40. Он может потратить максимум 40 USDC, но не ETH и не другой токен; после 15 остаётся 25. Безлимитное разрешение охватывает будущие пополнения, поэтому нужно проверить контракт, выбрать конечную сумму и отправить approve(router, 0).

Риски

  • Злонамеренный или обновлённый spender может использовать все токены allowance.
  • Безлимитное одобрение охватывает будущие пополнения.
  • Ошибки сети, контракта, адреса, десятичных знаков или calldata скрывают опасный запрос.
  • Ожидающие изменение или отзыв могут конкурировать с transferFrom; ноль не отменяет выполненный перевод.
  • Permit-подпись можно отправить позже; отключение сайта её не аннулирует.
  • Нестандартные, комиссионные, rebasing, приостановленные или callback-токены ведут себя иначе; проверьте итоговое состояние.

Распространённые заблуждения

  • «Подключение кошелька даёт право тратить». Полномочие возникает из approval, permit или подтверждённой транзакции.
  • «Подпись без газа безопасна». Релейер может отправить её позже.
  • «Отключение сайта отзывает approval». Подключение и on-chain allowance различны.
  • «Безлимит позволяет сразу забрать всё». Нужны вызов, баланс и совместимый код, но лимита суммы нет.
  • «Успешная симуляция доказывает безопасность». Проверьте сеть, calldata, получателя, код, receipt и балансы.

Связанные темы

Источники

Навигация

Поиск по вики...