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

Send Mode

Битовый флаг в исходящем сообщении TON, описывающий, как контракт хочет отправить message: кто платит комиссию, бонсить ли при ошибке, удалять ли контракт.

Синонимы: send-mode, sendmode, mode флаг

Send Mode — набор битовых флагов, который TVM-контракт прикладывает к каждому исходящему сообщению. Этот режим определяет ключевые свойства транзакции: кто оплачивает комиссию, что произойдёт при ошибке, нужно ли уничтожить контракт после отправки.

Базовые значения

В FunC и Tact стандартные режимы — это int 0–128 или их побитовое ИЛИ:

ModeЗначениеЧто делает
0NORMALКомиссия списывается из приложенной к сообщению суммы.
1PAY_GAS_SEPARATELYКомиссия списывается с баланса контракта, а не из суммы перевода.
2IGNORE_ERRORSСбой отправки не приведёт к ошибке всего action phase.
64CARRY_REMAINING_VALUEПереслать всю «оставшуюся» сумму входящего сообщения.
128CARRY_REMAINING_BALANCEПереслать весь баланс контракта (используется при self-destruct).
32DESTROY_IF_ZEROУничтожить контракт, если после операции баланс ушёл в ноль.

Эти флаги комбинируются: 64 + 2 (66) — типичный режим для прокси-контракта, который пересылает всё дальше и не хочет упасть на полпути.

Зачем это важно

Send Mode — основной инструмент управления газом и денежным потоком в TON. Ошибки в нём — частый источник багов:

  • Контракт неожиданно пуст. Mode 128 забирает весь баланс, включая storage-deposit.
  • Транзакция вечно «висит». Mode 0 без достаточной суммы — недостача на комиссии и зависший exit code.
  • Цепочка сообщений рвётся. Без флага 2 ошибка в одном sub-message обнуляет всё остальное.

В большинстве библиотек (Tonkeeper SDK, Tact stdlib) эти константы экспортируются под понятными именами, и собирать число вручную нужно редко.

См. также