Коли ви підключаєте гаманець до застосунку в Solana, ви надсилаєте йому певні дозволи. Від того, які саме права ви надали, залежить, чи зможе застосунок лише переглядати ваш баланс, чи матиме можливість списати кошти. Розуміння цих дозволів дозволяє підключатися до сервісів без ризику втрати активів.
Типи дозволів у Solana
У мережі Solana дозволи працюють на рівні програм і облікових записів. Коли гаманець просить вас підписати транзакцію, він фактично запитує дозвіл на виконання конкретної дії з вашим обліковим записом. Усі дозволи можна згрупувати у три основні категорії.
Дозвіл на переказ токенів (transfer)
Цей дозвіл дозволяє застосунку ініціювати переказ ваших токенів на іншу адресу. Застосунок не отримує постійний доступ — кожен переказ вимагає окремого підпису в гаманці. Проте якщо ви підписали транзакцію, кошти будуть відправлені.
Дозвіл на делегування (delegate)
Делегування передає частковий контроль над вашими токенами іншому обліковому запису. Найчастіше це використовується для стейкінгу: ви делегуєте токени валідатору, але вони залишаються на вашому рахунку. Делегований обліковий запис не може переказати токени собі, але може виконувати дії, пов'язані зі стейкінгом.
Дозвіл на перегляд балансу (read-only)
Цей дозвіл дозволяє застосунку побачити ваші адреси та баланси, але не підписувати жодних транзакцій. Ви використовуєте його, коли просто переглядаєте портфоліо в агрегаторах або перевіряєте інформацію на блокчейн-експлорерах.
Що означає кожен дозвіл на практиці
Розглянемо типові сценарії, щоб зрозуміти, як ці дозволи працюють у реальних ситуаціях.
Підключення до децентралізованої біржі. При першому підключенні біржа отримує read-only доступ до вашого гаманця. Коли ви створюєте ордер на обмін, гаманець показує транзакцію, яка включає дозвіл на переказ конкретної суми конкретного токена. Ви бачите адресу отримувача та суму перед підписанням.
Стейкінг через сторонній інтерфейс. Застосунок просить підписати транзакцію делегування. Після цього валідатор отримує право голосувати вашими токенами від вашого імені. Токени не залишають ваш гаманець, але їхня ліквідність обмежена: щоб зняти їх, вам потрібно створити транзакцію скасування делегування (undelegate) і дочекатися завершення епохи.
Мінтинг NFT. Застосунок просить підписати транзакцію, яка списує SOL на комісію та створює новий токен на вашому рахунку. Дозвіл стосується лише тієї суми комісії, яку ви бачите в деталізації транзакції.
Підключення до агрегатора портфоліо. Такі сервіси зазвичай працюють виключно в read-only режимі. Вони запитують вашу адресу і отримують дані через RPC-вузол без жодного підписання з вашого боку.
Як мінімізувати ризики при підключенні
Кожне підписання транзакції — це точка, де ви приймаєте рішення про надання дозволу. Нижче наведено практичні кроки для безпечного підключення.
- Перевіряйте кожну транзакцію перед підписанням. У вікні гаманця ви бачите: яку програму викликається, які облікові записи залучені та яка сума списується. Якщо сума відрізняється від очікуваної або ви бачите незнайомі адреси отримувачів — не підписуйте.
- Використовуйте read-only підключення там, де достатньо перегляду. Якщо сервіс лише показує статистику або портфоліо, не підключайте гаманець з правом підписання. Більшість агрегаторів підтримують цей режим.
- Розділяйте кошти за призначенням. Зберігайте основний запас на одному гаманці, а для взаємодії з новими або маловідомими застосунками використовуйте окремий гаманець з обмеженою сумою. Якщо щось піде не так, втрата буде контрольованою.
- Скасуйте делегування, якщо більше не користуєтеся сервісом. Делегування не зникає самостійно. Щоб повернути повний контроль над токенами, створіть транзакцію undelegate через інтерфейс стейкінгу або безпосередньо в гаманці, якщо така функція підтримується.
- Перевіряйте адресу програми. У деталях транзакції гаманець показує, до якої програми належить виклик. Якщо ви підключаєтеся до відомого застосунку, адреса програми має збігатися з офіційною. Перевірити її можна на офіційному сайті проєкту або у перевірених каталогах.
Що робити, якщо ви підписали сумнівну транзакцію. Негайно перевірте баланс усіх токенів на рахунку. Якщо кошти вже списані, їх неможливо повернути транзакцією зворотного напрямку — це особливість архітектури Solana. Переведіть залишки коштів на інший гаманець, контроль над яким ви не передавали. Якщо ви делегували токени шахрайському валідатору, створіть транзакцію undelegate і переведіть активи після розблокування.
Обмеження
- Немає постійних токен-апрувів у стилі EVM. У Solana кожен переказ вимагає окремого підписання. Застосунок не може один раз отримати дозвіл і потім безконтрольно списувати кошти. Це суттєво зменшує ризик, пов'язаний із довготривалими дозволами.
- Делегування стейкінгу не є безумовно безпечною. Делегований валідатор отримує право голосувати вашими токенами. Хоча він не може їх переказати, вибір ненадійного валідатора може призвести до втрати частини винагороди або штрафів (slashing) у разі порушення протоколу.
- Read-only доступ не гарантує повної приватності. Застосунок, який отримав вашу адресу, може відстежувати ваші транзакції в публічному ланцюжку. Це не є вразливістю самого протоколу, а властивістю відкритого блокчейну.
- CPI (Cross-Program Invocation) ускладнює аналіз транзакцій. Програма, до якої ви звертаєтесь, може внутрішньо викликати інші програми. У деталях транзакції в гаманці ви можете бачити кілька програм. Якщо ви не розумієте, чому залучена конкретна програма, утримайтеся від підписання.
Наступний крок
Тепер, коли ви розумієте, які дозволи надаєте застосункам, важливо вміти перевіряти самі транзакції перед підписанням. Наступний матеріал пояснить, чому транзакція Solana може не пройти: причини та рішення — ви дізнаєтесь про типові помилки, які виникають уже після того, як ви дали дозвіл і ініціювали переказ.