Як відкликати дозволи токенів DApp до того, як вони зливають ваш криптогаманець

Як відкликати дозволи токенів DApp до того, як вони зливають ваш криптогаманець

Щоб видалити доступ DApp до ваших токенів, ви повинні знайти дозвіл, який він тримає, і відкликати його в окремій он-чейн транзакції - відключення DApp не видаляє дозвіл, і ваші токени залишаються відкритими, поки ліміт витрачання не встановлено на 0.

Ключові висновки

  • Дозволи живуть он-чейн - закриття додатку або сесії WalletConnect нічого не змінює; дозвіл на витрачання залишається активним, поки ви не відкличете його.
  • Необмежені дозволи підвищують шкоду - єдиний необмежений дозвіл дозволяє контракту витрачати весь поточний і майбутній баланс токена.
  • Відкликання запобігає майбутнім витратам, а не минулій крадіжці - скидання ліміту витрачання блокує нові перекази, але не може повернути активи, які зливач уже переміщив.

Що таке дозволи токенів DApp?

Дозвіл токена DApp - це дозвіл, який власник гаманця надає смарт-контракту на витрачання конкретного токена до встановленої суми. Без цього дозволу децентралізована біржа, ринок кредитування або будь-який інший DApp не можуть переміщувати ваші токени - дозвіл - це те, що дозволяє йому обмінювати, стейкати або переказувати їх від вашого імені, коли ви взаємодієте з ним.

Смарт-контракт - це програма на базі блокчейну, яка автоматично виконує дії, коли виконуються попередньо визначені умови.

Як працюють дозволи токенів DApp

Дозвіл токена слідує фіксованій послідовності: ви підключаєте свій гаманець до DApp, DApp запитує дозвіл, він записується он-чейн, і з того моменту DApp виконує схвалену дію без повторного запиту. Саме так працюють відомі DApp, як Aave і Uniswap. Оскільки дозвіл живе на блокчейні, а не в сесії додатку, він залишається в силі ще довго після того, як ви припините використовувати DApp.

Дозволи мають кілька різних форм:

  • Обмежений дозвіл: DApp може витрачати лише суму, яку ви встановили, наприклад 500 USDC, і повинен запросити новий дозвіл, щоб витратити більше.
  • Необмежений дозвіл: DApp може витрачати будь-яку суму вибраного токена, включаючи токени, які надходять у ваш гаманець пізніше.
  • Дозвіл токена: Смарт-контракт отримує дозвіл на управління конкретним взаємозамінним токеном, наприклад USDC або USDT.
  • Дозвіл NFT: Дозвіл може охоплювати окремий NFT або цілу колекцію, наприклад через setApprovalForAll.

Дозвіл токена не розкриває вашу секретну фразу і не надає DApp необмежений доступ до всього гаманця. Він застосовується лише до схваленого токена, NFT, суми та смарт-контракту.

Коли користувачі криптогаманців надають дозволи токенів?

Дозволи токенів з’являються під час повсякденних дій DeFi: обміну токенів, кредитування, стейкінгу та продажу NFT. Вони можуть залишатися активними після того, як дію завершено або DApp відключено.

Обмін токенів на DEX: Припустимо, ви обмінюєте USDC на ETH на Uniswap - спочатку ви схвалюєте контракт Permit2 (менеджер дозволів від Uniswap Labs) для використання USDC. Необмежений дозвіл може залишатися активним після завершення або скасування обміну.

Надання токенів протоколу кредитування: Щоб кредитувати USDT на Aave, ви схвалюєте контракт Aave Pool для переміщення токенів з гаманця. Невикористаний ліміт витрачання може залишитися після виведення депозиту або відключення DApp.

Стейкінг токенів через DApp: Під час стейкінгу через Aave Umbrella ви схвалюєте контракт стейкінгу для переміщення вибраних токенів у пул. Якщо дозвіл перевищує депозит, залишок ліміту витрачання може продовжувати працювати після того, як ви вийдете зі стейкінгу.

Розміщення NFT на продаж: Розмістіть NFT на OpenSea, і маркетплейс може запросити доступ до окремого NFT або всієї колекції через setApprovalForAll. Дозвіл на всю колекцію залишається в силі, поки користувач не відкличе його в окремій транзакції.

Отримання токенів з ейрдропу: Фейковий сайт ейрдропу може приховати необмежений дозвіл або підпис Permit за звичайною кнопкою Claim. Після того, як ви підтвердите, зливач гаманця може переміщувати схвалені токени або NFT без жодного нового запиту в гаманці.

Які ризики дозволів токенів?

Небезпека не в самому дозволі, а в те, у що він може перетворитися з часом. Три ризики мають найбільше значення:

  • Необмежений ліміт витрачання: Контракт може витрачати весь поточний і майбутній баланс схваленого токена, а не лише суму, яку ви мали намір використовувати.
  • Застарілий дозвіл: Дозвіл продовжує працювати місяці або роки після того, як ви востаннє торкалися DApp, тому забутий дозвіл залишається уразливим до експлуатації.
  • Скомпрометований контракт: Навіть легітимний DApp може бути зламаний після того, як ви надали дозвіл, передаючи зловмиснику доступ, який ви вже підписали.

