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

Internal Message

Сообщение между двумя смарт-контрактами внутри TON. Основной способ взаимодействия контрактов в актор-модели сети.

Синонимы: внутреннее сообщение, межконтрактное сообщение, in-msg

Internal Message — это сообщение, которое один смарт-контракт TON отправляет другому. В акторной модели TON это единственный способ контрактам общаться: прямых синхронных вызовов между контрактами не существует — только асинхронные сообщения.

Структура

Internal-message в TVM — это cell, который содержит:

  • Адрес отправителя (контракт-источник).
  • Адрес получателя (целевой контракт).
  • Сумму TON и опциональные jetton/extra currencies.
  • Опкод (32-битный префикс тела), по которому получатель решает, что делать.
  • Тело — произвольные данные по схеме, описанной в TLB или ABI.
  • Bounce-флаг — нужно ли возвращать сообщение при ошибке.

Как это работает

Когда контракт-источник в action-phase эмитит исходящее сообщение, оно попадает в outbound-очередь его шарда. Сеть маршрутизирует его до шарда получателя — это может занять один-два блока, если адресаты в разных шардах. Дальше получатель обрабатывает internal-message в своей следующей транзакции: проверяет opcode, парсит тело, исполняет логику.

Важные особенности

  • Асинхронность. Между отправкой и обработкой проходит хотя бы один блок. Логика «вызвал — получил ответ» собирается из двух раздельных транзакций.
  • Стоимость. Платит обычно отправитель: forward-fee за маршрутизацию плюс gas получателя, если он списывается из приложенной суммы (mode 0).
  • Гарантии доставки. Сеть гарантирует доставку, но не время. Если получатель не существует или отказывается — сообщение бонсится обратно при включённом bounce-флаге.

Internal-messages — главная единица денежного и логического потока в TON. Любой DEX-свап, любой jetton-перевод, любой NFT-mint — это цепочка из внутренних сообщений.

См. также