🗺
Разбираем транзакции по фазамКаждая транзакция может быть разделена до 5-ти фаз 🤓
🎁
Фаза хранения (Storage phase)На этой фазе рассчитываются комиссии за хранение, накопленные контрактом из-за использования пространства в блокчейне.
🪙
Фаза начисления (Credit phase)На этой фазе баланс контракта пересчитывается с учетом возможного значения входящего сообщения и собранной комиссии за хранение.
⛏️
Фаза вычислений (Compute phase)На этой фазе виртуальная машина TVM выполняет контракт. Результатом выполнения контракта являются: код завершения (exit_code), действия (сериализованный список действий), данные о потреблении газа (gas_details), новое состояние хранилища (new_storage) и другие параметры.
⛏
Фаза действий (Action phase)Если фаза вычислений прошла успешно, на этой фазе выполняются действия, сформированные в фазе вычислений. В частности, действия могут включать отправку сообщений, обновление кода смарт-контракта, обновление библиотек и т. д. Однако некоторые действия могут завершиться неудачей (например, если попытаться отправить больше TON, чем есть у контракта). В таком случае вся транзакция может быть отменена, либо это конкретное действие будет пропущено (в зависимости от режима действий, например, контракт может использовать тип сообщения “отправить или откатить” или “попытаться отправить, а в случае ошибки игнорировать”).
🫴
Фаза отката (Bounce phase)Если фаза вычислений завершилась неудачей (возвращен код завершения exit_code >= 2), на этой фазе формируется bounce-сообщение для транзакций, инициированных входящим сообщением.
@dnevnik_ton