Визначення
Token account — це окрема обліковий запис у мережі Solana, який зберігає баланс конкретного SPL-токена для певного власника. На відміну від системного рахунку, де тримається нативний SOL, токен-рахунок належить програмі SPL Token Program і фіксує три ключові параметри: адресу монетного двору (mint), суму токенів та адресу власника.
Як працює
У Solana кожен тип токена вимагає окремого токен-рахунку. Якщо гаманець містить USDC, RAY і BONK, для кожного з них буде створено свій token account. Механіка виглядає так:
- Користувач ініціює створення токен-рахунку через SPL Token Program, вказуючи адресу mint (який саме токен) та власника.
- Рахунок фінансується мінімальною сумою SOL для оренди простору (rent-exempt).
- Програма-власник цього рахунку — саме SPL Token Program, а не користувач безпосередньо. Тому лише ця програма може змінювати баланс.
- На практиці майже завжди використовуються Associated Token Accounts (ATA) — детерміновані адреси, які обчислюються за формулою з PDA (Program Derived Address). Це гарантує, що для однієї пари «власник + mint» існує рівно один рахунок, і його адресу можна передбачити без запиту до мережі.
Коли ви відправляєте токени іншому користувачу, транзакція фактично змінює баланси на двох токен-рахунках: списує з вашого та зараховує на рахунок одержувача. Якщо в одержувача ще немає токен-рахунку для цього mint, його можна створити в тій самій транзакції.
Приклад
Уявіть, що ви вперше отримуєте 100 USDC на свій гаманець у Solana. Щоб ці токени фізично десь зберігалися, автоматично створюється token account, прив'язаний до вашого гаманця та до mint-адреси USDC. У стані цього рахунку фіксується: mint = адреса USDC, owner = ваша адреса, amount = 100. Ваш основний рахунок гаманця при цьому залишається незмінним — на ньому лише трохи менше SOL через сплату оренди простору.
Типова помилка
Найпоширеніша помилка — плутати токен-рахунок із гаманцем чи рахунком SOL. Коли користувач бачить у експлорері нульовий баланс SOL на адресі свого токен-рахунку, це викликає паніку, хоча це абсолютно нормальний стан: токен-рахунок не призначений для зберігання SOL, він лише фіксує баланс конкретного токена. Інша помилка — намагатися відправити токени на системний рахунок одержувача, де немає відповідного token account. Без створення ATA транзакція завершиться помилкою.
Пов'язані матеріали
Внутрішні переходи
- Token standard — як SPL Token Program визначає правила роботи з токенами та їхніми рахунками.
- Metadata — де зберігається інформація про назву, символ та зображення токена, що пов'язане з його mint.