К основному содержанию
T TON Adoption
← Словарь
NODE/03 · Term

Exit Code

Числовой код, который TVM возвращает после compute-фазы транзакции. 0 — успех, остальные значения сигнализируют тип ошибки.

Синонимы: код выхода, exit_code, vm exit code

Exit Code — это целочисленный код, который TVM возвращает после исполнения compute-фазы. Он показывает, чем закончился запуск: успехом или конкретной ошибкой. Это первое, что смотришь в эксплорере, когда транзакция «не сработала».

Стандартные коды

В TVM есть зарезервированные системные коды и пространство для пользовательских:

КодЗначение
0Успех. Compute-phase отработала без ошибок.
1Альтернативный успешный код.
2Stack underflow — TVM упал, потому что инструкция ожидала больше элементов в стеке.
3Stack overflow.
4Integer overflow.
5Integer out of range.
13Out of gas — самая частая причина падения.
32Action list invalid.
33Invalid signature (характерно для wallet-контрактов).
34Invalid action mode.
37Not enough TON.
40Message too large.

Коды от 100 и выше — пользовательские: контракт сам решает, что они означают (require(amount > 0, code: 101) и т. п.).

Где смотреть

  • TonViewer / TonScan — поле exit_code в карточке транзакции.
  • Blueprint sandbox — в локальных тестах exit code возвращается прямо в результат runGetMethod/sendInternal.
  • Tact testsexpect(...).toHaveTransaction({ exitCode: ... }).

Тонкость

Если exit_code равен 0, это не значит, что транзакция полностью успешна: action-phase может упасть с собственным result_code. Поэтому при отладке стоит смотреть на оба поля. И помните: даже неуспешная транзакция списывает gas и storage-fee.

См. также