Що таке зливачі криптогаманців?

Зливач криптогаманця - це шкідливий інструмент, який використовує фішинговий сайт або фейковий DApp, щоб обманом змусити вас надати дозвіл на перенесення ваших токенів або NFT. Замість того, щоб вгадувати вашу секретну фразу, зливач змушує вас підписати доступ добровільно, а потім використовує його для виведення ваших найцінніших активів. Зливачі - це велика активна загроза: вони вкрали $494 мільйони приблизно з 332 000 адрес гаманців у 2024 році, на 67% більше, ніж рік тому (Scam Sniffer, 2024).

Як зливачі гаманців експлуатують дозволи токенів

Атака зливача зазвичай проходить через передбачувану послідовність кроків:

  1. Користувач потрапляє на фейковий сайт мінту, ейрдропу або інвестицій.
  2. Сайт пропонує користувачу підключити свій гаманець.
  3. Користувач підписує дозвіл або підпис permit.
  4. Зливач сканує гаманець і визначає найцінніші активи.
  5. Схвалені токени або NFT переносяться без будь-якого нового підтвердження.

Підключення гаманця саме по собі не дозволяє нікому переміщувати ваші активи - небезпека починається лише після того, як ви підписуєте дозвіл або шкідливу транзакцію. Цей єдиний підпис - це лінія між нешкідливим підключенням і злитим гаманцем.

Чому відключення DApp не відкликає його дозвіл

Відключення та відкликання - це дві різні дії, і лише одна з них видаляє дозвіл контракту на витрачання. Відключення закриває інтерфейс між вашим гаманцем і DApp; дозвіл продовжує жити он-чейн.

ДіяЩо вона робитьЩо залишається активним
ВідключитиЗакриває з’єднання між гаманцем та інтерфейсом DAppРаніше надані дозволи он-чейн
ВідкликатиВидаляє або скидає дозвіл смарт-контракту на витрачанняDApp повинен запросити новий дозвіл для доступу до токена знову

Щоб показати різницю, ми підключили Gem Wallet до легітимного DApp Uniswap і надали Permit2 необмежений дозвіл на USDC. Після відключення Uniswap жодних активних сесій WalletConnect не залишилося, але Revoke.cash все ще показував дозвіл з повним балансом USDC як цінність під ризиком. Відключення лише закриває з’єднання з DApp - дозвіл он-чейн залишається до окремої транзакції відкликання.

Uniswap запитує необмежений дозвіл USDC, Gem Wallet показує відсутність активних сесій WalletConnect, а Revoke.cash все ще показує один активний дозвіл Схвалити в Uniswap, відключити DApp - і дозвіл все ще активний он-чейн у Gem Wallet.

Як відкликати дозволи токенів DApp: крок за кроком

Відкликання дозволу займає кілька хвилин. Ось весь процес на один погляд:

  1. Відкрийте перевірювач дозволів.
  2. Введіть адресу вашого гаманця.
  3. Виберіть блокчейн.
  4. Перегляньте активні дозволи.
  5. Відкличте або зменшіть ліміт витрачання.
  6. Підтвердіть транзакцію.
  7. Перевірте результат.

Розглянемо кожен крок детально.

Крок 1: Відкрийте перевірений перевірювач дозволів

Відкрийте перевірювач дозволів, наприклад Revoke.cash або Etherscan Token Approval Checker, і введіть адресу самостійно, а не переходьте за посиланням. Фішингові копії цих інструментів існують, тому двічі перевірте домен перед підключенням будь-чого.

Крок 2: Введіть адресу вашого криптогаманця

Почніть у режимі лише для читання, вставивши вашу публічну адресу гаманця - це дозволяє вам бачити кожен активний дозвіл без підключення або підпису. Підключення через WalletConnect потрібне лише тоді, коли ви готові відкликати.

Крок 3: Виберіть правильний блокчейн

Виберіть мережу, де було надано дозвіл, оскільки кожен ланцюг зберігає свої власні дозволи. Ethereum, BNB Chain, Polygon, Base та інші мережі повинні бути перевірені окремо - дозвіл на одному ланцюзі невидимий на іншому.

Крок 4: Перегляньте витратчика та ліміт витрачання

Для кожного запису перевірте токен, смарт-контракт (витратчика), схвалену суму, дату надання та цінність під ризиком. Невідомий витратчик або необмежена сума на токені, яким ви володієте, - це найяскравіша ознака того, що дозвіл має бути видалений.

Крок 5: Відкличте або зменшіть дозвіл токена

