Rabby Wallet: как найти и отозвать забытые approve смарт-контрактам

Regval

Regval

31.08.2026 3 минуты чтения
Иллюстрация Rabby Wallet
Безопасность

Approvals: разрешение, которое ты выдал и забыл

Ты бы не оставил root-доступ к серверу скрипту, который запустил один раз и забыл. А сколько смарт-контрактов до сих пор могут списать все твои токены без единого запроса?

Это вопрос не про фишинг и не про "будь осторожен со ссылками". Каждый раз, когда ты подключаешь кошелёк к новому dApp и подписываешь approve, ты выдаёшь смарт-контракту разрешение тратить твои токены, часто без ограничения по сумме. MetaMask покажет это разрешение один раз, в момент подписи, и больше никогда не напомнит, что оно всё ещё активно. Через полгода ты не вспомнишь ни один из полусотни контрактов, которым дал доступ.

Это по сути открытый порт, про который забыли. Как в разработке доступ нужно не только выдавать, но и регулярно ревизировать: смотреть, какие ключи и права всё ещё активны, закрывать те, что не нужны. В крипто-кошельках эта культура почти не прижилась, потому что стандартный интерфейс её просто не показывает.
Зачем тогда Rabby Wallet

Rabby (rabby.io) — кошелёк для EVM-сетей (Ethereum, Avalanche и другие; Solana и прочие не-EVM он не поддерживает), который с самого начала строился вокруг одного вопроса: кому ты дал доступ к деньгам и как это увидеть и отозвать.

Ключевая вкладка: Approvals. Это ревизия permissions в чистом виде, список всех контрактов, у которых есть разрешение тратить твои токены, с возможностью отозвать любое в один клик. То, что в MetaMask нужно собирать вручную через сторонние сервисы, здесь встроено в кошелёк по умолчанию.

Вторая часть защиты работает на входе, до подписи:

  • Search dApps проверяет сайт перед подключением: возраст адреса контракта (кошелёк предупредит, например, если ему 15 дней), популярность, EOA это или смарт-контракт. EOA (External Owned Account, адрес, управляемый приватным ключом, а не кодом контракта) там, где ожидается контракт, уже сам по себе сигнал.
  • При подписании транзакции Rabby разбирает, что именно подписывается, и блокирует кнопку, если видит подозрительное: например approve на триллионы USDT или контракт без истории взаимодействий. Пока предупреждение не снято осознанно, подписать нельзя технически, не только по совету.

Что ещё в интерфейсе

Импорт через мнемоническую фразу или аппаратные кошельки (Ledger, Trezor) через WalletConnect. Есть субаккаунты, совместимые по логике с MetaMask, Core Wallet и OKX Wallet, миграция или параллельное использование не ломает привычки. Сети добавляются вручную или через Chainlist. В настройках можно задать whitelist адресов (например, бирж), чтобы не гонять их через полную проверку каждый раз, и время автоблокировки (autolog, по умолчанию рекомендуют час).

Из практического: Swap и Gastopup внутри Rabby берут комиссию выше рынка, для обмена лучше отдельный агрегатор. А вот Approvals и Dapps (список уже проверенных приложений) как раз то, ради чего кошелёк стоит держать рядом с основным MetaMask, а не вместо него, есть настройка исключений, чтобы оба работали без конфликтов.

Что сделать прямо сейчас

Не через неделю, а сейчас: открой Approvals в любом своём EVM-кошельке (в Rabby это нативно, для MetaMask есть сторонние ревизоры вроде revoke.cash) и посмотри, сколько контрактов имеют безлимитный доступ к твоим токенам. У большинства, кто давно в DeFi, там наберётся десяток забытых разрешений. Это тот самый открытый порт, который никто не закрывает, пока не спросят прямо.


Дальше буду разбирать другие DeFi-инструменты через ту же инженерную оптику: не "что это", а "как это устроено и где дыра, о которой не говорят". Если тема заходит, лучший способ не пропустить следующий разбор: подписаться на канал.