Аккаунты в TON: uninit, active, frozen
Статусы аккаунта nonexist, uninit, active и frozen — что они значат и как влияют на переводы и вызовы контрактов.
Статусы аккаунта
У каждого адреса в TON есть статус. Он определяет, можно ли исполнять код и что будет с входящим сообщением.
Основные состояния:
| Статус | Смысл |
|---|---|
nonexist | Аккаунта ещё нет в состоянии шарда |
uninit | Есть баланс/запись, но нет кода и данных контракта |
active | Есть код и данные — полноценный контракт/кошелёк |
frozen | Состояние заморожено (хранятся хеши); исполнение ограничено |
Как прочитать статус
Кошелёк пользователя — тоже смарт-контракт. Пока StateInit не задеплоен, адрес может быть uninit даже при ненулевом балансе (после первого non-bounceable депозита).
Как это работает
- Новый адрес без записей →
nonexist. - Пришла value без деплоя кода → часто переход к
uninitс балансом. - Деплой
StateInit(code + data) →active; дальше TVM исполняет код. frozen— особый режим (например после проблем со storage); для обычного dApp-флоу встретишь реже, но API его возвращает.
Bounceable-перевод на uninit/nonexist без успешного деплоя часто вернёт средства. Поэтому первый депозит на новый кошелёк делают non-bounceable.
Частые ошибки
Считать «адрес из seed» уже контрактом в сети → ключ есть локально, on-chain статус может быть nonexist/uninit до первой активности.
Слать bounceable на свежий кошелёк → монеты отскочат; используй non-bounceable для инициализации.
Путать uninit и «ошибка RPC» → это валидный статус; смотри getContractState, не только баланс.
Что дальше
- Адреса в TON — bounceable vs non-bounceable
- Внутренние и внешние сообщения — что активирует аккаунт
- Газ на TON — storage fee и жизнь аккаунта
Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация