Визначення
Rent (орендна плата) — це механізм захисту мережі Solana від безконтрольного зростання обсягу збережених даних. Кожен обліковий запис у блокчейні повинен утримувати мінімальний баланс, інакше його дані автоматично видаляються. Сума, яка робить обліковий запис звільненим від оренди (rent-exempt), розраховується залежно від розміру збережених у ньому даних.
Як працює
- Solana стягує оренду пропорційно до кількості байтів, які обліковий запис займає в стані мережі.
- Існує два варіанти: періодична сплата за кожну епоху або одноразовий депозит, який повністю звільняє обліковий запис від оренди (rent-exempt).
- На практиці переважна більшість сучасних програм створюють облікові записи одразу у rent-exempt режимі — користувач вносить депозит один раз, і дані зберігаються безстроково, поки баланс не впаде нижче порогу.
- Якщо баланс облікового запису стає меншим за мінімально допустимий, мережа видаляє його під час наступного збирання сміття (garbage collection). Залишок SOL повертається на адресу, указану в інструкції закриття, або на власника запису.
Приклад
Ви створюєте обліковий запис розміром 200 байтів для зберігання стану токена. Мережа розраховує мінімальний депозит для rent-exempt — наприклад, 0.0015 SOL. Ви вносите цю суму в тій самій транзакції, що створює запис. Поки на балансі облікового запису є щонайменше 0.0015 SOL, дані зберігаються безстроково й жодних додаткових списань не відбувається. Якщо ви виведете кошти й баланс впаде нижче порогу — запис буде видалено.
Типова помилка
Помилково вважати, що rent — це регулярний платіж, який постійно зменшує баланс облікового запису. Насправді в сучасній Solana майже всі облікові записи створюються у rent-exempt режимі: ви сплачуєте один раз під час створення, і далі оренда не стягується. Плутанина виникає через те, що в ранніх версіях мережі оренда справді стягувалася за кожну епоху, проте цей підхід був замінений на поточний.
Пов'язані матеріали
Внутрішні переходи
- Lamport — найменша одиниця SOL, у якій вимірюється орендна плата та всі комісії в мережі.
- Blockhash — ідентифікатор блоку, що використовується в транзакціях, зокрема в операціях створення облікових записів із сплатою rent.