Визначення

Compute units (CU) — одиниця виміру обчислювальних ресурсів у мережі Solana, що визначає обсяг процесорного часу, який транзакція може використати під час виконання. Кожна інструкція смарт-контракту на Solana споживає фіксовану кількість compute units.

Як працює

Solana використовує модель попередньої оплати обчислювального бюджету (prepaid compute budget). Перед відправкою транзакції розробник або гаманець вказує два параметри:

  • Compute unit limit — максимальна кількість CU, яку транзакція дозволено витратити.
  • Compute unit price — ціна в lamports за одну CU, що визначає пріоритет транзакції (priority fee).

Під час виконання runtime Solana підраховує спожиті CU для кожної інструкції. Якщо транзакція перевищує заявлений ліміт — вона відхиляється, а базова комісія за транзакцію не повертається. Якщо реальне споживання менше за ліміт — оплачується лише фактично витрачена кількість.

Compute units відокремлені від базової комісії за транзакцію. Базова комісія покриває запис у леджер та перевірку підписів, тоді як оплата CU визначає пріоритет обробки у черзі.

Типове значення ліміту за замовчуванням становить 200 000 CU на транзакцію — це значення варто перевірити в актуальній документації Solana, оскільки воно може змінюватися після оновлень мережі.

Приклад

Транзакція переведення SPL-токенів між двома акаунтами зазвичай споживає приблизно 5 000–15 000 CU залежно від кількості задіяних акаунтів та складності інструкцій. Якщо розробник встановлює ліміт 200 000 CU, а фактичне споживання становить 10 000 CU — оплата списується лише за 10 000 одиниць. Залишок бюджету не використовується і не оплачується.

Типова помилка

Встановлення надто низького ліміту compute units. Транзакція з недостатнім обчислювальним бюджетом завершується помилкою "Computational budget exceeded", навіть якщо логіка програми правильна, а підписи валідні. Базова комісія при цьому все одно сплачується. Деякі розробники навмисне занижують ліміт для економії, але це призводить до постійних невдалих транзакцій і марних витрат.

Пов'язані матеріали

Внутрішні переходи

  • Словник термінів Solana — інші визначення розділу «Розробка»
  • Priority fees — механізм, через який ціна за compute units впливає на порядок обробки транзакцій у черзі
  • Compute Budget програма — системна програма Solana для встановлення ліміту та ціни CU безпосередньо в транзакції

Додаткові ресурси

  • Офіційна документація Solana — розділ про Compute Budget (перевірте актуальні значення лімітів безпосередньо в джерелі)
  • Репозиторій Solana на GitHub — вихідний код Compute Budget програми для розуміння внутрішньої логіки підрахунку CU