Кожен раз, коли ви натискаєте «Підписати» в гаманці, ви схвалюєте конкретний набір інструкцій. Solana не має прихованих полів — усе, що відбудеться, записано в транзакції. Завдання — навчитися це читати до натискання кнопки.
Передумови: що показує гаманець перед підписом
До того як з'явиться кнопка підтвердження, гаманець отримує від застосунку структурований пакет даних — транзакцію. Він не показує сирі байти, а розкриває зміст у зручному вигляді. Що саме відображається, залежить від типу гаманця, але базовий набір однаковий:
- Список інструкцій — що саме буде виконано (переказ, обмін, створення акаунта тощо).
- Акаунти, залучені в транзакцію — адреси, які беруть участь, із позначками, чи можуть вони бути змінені (writable), чи є підписувачами (signer).
- Програми — смарт-контракти, які виконуватимуть інструкції.
- Симуляція — попередній розрахунок того, як зміняться баланси після виконання (підтримується Phantom, Solflare та низкою інших гаманців).
Якщо гаманець не показує симуляцію балансів або список інструкцій виглядає порожнім — це перший привід зупинитися.
Як читати екран підпису
Поля транзакції: отримувач, сума, токен
Для простої операції переказу екран підпису містить мінімум три ключові поля:
- Отримувач — адреса гаманця або контракту, куди надходять кошти. Перевіряйте перші та останні символи адреси, а за можливості — повністю.
- Сума — точна кількість токенів або SOL. Звертайте увагу на кількість нулів після коми.
- Токен — назва та тікер активу. Різні токени можуть мати схожі тікери, але різні адреси контрактів (mint address).
Якщо ви очікували переказати 10 USDC, а на екрані стоїть 10 SOL — це різні активи з різною вартістю. Транзакція виконається саме так, як написано.
Дозволи в транзакції: на що звернути увагу
У Solana кожна інструкція містить список акаунтів із їхніми ролями. Два ключові статуси, на які варто дивитися:
- Signer — акаунт, який підписує транзакцію. Зазвичай це ваш гаманець. Якщо signer — чужа адреса, а вас просять підписати, це означає, що ви лише сплачуєте комісію, але не ініціюєте дію від свого імені.
- Writable — акаунт, дані якого можуть бути змінені. Якщо ваш акаунт позначений як writable у транзакції, яку ви не розумієте, це означає, що хтось або щось може змінити його стан.
Дозвіл на витрачання токенів (approve) у Solana працює інакше, ніж у Ethereum. Замість окремого дозволу застосунок отримує можливість створити транзакцію від вашого імені в межах поточної сесії. Тому кожна транзакція — це окремий акт схвалення, а не довгостроковий дозвіл.
Очікувані зміни балансу
Симуляція в гаманці показує, скільки коштів залишиться після виконання. Читайте її уважно:
- Порівняйте баланс «до» та «після». Різниця має збігатися з сумою переказу плюс комісія.
- Якщо симуляція показує зменшення балансу, але ви не бачите відповідного збільшення на іншому акаунті — кошти йдуть не на ваші адреси.
- Негативна зміна балансу SOL у кілька разів більша за очікувану комісію свідчить про прихований переказ.
На що звертати увагу: червоні прапорці
Ці ознаки не завжди означають шахрайство, але кожна з них вимагає зупинки та перевірки:
- Невідома програма — якщо в списку інструкцій є програма, якої ви не впізнаєте і яку не пояснено в інтерфейсі застосунку. Перевірте назву програми в експлорері перед підписом.
- Декілька переказів SOL — одна транзакція може містити кілька інструкцій. Якщо ви бачите більше одного переказу SOL, а очікували лише один — це привід зупинитися.
- Створення нового акаунта — інструкція createAccount означає, що з вашого балансу буде списано SOL для оренди простору (rent-exempt minimum). Це нормально для деяких застосунків, але має бути очікуваним.
- Занадто висока комісія — типова комісія в Solana становить частки центів. Якщо симуляція показує значне списання SOL «на комісію», транзакція містить приховані перекази.
- Адреса отримувача не збігається з очікуваною — навіть якщо ви скопіювали адресу раніше, завантаження сторінки або скрипт могли її підмінити. Завжди звіряйте останні символи безпосередньо перед підписом.
- Екран підпису з'явився без вашої явної дії — якщо ви просто зайшли на сайт або натиснули «переглянути», а гаманець вже просить підписати — не підписуйте.
Перевірка результату
Після підтвердження транзакції виконайте дві перевірки:
- У гаманці — відкрийте розділ історії транзакцій (Activity). Знайдіть останню операцію та перевірте: сума, токен, отримувач, статус (Success / Failed). Якщо статус Failed, кошти повернулися, але комісія за невиконану транзакцію все одно списана.
- В експлорері — скопіюйте ідентифікатор транзакції (signature) і відкрийте його в Solana Explorer. Там видно всі інструкції, всі акаунти та точні суми. Це найнадійніший спосіб переконатися, що відбулося саме те, що ви схвалили.
Якщо результат не збігається з тим, що ви бачили на екрані підпису, негайно перевірте інші дозволи та розгляньте варіант відкликання токенів на безпечний гаманець.
Типові помилки
- Підпис без читання — найпоширеніша помилка. Екран підпису не є формальністю. Кожне поле містить інформацію, яка впливає на ваші кошти.
- Ігнорування симуляції — якщо гаманець показує, що ваш баланс зменшиться на суму, більшу за очікувану, а ви натискаєте «Підписати» — ви схвалюєте саме цю суму.
- Переплутування токенів — USDT, USDC, USDP та інші стейблкоїни мають різні адреси контрактів. Переказ «10 доларів» може бути різним активом залежно від контракту.
- Очікування скасування — у Solana немає механізму скасування підтвердженої транзакції. Після підпису та успішного виконання операція незворотна.
- Довіра до інтерфейсу замість транзакції — сайт може показувати «ви отримаєте 100 токенів», але транзакція може містити інші інструкції. Завжди дивіться на дані транзакції, а не на текст на сайті.
Безпечний наступний крок
Після того як ви переконалися, що транзакція виконалася коректно, зафіксуйте ідентифікатор транзакції (signature). Це ваш доказ проведеної операції. Якщо виникне спор із застосунком або ви помітите відхилення — саме цей ідентифікатор дозволить точно встановити, що відбулося.
Якщо під час читання екрану підпису ви знайшли щось незрозуміле — не підписуйте. Закрийте вікно, перевірте застосунок і повторіть спробу. Якщо незрозумілі елементи залишаються, зверніться до документації проєкту або спільноти перед тим, як схвалювати транзакцію.