Якщо ви натиснули «Підписати» у гаманці й одразу зрозуміли, що транзакція виглядає підозріло, найважливіше — не панікувати й не робити поспішних дій. Підпис на Solana зазвичай означає, що транзакція вже надіслана в мережу, але це не завжди означає втрату коштів. Нижче — чіткий алгоритм оцінки ситуації та обмеження наслідків.
Як оцінити наслідки підписаної транзакції
Перший крок — зрозуміти, що саме відбулося. Для цього потрібна сигнатура транзакції (рядок символів, що починається з цифр і літер, зазвичай 80–90 знаків). Її можна знайти в історії гаманця або в інтерфейсі застосунку, де ви підписали транзакцію.
Відкрийте цю сигнатуру в блок-експлорері (Solscan, SolanaFM або подібному) і перевірте такі елементи:
- Статус транзакції. Якщо статус «Failed» — транзакція не виконалася, кошти не списані, дозволи не надані. Це найкращий сценарій. Якщо «Success» — переходити до наступних пунктів.
- Кількість інструкцій. Зверніть увагу на розділ «Inner Instructions» або «Instructions». Легітимний переказ зазвичай містить 1–3 інструкції. Якщо їх 5, 10 або більше — це тривожний сигнал: транзакція могла виконати низку прихованих дій.
- Програми, задіяні в транзакції. Перевірте, які програми (Program Id) фігурують у транзакції. Якщо серед них є невідомі контракти, відмінні від системних (System Program, Token Program, Associated Token Account) і від програми, з якою ви планували взаємодіяти, це свідчить про складну операцію.
- Напрямок руху коштів. У розділі «Balance Changes» подивіться, куди пішли кошти та які токени задіяні. Якщо списалися токени, які ви не планували відправляти, або з'явилися незнайомі токени на вашому балансі — це може бути частиною шкідливої схеми.
Якщо транзакція містить виклики невідомих програм через CPI (Cross-Program Invocation), наслідки можуть бути непомітними одразу. Такі виклики дозволяють одній програмі запустити код іншої програми від вашого імені, тому потрібно перевірити не лише очевидні перекази, а й зміни у стані ваших акаунтів.
Що перевірити негайно: дозволи, баланс, делегування
Після оцінки самої транзакції проведіть комплексну перевірку стану гаманця. Навіть якщо кошти на місці, підписана транзакція могла надати сторонньому контракту повноваження, які будуть використані пізніше.
Баланс усіх токенів
Перевірте не лише SOL, а й усі токени на гаманці. Зловмисники іноді не чіпають основний баланс, щоб не привертати уваги, а списують менш очевидні активи. Зверніть увагу на токени з низькою ліквідністю — іноді шкідливі транзакції створюють фіктивні токени на вашому гаманці як частину підготовки до подальших атак.
Делегування токенів
На Solana кожен токен-акаунт може мати делегата — адресу, якій надано право списувати токени в межах встановленої квоти. Перевірте кожен токен-акаунт у блок-експлорері: якщо біля якогось із них вказано делегата, якого ви не призначали, це означає, що хтось має право частково або повністю розпоряджатися цими токенами.
Ознака делегування: у деталізації токен-акаунта є поле «Delegate» з адресою, відмінною від вашої, і поле «Delegated Amount» із ненульовим значенням.
Зміна власника акаунтів
Перевірте, чи залишилися ви власником (Owner) своїх токен-акаунтів. Якщо власник змінений на невідому адресу — ви втратили контроль над цими активами. Це критичний сценарій, який вимагає негайного виведення решти активів.
Наявність нових акаунтів
Перевірте, чи не створено нові акаунти, пов'язані з вашим гаманцем, під час підозрілої транзакції. Зловмисники іноді створюють додаткові токен-акаунти або акаунти програм (PDA) для подальшого використання.
Як обмежити збитки
Після того як ви з'ясували масштаб проблеми, дійте за ситуацією.
Якщо транзакція не виконалася (Failed): нічого робити не потрібно. Гаманець не зазнав змін, дозволи не надані. У майбутньому уважніше перевіряйте деталі транзакції перед підписом.
Якщо кошти ще на місці, але виявлено делегування: негайно скасуйте делегування. У більшості гаманців є функція «Revoke Approval» або «Revoke Delegate» для кожного токен-акаунта. Після скасування перевірте в експлорері, що поле «Delegate» стало порожнім, а «Delegated Amount» — нульовим. Це невелика транзакція з комісією, але вона позбавляє зловмисника права списувати ваші токени.
Якщо власник токен-акаунта змінений: ви не можете повернути контроль над цим конкретним акаунтом. Усі активи, які ще під вашим контролем, потрібно негайно перевести на новий гаманець. Детальний покроковий алгоритм переміщення описаний в окремому матеріалі — Як перемістити активи зі скомпрометованого гаманця.
Якщо кошти вже виведені: не намагайтеся відправляти нові транзакції на адресу зловмисника з проханням повернути кошти — це марно і може створити додаткові ризики. Зафіксуйте сигнатуру шкідливої транзакції та збережіть її.
Універсальне правило: після будь-якої підозрілої транзакції не підключайте цей гаманець до жодних застосунків, не підписуйте нові транзакції й не переказуйте на нього нові кошти, поки не переконаєтеся, що гаманець повністю під вашим контролем.
Наступний крок
Після того як ви оцінили наслідки та вжили невідкладних заходів, логіка дій залежить від результату:
- Якщо вдалося скасувати делегування й усі активи під вашим контролем — створіть новий гаманець для подальшої роботи, а цей використовуйте лише для переведення залишків. Змініть підходи до перевірки транзакцій перед підписом.
- Якщо частина активів була виведена — збережіть усі сигнатури шкідливих транзакцій. Інформація про те, як відстежити шлях вкрадених коштів, зібрана в окремому матеріалі — Як відстежити, куди пішли вкрадені кошти.
- Якщо гаманець виявився скомпрометований повністю — дотримуйтесь інструкції з переміщення активів за посиланням вище й не намагайтеся «відновити» доступ до старого гаманця через підозрілі сервіси.
Головне, що варто запам'ятати: підпис транзакції — це остаточна дія. Усі перевірки мають відбуватися до натискання кнопки «Підписати». Якщо інцидент уже стався, ваша ефективність залежить від швидкості оцінки та чіткості подальших кроків, а не від емоційних реакцій.