| Слой | Что читать | Что это доказывает | Чего не доказывает |
|---|---|---|---|
| Compute | type, exit_code, gas_fees | Запуск и результат TVM-кода | Успех исходящих действий |
| Action | success, valid, result_code, msgs_created | Применение списка действий | Доставку каждого сообщения |
| Transaction | aborted, total_fees | Action phase не завершилась успешно | Наличие возврата |
| Message | bounce, bounced, value | Настройки или факт bounce-message | Полный возврат исходной суммы |
- Слой
- Compute
- Что читать
- type, exit_code, gas_fees
- Что это доказывает
- Запуск и результат TVM-кода
- Чего не доказывает
- Успех исходящих действий
- Слой
- Action
- Что читать
- success, valid, result_code, msgs_created
- Что это доказывает
- Применение списка действий
- Чего не доказывает
- Доставку каждого сообщения
- Слой
- Transaction
- Что читать
- aborted, total_fees
- Что это доказывает
- Action phase не завершилась успешно
- Чего не доказывает
- Наличие возврата
- Слой
- Message
- Что читать
- bounce, bounced, value
- Что это доказывает
- Настройки или факт bounce-message
- Чего не доказывает
- Полный возврат исходной суммы
Порядок зависит от bounceable-флага входящего сообщения
Обычная TON-транзакция может включать storage, credit, compute, action и bounce phases. Для bounceable internal message storage идёт до credit; для non-bounceable — credit до storage. Compute может быть skipped, например из-за no_gas или проблем состояния. Action появляется только после успешного compute и исполняет подготовленные действия: запись состояния, отправку сообщений, изменение code и другие операции.
Адресная форма влияет на установленный по умолчанию bounceable-флаг, поэтому перед переводом полезно понимать форматы адресов TON. Но текстовый префикс не заменяет чтение реального поля сообщения: raw и user-friendly представления кодируют один account ID, а контракт или кошелёк мог сформировать сообщение с собственными параметрами.
Compute exit code и action result code отвечают на разные вопросы
Диагностика одной транзакции
- 1Зафиксировать объект
Сохраните network, account, transaction hash или logical time, входящий message hash и block; не смешивайте соседние trace.
- 2Разобрать compute
Проверьте, был ли compute skipped или vm, затем exit_code и gas_fees. Успешный compute не означает успешную action phase.
- 3Разобрать action
Если фаза есть, прочитайте success, valid, result_code, skipped_actions и msgs_created. Нулевой compute code не перекрывает ненулевой action code.
- 4Сверить выходы
Сопоставьте msgs_created с фактическими outbound message hashes и продолжите trace до транзакций получателей.
- 5Проверить возврат
Ищите отдельное сообщение с bounced=true, его value и следующую транзакцию отправителя; не вычитайте сумму на глаз.
`aborted=true` означает, что action phase не была успешно завершена; это не стирает саму транзакцию и уже начисленные комиссии. Для исходящего internal message флаг mode +2 игнорирует почти все ошибки отправки и не создаёт bounce, а +16 инициирует bounce phase при action error. Поэтому один result_code нельзя интерпретировать без типа сообщения, mode исходящего действия и реального набора сообщений.
Bounce — новый message с остатком, а не откат банковского платежа
Для bounce нужны совместимые настройки сообщения, подходящий тип ошибки и достаточный остаток для пересылки. Возвратное сообщение меняет source/destination, очищает bounce и получает bounced=true. Import, storage, gas, action и forward fees могли быть удержаны раньше, поэтому возврат бывает меньше исходного value или вообще не создаётся. Non-bounceable перевод не становится возвратным задним числом.
| Наблюдение | Вероятная граница | Безопасное действие |
|---|---|---|
| Compute skipped/failed, action отсутствует | Код не дошёл до действий | Сохранить exit/skip reason; проверить состояние, gas и payload |
| Compute успешен, action failed, aborted=true | Ошибка списка действий или средств | Проверить result_code, mode, fees и созданные сообщения |
| aborted=false, ожидаемого эффекта нет | Контракт мог выбрать другой допустимый путь | Сверить state diff, outbound messages и следующую транзакцию |
| Есть bounced message | Вернулся только остаток value | Считать фактический входящий value отправителя и все fees |
| Bounce не найден | Условия возврата не выполнены либо trace неполон | Не отправлять повторно до проверки bounce flag, mode и downstream trace |
- Наблюдение
- Compute skipped/failed, action отсутствует
- Вероятная граница
- Код не дошёл до действий
- Безопасное действие
- Сохранить exit/skip reason; проверить состояние, gas и payload
- Наблюдение
- Compute успешен, action failed, aborted=true
- Вероятная граница
- Ошибка списка действий или средств
- Безопасное действие
- Проверить result_code, mode, fees и созданные сообщения
- Наблюдение
- aborted=false, ожидаемого эффекта нет
- Вероятная граница
- Контракт мог выбрать другой допустимый путь
- Безопасное действие
- Сверить state diff, outbound messages и следующую транзакцию
- Наблюдение
- Есть bounced message
- Вероятная граница
- Вернулся только остаток value
- Безопасное действие
- Считать фактический входящий value отправителя и все fees
- Наблюдение
- Bounce не найден
- Вероятная граница
- Условия возврата не выполнены либо trace неполон
- Безопасное действие
- Не отправлять повторно до проверки bounce flag, mode и downstream trace
Проверяемый итог — это не цвет статуса, а набор: transaction hash/LT, compute exit, action result, aborted, total fees, outbound message hashes и, если он существует, bounced message с фактическим value. Для общей проверки перевода используйте подтверждение перевода по hash, а финальность блока оценивайте отдельно. У Jetton дополнительно надо сверить Jetton master и нужный Jetton wallet: перевод токена разворачивается в несколько сообщений.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- TON Docs — Ordinary transaction TON Docs · Проверено 21 августа 2026 г. в 22:07 GMT+5
- TON Docs — Transaction phases TON Docs · Проверено 21 августа 2026 г. в 22:07 GMT+5
- TON Docs — Internal messages TON Docs · Проверено 21 августа 2026 г. в 22:07 GMT+5
- TON Docs — Message modes TON Docs · Проверено 21 августа 2026 г. в 22:07 GMT+5
- TON Docs — TVM exit codes TON Docs · Проверено 21 августа 2026 г. в 22:07 GMT+5
