TVM — виртуальная машина TON
Как TVM исполняет смарт-контракты: стек, регистры, продолжения и чем это отличается от привычных VM.
Что такое TVM
TVM (TON Virtual Machine) — стековая виртуальная машина, которая исполняет байткод смарт-контрактов на TON. Каждый контракт — это программа для TVM плюс данные в ячейках.
TVM запускается внутри транзакции: пришло сообщение → TVM обработал его → обновилось состояние аккаунта и, при необходимости, ушли исходящие сообщения.
Модель выполнения
TVM — стековая машина: операнды лежат на стеке, инструкции берут значения сверху и кладут результат обратно.
Ключевые элементы:
- Стек — основные операнды вычислений
- Регистры (
c0…c7) — продолжения, код, данные, конфиг, баланс и служебный контекст - Continuations — «продолжения» выполнения: так устроены вызовы, циклы и обработка ошибок
- Gas — лимит вычислений; закончился газ — выполнение прерывается
Исходники для TVM обычно пишут на Tact, Tolk или FunC. Компилятор выдаёт байткод; на уровне сети исполняется именно он.
Как это работает
- На аккаунт приходит сообщение (внутреннее или внешнее).
- Сеть создаёт транзакцию и запускает TVM с кодом/данными аккаунта.
- TVM читает сообщение, меняет
data, тратит газ, может послать новые сообщения. - Результат фиксируется: новый хеш состояния, список исходящих сообщений, комиссии.
get-методы (например get fun balance()) — отдельный путь: они выполняются off-chain через RPC и не меняют состояние и не требуют газа от пользователя.
Частые ошибки
Путать get-методы и receive → get только читает; запись состояния — только через сообщения (receive / транзакция).
Думать, что TVM «как EVM с другим синтаксисом» → другая модель памяти (ячейки), другая модель вызовов (сообщения, а не синхронный call в той же транзакции по умолчанию).
Игнорировать лимит газа → сложные циклы и большие структуры в ячейках легко упираются в gas; тестируй в sandbox до mainnet.
Что дальше
- Cells и bag of cells — формат данных, с которым работает TVM
- Внутренние и внешние сообщения — что именно запускает выполнение
- Газ на TON — как считается комиссия за инструкции и пересылку
Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация