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

External Message

Сообщение в TON извне сети — обычно это транзакция, которую кошелёк присылает на свой собственный wallet-контракт, чтобы запустить цепочку действий.

Синонимы: внешнее сообщение, ext-msg, ext-in

External Message — это сообщение, которое попадает в TON-сеть извне: его источник не другой контракт, а внешний клиент (кошелёк, бот, бэкенд). Почти всегда external-message — это запрос, идущий от пользовательского кошелька на его же wallet-контракт.

Зачем нужны

В акторной модели TON каждое действие — это сообщение между контрактами. Но первое сообщение должно откуда-то взяться. Им и становится external-message: например, пользователь в Tonkeeper нажимает «Send» — приложение собирает external-message, подписывает его приватным ключом, шлёт в сеть. Wallet-контракт его принимает, проверяет подпись и уже от своего имени рассылает internal-messages.

Чем отличается от internal

ПараметрExternalInternal
Источниквне сетидругой контракт
Подписьобычно требуется (приватный ключ)не нужна
Кто платит газконтракт-получатель из своего балансакак правило отправитель
Bounceнетда, если флаг включён

External-message не приносит TON в сеть напрямую: газ списывается с баланса контракта-получателя. Поэтому wallet-контракт обязан хранить достаточный баланс — если он пуст, сеть просто отвергает external.

Защита от спама

Любой может слать external-сообщения куда угодно — это публичный канал. Поэтому wallet-контракт первым делом проверяет подпись и nonce: невалидное сообщение отбрасывается до того, как тратится газ. Это особенность TON: отвергнуть внешнее сообщение должно быть дешевле, чем его обработать.

См. также