Видаліть дозвіл, який вам більше не потрібен повністю, або зменшіть ліміт витрачання до суми, яку ви фактично плануєте використовувати. Натискання Revoke створює транзакцію, яка скидає ліміт витрачання для цього контракту на 0.

Крок 6: Підтвердіть транзакцію у вашому гаманці

Запит відкривається у вашому гаманці, наприклад Gem Wallet, через WalletConnect. Перед підтвердженням перевірте, що:

  • Сума: Схвалений ліміт витрачання змінюється на 0 USDC.
  • Контракт: USDC.
  • Метод: Approve.
  • Витратчик: Permit2.
  • Мережа: Ethereum.

Підтвердження вимагає комісії за мережу (наприклад ETH), оскільки це он-чейн транзакція, яка фактично видаляє дозвіл. Схваліть її в Gem Wallet, щоб надіслати.

Крок 7: Перевірте, що дозвіл було видалено

Перезавантажте Revoke.cash і підтвердьте, що дозвіл зник або його сума змінилася. У нашому тесті панель оновилася до 0 дозволів, $0 цінності під ризиком і порожнього списку дозволів - доказ того, що контракт більше не може витрачати USDC, поки не запросить знову.

Натискання Revoke в Revoke.cash, підтвердження ліміту витрачання 0 USDC в Gem Wallet та панель підтверджує 0 дозволів без цінності під ризиком Натисніть Revoke, підтвердіть ліміт витрачання 0 USDC у Gem Wallet і перевірте, що дозвіл зник.

Які дозволи токенів варто відкликати?

Не кожен дозвіл потребує видалення, але деякі є явними кандидатами. Відкличте дозвіл, коли:

  • Невикористовуваний DApp: Ви більше не використовуєте DApp, який його тримає.
  • Невідомий витратчик: Ви не впізнаєте контракт витратчика.
  • Необмежена сума: Дозвіл було надано на необмежену суму.
  • Старе оголошення NFT: Дозвіл прив’язаний до оголошення NFT, яке ви закрили.
  • Повідомлений злом: Проєкт розкрив злом або експлойт.
  • Підозріле джерело: Дозвіл з’явився після сумнівного мінту або ейрдропу.
  • Забута причина: Ви не можете пригадати, чому ви надали його взагалі.

Що робити, якщо ваш криптогаманець вже було злито

Відкличте кожен активний дозвіл негайно: відкликання зупиняє подальше витрачання, але не поверне активи, які вже були вкрадені. Якщо ваша секретна фраза або приватний ключ були викриті, створіть новий гаманець на чистому пристрої та перемістіть будь-які залишкові кошти туди. Якщо бот-зметювач спостерігає за адресою, не надсилайте газ на скомпрометовану адресу без окремого плану порятунку активів.

Як використовувати DApp без зливу

Відкликання очищає дозволи, які ви вже надали - але безпечніша звичка - це виловлювати ризикований дозвіл до того, як ви коли-небудь підпишете його. Кілька правил охоплюють більшість випадків:

  • Перевірте домен: Перевірте точний URL DApp перед підключенням.
  • Ігноруйте приманку дозволу: Не підписуйте незрозумілі дозволи просто щоб отримати ейрдроп.
  • Обмежте суму: Обмежте схвалену суму замість надання необмеженої.
  • Слідкуйте за setApprovalForAll: Ставтеся до дозволів на всю колекцію NFT з особливою обережністю.
  • Перевірте витратчика: Підтвердьте, що адреса витратчика належить справжньому протоколу.
  • Регулярно очищуйте: Видаляйте старі дозволи за розкладом.
  • Ізолюйте ризик: Використовуйте окремий гаманець для нових і ненадійних DApp.

Використовуйте DApp на понад 100 блокчейнах з Gem Wallet - повністю відкритим некастодіальним гаманцем, який зберігає приватні ключі на вашому пристрої та не збирає жодних персональних даних. Завантажте Gem Wallet і підключайтеся до додатків, сумісних з WalletConnect, зберігаючи повний контроль над вашими ключами.

Спробуйте Gem Wallet!

Гаманець для самостійного зберігання понад 100 блокчейнів

App Store 4.9 ★ в App Store | Google Play 4.8 ★ у Google Play
Завантажити зараз

Часті запитання

Ні - відключення закриває сесію WalletConnect, але дозвіл он-чейн залишається активним до окремої транзакції відкликання.
Відкрийте Revoke.cash, знайдіть дозвіл за вашою публічною адресою, підключіть Gem Wallet через WalletConnect і підтвердіть транзакцію, яка встановлює ліміт витрачання на 0.
Ні - після того, як ліміт витрачання встановлено на 0, смарт-контракт повинен запросити новий дозвіл, перш ніж він зможе знову використовувати токен.
Ні - відкликання блокує майбутні витрати, але воно не скасовує транзакції, які зливач гаманця вже здійснив.
Так - відкликання є он-чейн транзакцією і вимагає комісії за мережу в нативному токені ланцюга, наприклад ETH на Ethereum.