Назад до блогу
Solana

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

S
Sol Slugs Team
Sol Incinerator

Оновлення даних про ренту перевірено 3 вересня 2026 року: Усі фіксовані суми ренти або виплати на акаунт у цій старішій статті є історичними прикладами для попереднього налаштування 6,960 лампортів на байт, а не актуальним розрахунком. Розмір акаунта, активний етап ренти, попередні виведення, комісії операції та витрати мережі можуть змінити результат. Прочитайте Зниження ренти Solana у 2026 році і використовуйте актуальний попередній перегляд транзакції для свого гаманця.

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

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

Підключіться до інструмента відкликання. Він сканує всі ваші токен-акаунти, показує адреси, яким ви дозволили виводити з них токени, і видаляє ці дозволи одним пакетом. За це немає комісії — відкликання не повертає ренту, тому ви сплачуєте лише мережеву комісію. Через CLI це spl-token revoke <TOKEN_ACCOUNT_ADDRESS>.

Що насправді означає делегат Solana

Коли ви надаєте комусь дозвіл у Solana, ви встановлюєте делегат в одному конкретному токен-акаунті. Інструкція Approve записує в цьому акаунті дві речі: адресу делегата та делеговану суму.

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

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

Чому дозволи Solana мають вужчу сферу дії, ніж дозволи Ethereum

Дозвіл EthereumДелегат Solana
Сфера діїУсі токени цього контракту, якими ви володієтеОдин токен-акаунт
СумаЧасто необмеженоУстановлений вами фіксований ліміт
Кілька одночасноТак, вони накопичуються для кожного одержувача дозволуНі — один делегат на акаунт
Видаляється черезОкрема транзакція відкликанняВідкликання, або закриття акаунта

Третій рядок — найважливіший. В Ethereum дозволи накопичуються: можна надати ліміти десятку контрактів для одного токена, і кожен із них непомітно діятиме, доки його не відкличуть. Після років використання DeFi залишається довгий список забутих необмежених дозволів — саме тому інструменти відкликання стали там необхідними.

У Solana кожен токен-акаунт може мати щонайбільше одного делегата. Установлення нового делегата перезаписує попереднього. Список не накопичується: токен-акаунт або має одного делегата зараз, або не має жодного.

Саме тому в Solana не сформувалася така сама культура інструментів відкликання, як в Ethereum. Ризик реальний, але обмежений, і за звичайного користування гаманцем часто зникає сам.

Звідки беруться делегати

Більшість делегатів у ваших акаунтах не є зловмисними — саме так працюють звичайні функції Solana:

  • Оголошення на маркетплейсах NFT. Виставлення NFT на продаж зазвичай делегує його програмі маркетплейсу, щоб угода могла виконатися, коли з’явиться покупець. Саме тому виставлений NFT не можна спалити, доки ви не знімете його з продажу: ваш гаманець більше не має одноосібних повноважень над ним.
  • Програми стейкінгу та сховищ. Для внесення коштів у протокол часто використовують делегата, а не передають активи на зберігання.
  • Програмовані NFT. pNFT зберігаються замороженими з делегованими повноваженнями в межах механізму дотримання роялті.
  • Зловмисні дозволи. Єдиний сценарій, якого справді слід остерігатися: фішинговий сайт показує транзакцію, схожу на отримання активу, але насправді ви підписуєте Approve, надаючи делегату повноваження над вашими токенами.

Що неможливо видалити відкликанням

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

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

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

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

Як перевірити, де встановлено делегата

Гаманці не показують ці дані. Phantom і Solflare показують баланси, але не поле делегата в кожному токен-акаунті, тому дозвіл, наданий два роки тому, невидимий у щоденному інтерфейсі.

Перевірити це можна трьома способами:

  • Інструмент відкликання. Підключіть гаманець: інструмент просканує всі токен-акаунти в програмах SPL Token і Token-2022, показавши кожного делегата, відповідний мінт і розмір ліміту. Сканування доступне лише для читання — для самого перегляду не потрібні ані підпис, ані підтвердження.
  • Оглядач блокчейну. Знайдіть адресу свого гаманця, відкрийте окремі токен-акаунти та перевірте поле делегата. Якщо делегата встановлено, його буде показано. Для одного акаунта це зручно, для сотні — виснажливо.
  • CLI spl-token. spl-token account-info <TOKEN_ACCOUNT_ADDRESS> повідомляє адресу делегата та делеговану суму.

Якщо делегат — знайомий вам маркетплейс, а NFT зараз виставлено на продаж, це очікувано: зніміть актив із продажу, і делегата буде видалено.

Стежте за стовпцем ліміту. Дозволи часто встановлюють максимально можливе значення замість фактично потрібної суми; інструмент позначає його як Необмежено. Легітимне оголошення зазвичай делегує рівно один NFT; необмежений ліміт для токена, якого у вас багато, варто перевірити уважніше.

Як відкликати

В інструменті підключіться на sol-incinerator.com/revoke, перегляньте список і підпишіть. Усе вибране об’єднується в мінімально можливу кількість транзакцій, тому тридцять застарілих делегатів у гаманці не вимагатимуть тридцяти підписів.

