Незалежний путівник · Крипто
Від’єднання dApp ≠ відклик дозволу ERC‑20: як перевірити й відкликати доступ
Практичний посібник для користувачів самоопіки Ethereum ERC‑20: чому від’єднання гаманця не видаляє он‑чейн дозволи й як їх перевірити та відкликати.

Чому це важливо
Від’єднання гаманця лише завершує браузерну сесію; щоб змінити ERC‑20 allowance потрібно надіслати транзакцію в блокчейн (зазвичай approve(spender, 0)) і дочекатися підтвердження.
Чому від’єднання dApp не видаляє ERC‑20 дозволи
Від’єднання лише припиняє сесію у браузері та забирає у сайту інтерфейсний доступ до вашої адреси. Якщо раніше ви підписали транзакцію approve(), вона оновила стан контракту токена на блокчейні — і цей стан залишається, поки не надішлють нову транзакцію.
У контракті ERC‑20 дозволи зберігаються в mapping owner → spender → uint256. Зміна цього значення вимагає on‑chain транзакції; жодна кнопка «Disconnect» у сайті чи гаманці не змінює цей запис.
- «Від’єднати» — означає лише припинити сесію й UI‑доступ.
- Щоб змінити allowance потрібно надіслати нову транзакцію approve(...) у блокчейн.
Як знайти мережу, контракт токена, адрес spender та поточний allowance
Переконайтеся, що у вашому гаманці обрана правильна мережа (наприклад, Ethereum Mainnet). Перевірка дозволів на іншій мережі може показати інший стан або не показати нічого.
Вставте тільки вашу публічну адресу в Etherscan Token Approval Checker або Revoke.cash. Інструмент покаже контракт токена, адресу спендера, мітку та суму дозволу. Якщо ім’я спендера підозріле, відкрийте його адресу в Etherscan для перевірки коду та транзакцій.
- Переконайтеся в правильності мережі в гаманці.
- Вставляйте лише публічну адресу у перевіряючий інструмент.
- Перевіряйте адресу спендера на Etherscan для додаткових підказок.
Як надіслати транзакцію відкликання і заплатити за газ
Щоб відкликати дозвіл, зазвичай викликають approve(spender, 0) у контракті токена. Гаманці та сервіси формують ABI‑закодовану транзакцію автоматично; вам потрібно підтвердити запит у гаманці та оплатити газ.
Газ оплачується нативною монетою мережі (ETH для Ethereum). Гаманці показують приблизну ціну та ліміт газу; дочекайтеся, поки транзакція підтвердиться на блокчейні.
- Дія: approve(spender, 0) — гаманці згенерують calldata.
- Оплата газу в нативній монеті; перевірте оцінку в гаманці.
- Не вважайте зміну завершеною, поки транзакція не підтвердиться.
Підтвердження результату та обмеження
Після підтвердження транзакції перевірте значення allowance через Etherscan Read Contract або оновіть сторінку Revoke.cash — значення в контракті є остаточним джерелом істини.
Відклик не поверне кошти, які вже були списані за попереднім дозволом, і не відновить скомпрометовану seed‑фразу. Якщо ключі були скомпрометовані, перемістіть кошти в новий гаманець.
- Підтверджуйте allowance через Read Contract або approval checker.
- Відклик блокує майбутні transferFrom() за межами нового ліміту, але не скасовує минулі трансфери.
- За витоку seed‑фрази — створіть новий гаманець і перелийте кошти.
Що перевірити
- Перевірте мережу в гаманці (наприклад, Ethereum Mainnet).
- Відкрийте Etherscan Token Approval Checker або Revoke.cash і вставте публічну адресу.
- Знайдіть контракт токена, адресу спендера та поточний allowance; перевірте адресу спендера в Etherscan.
- Виберіть «Revoke» (встановити 0) або зменшіть ліміт, підтвердіть транзакцію у гаманці й оплатіть газ.
- Почекайте підтвердження транзакції та перевірте, що allowance(owner, spender) дорівнює 0.
- Якщо була витік seed‑фрази, перемістіть активи в новий гаманець — відкликання не рятує від компрометації ключа.
Джерела
Перевірено: . Зовнішні джерела відкриваються в новій вкладці.