За це немає комісії. Відкликання не вивільняє ренту, тому комісію нема з чого утримувати — ви сплачуєте лише мережеву комісію за транзакцію.

Через CLI для конкретного токен-акаунта:

spl-token revoke <TOKEN_ACCOUNT_ADDRESS>

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

Через UI гаманця звичайний шлях є непрямим: скасуйте або зніміть із продажу те, що спочатку створило делегата. Зняття NFT із продажу на відповідному маркетплейсі видаляє делегата цього маркетплейсу в межах інструкції скасування.

Відкликання делегата маркетплейсу для виставленого NFT фактично знімає актив із продажу — маркетплейс більше не може завершити угоду. Це правильна поведінка, але якщо ви хочете залишити актив у продажу, не змінюйте його делегата.

Чому я не можу відкликати делегата замороженого акаунта?

Тому що Solana не дозволить цього. Програма SPL Token одразу відхиляє відкликання для замороженого токен-акаунта, повертаючи AccountFrozen — замороження акаунта блокує не лише перекази, а й зміну повноважень.

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

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

Якщо ви все ж хочете видалити делегата, акаунт потрібно спочатку розморозити. Розморозьте його, виконавши unstake, delist або іншу дію, що призвела до замороження; після розмороження делегата можна відкликати звичайним способом.

Спалення не допоможе обійти обмеження. Заморожений акаунт відхиляє спалення з тієї самої причини, що й відкликання: замороження блокує операцію, а не лише перекази. Тому неможливо позбутися замороженого делегата шляхом знищення, поки актив залишається в акаунті. Розморозити його може лише власник повноважень на замороження (freeze authority).

Є практична причина, чому інструмент не намагається зробити це попри все: відкликання об’єднуються в мінімально можливу кількість транзакцій, тож заморожений акаунт спричинив би збій для всіх інших делегатів у тій самій транзакції. Його виключення дає змогу успішно обробити решту.

Повний варіант: закрийте акаунт

Ось частина, яку часто не помічають. Делегат — це поле, що зберігається в токен-акаунті. Немає акаунта — немає делегата.

Тож якщо цей токен вам однаково не потрібен — спам-токен, покинутий мемкоїн або шахрайський аірдроп, який спонукав вас щось підписати, — його спалення та закриття акаунта як побічний ефект назавжди видалять делегата. Ви не стільки відкликаєте дозвіл, скільки видаляєте об’єкт, до якого він застосовувався. І на відміну від простого відкликання, закриття акаунта повертає рентний депозит ~0.00204 SOL, який зберігався в ньому.

Тому для будь-якого токена, який ви не збираєтеся зберігати, ретельнішим рішенням буде повне очищення:

ДіяДелегата видаленоТокен зберігаєтьсяSOL повернуто
ВідкликатиТакТакНі
Спалити й закрити акаунтТакНі0.002 SOL

Відкликайте дозвіл, якщо хочете зберегти токен. Спалюйте й закривайте акаунт, якщо ні.

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

Реалістична модель загроз

Для більшості користувачів чесний підсумок такий: перевірте делегатів, якщо підписали щось, про що шкодуєте; зніміть із продажу все, що більше не хочете продавати; і видаліть сміттєві токени, до яких часто прив’язані зловмисні дозволи.

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

Відкликати делегатів

Відкликати делегатів

Проскануйте гаманець на наявність наданих вами делегатів рівня акаунта та видаліть їх. Без комісії — ви сплачуєте лише мережеву комісію.

Спробувати зараз

Читайте також

Поширені запитання

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

Застосуйте інструкцію Revoke програми SPL Token до токен-акаунта, у якому встановлено делегата. Для цього потрібні лише токен-акаунт і ваш підпис як власника. У командному рядку введіть spl-token revoke, а потім адресу токен-акаунта.

Що таке делегат у токен-акаунті Solana?

Делегат — це адреса, якій ви дозволили переказати або спалити до встановленої суми з одного конкретного токен-акаунта. Маркетплейси використовують делегатів для оголошень NFT, а програми стейкінгу — для депозитів. Кожен токен-акаунт може мати лише одного делегата одночасно.

Чи такі ж ризиковані дозволи Solana, як дозволи Ethereum?

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

Чи видаляє закриття токен-акаунта його делегата?

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

Як дізнатися, чи встановлено делегата для токен-акаунта?

Знайдіть свою адресу в оглядачі блокчейну та перевірте окремі токен-акаунти: якщо делегата встановлено, відповідне поле буде показано. CLI spl-token також повідомляє ці дані, а будь-який гаманець, що показує необроблені дані акаунта, відобразить те саме поле.

Чому не можна відкликати делегата замороженого токен-акаунта?

Програма SPL Token відхиляє відкликання для замороженого акаунта й повертає помилку AccountFrozen, оскільки замороження блокує не лише перекази, а й зміну повноважень. Програмовані NFT та активи в стейкінгу часто заморожені. Перш ніж видалити делегата, акаунт потрібно розморозити. Спалення не допоможе обійти це обмеження, адже заморожений акаунт також відхиляє спалення.

Чи може відкликання видалити постійного делегата Token-2022?

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

Як відкликати дозволи на токени в Solana | Sol Incinerator