Открыть сервис

TON Virtual Machine

TON Virtual Machine (TVM) — это виртуальная машина, являющаяся средой исполнения смарт-контрактов в блокчейне The Open Network (TON). TVM представляет собой стековую виртуальную машину, предназначенную для выполнения байт-кода, который генерируется компиляторами с языков программирования высокого уровня, таких как FunC и Tact. TVM обеспечивает изолированное выполнение кода, что гарантирует безопасность и предсказуемость работы децентрализованных приложений (dApps) в сети TON.

История

Разработка TVM началась одновременно с созданием блокчейна TON, инициированного братьями Николаем и Павлом Дуровыми. Первоначальная концепция была описана в техническом документе (whitepaper) TON, опубликованном в 2018 году. После того как Комиссия по ценным бумагам и биржам США (SEC) в 2020 году предъявила иск к компании Telegram Group Inc. в связи с проведением ICO проекта TON, разработка блокчейна была официально прекращена. Однако сообщество независимых разработчиков продолжило работу над проектом, взяв за основу открытый исходный код. В 2021 году была запущена основная сеть TON, а TVM стала её ключевым компонентом.

В отличие от многих других блокчейнов, где виртуальные машины являются общими для всех смарт-контрактов (например, Ethereum Virtual Machine), TVM спроектирована с учётом асинхронной архитектуры TON, что позволяет обрабатывать множество транзакций параллельно.

Архитектура и принципы работы

Стековая модель

TVM является стековой виртуальной машиной, что означает, что все операции выполняются над данными, хранящимися в стеке. В отличие от регистровых машин, где данные хранятся в регистрах, стековая модель проще для реализации и анализа, но требует большего количества инструкций для выполнения сложных операций. Стек TVM состоит из элементов, которые могут быть целыми числами (в том числе 257-битными), срезами ячеек (cell slices), ячейками (cells), контейнерами (tuples) и другими типами данных.

Ячейки (Cells)

Ключевой особенностью TVM является использование ячеек (cells) в качестве основной единицы хранения данных. Ячейка представляет собой структуру, которая может содержать до 1023 бит данных и до 4 ссылок на другие ячейки. Это позволяет формировать направленный ациклический граф (DAG) для хранения сложных структур данных, таких как деревья Меркла. Ячейки являются неизменяемыми (immutable) после создания, что обеспечивает детерминированность выполнения.

Газ

Как и в других блокчейнах, выполнение смарт-контрактов в TVM требует оплаты комиссий, измеряемых в газе. Газ в TVM используется для оплаты вычислительных ресурсов, хранения данных и выполнения операций. Каждая инструкция TVM имеет фиксированную стоимость газа, которая зависит от её сложности. Стоимость газа может быть изменена через механизм управления сетью (governance). В отличие от Ethereum, где газ — это единица измерения, в TON комиссии взимаются в нативной криптовалюте Toncoin.

Асинхронность и параллелизм

TVM спроектирована для работы в асинхронной среде. Смарт-контракты в TON могут отправлять сообщения друг другу, которые обрабатываются не мгновенно, а в следующих блоках. Это позволяет достичь высокой пропускной способности за счёт параллельной обработки независимых сообщений. В TVM нет глобального состояния — каждый смарт-контракт имеет собственное хранилище (persistent storage), которое изменяется только при обработке входящих сообщений.

Инструкции и опкоды

TVM поддерживает набор из более чем 200 инструкций (опкодов), которые можно разделить на несколько категорий:

  • Арифметические и логические операции: сложение, вычитание, умножение, деление, побитовые операции (AND, OR, XOR), сравнение.
  • Операции со стеком: PUSH, POP, DUP, SWAP, ROT — манипуляции с элементами стека.
  • Операции с ячейками: создание, разбор, сериализация и десериализация ячеек.
  • Управляющие конструкции: условные переходы (IF, IFNOT), циклы (REPEAT, UNTIL, WHILE), вызовы подпрограмм (CALL, JMP, RET).
  • Криптографические операции: хеширование (SHA-256, SHA-512), проверка цифровых подписей (Ed25519, BLS), генерация случайных чисел.
  • Операции с газом: запрос остатка газа, установка лимита газа.
  • Операции с сообщениями: отправка и получение сообщений, работа с очередями.

Инструкции TVM кодируются в байт-код, который может быть сжат для экономии места. В отличие от EVM, где опкоды имеют фиксированную длину (1 байт), в TVM многие опкоды являются многобайтовыми, что позволяет расширять набор инструкций без нарушения обратной совместимости.

Языки программирования

Для написания смарт-контрактов, исполняемых в TVM, используются два основных языка:

  • FunC — язык высокого уровня, похожий на C. Он предоставляет прямой доступ к возможностям TVM, включая работу с ячейками, сообщениями и газом. FunC является основным языком для разработки на TON.
  • Tact — более современный и безопасный язык, ориентированный на разработчиков, знакомых с TypeScript или Rust. Tact компилируется в байт-код TVM через промежуточное представление.

Также существуют компиляторы с других языков, таких как Solidity (через проект Sol2Ton), но их использование ограничено из-за различий в архитектуре.

Отличия от других виртуальных машин

Сравнение с EVM

  • Модель данных: EVM использует 256-битные слова и хранит данные в виде дерева Меркла Патриции, тогда как TVM использует ячейки и DAG.
  • Параллелизм: EVM обрабатывает транзакции последовательно, в то время как TVM поддерживает асинхронное выполнение и параллельную обработку сообщений.
  • Газ: В EVM стоимость газа фиксирована для каждой операции, в TVM она может динамически изменяться через управление сетью.
  • Сложность: TVM имеет более сложный набор инструкций, что позволяет писать более эффективные смарт-контракты, но требует более высокой квалификации разработчиков.

Сравнение с WASM (WebAssembly)

  • Целевая платформа: WASM изначально разрабатывался для веб-браузеров, а TVM — для блокчейна.
  • Безопасность: TVM имеет встроенные механизмы защиты от повторных атак (replay attacks) и переполнения стека, в то время как WASM требует дополнительных проверок.
  • Детерминизм: TVM гарантирует детерминированное выполнение, что критически важно для консенсуса в блокчейне. WASM в стандартной конфигурации не гарантирует детерминизма.

Применение

TVM используется для выполнения смарт-контрактов в экосистеме TON, которая включает:

  • Децентрализованные финансы (DeFi): обменные протоколы, пулы ликвидности, стейкинг.
  • Невзаимозаменяемые токены (NFT): создание, торговля и управление цифровыми активами.
  • Децентрализованные приложения (dApps): игры, социальные сети, маркетплейсы.
  • Управление сетью (Governance): голосование и принятие решений через смарт-контракты.

Безопасность

TVM спроектирована с учётом требований безопасности, характерных для блокчейн-среды:

  • Изоляция: каждый смарт-контракт выполняется в изолированной среде, не имеющей доступа к состоянию других контрактов без явного обмена сообщениями.
  • Детерминизм: выполнение кода полностью детерминировано, что позволяет всем узлам сети прийти к единому результату.
  • Защита от повторных атак: TVM использует механизм уникальных идентификаторов сообщений, предотвращающий повторное выполнение одной и той же транзакции.
  • Ограничение газа: выполнение контракта автоматически прекращается при исчерпании лимита газа, что предотвращает бесконечные циклы и атаки типа «отказ в обслуживании».

Критика

Основные критические замечания в адрес TVM связаны с её сложностью. По сравнению с EVM, TVM требует более глубокого понимания низкоуровневых аспектов, таких как управление ячейками и газом. Это создаёт высокий порог входа для разработчиков. Кроме того, асинхронная модель выполнения усложняет отладку и тестирование смарт-контрактов, так как результаты выполнения могут зависеть от порядка обработки сообщений.

Источники

  1. TON Whitepaper (2018) — оригинальный технический документ блокчейна TON.
  2. TON Virtual Machine — спецификация TVM (открытый исходный код).
  3. FunC Language Documentation — документация по языку FunC.
  4. Tact Language Documentation — документация по языку Tact.
  5. Статья «TON: The Open Network» на сайте сообщества TON.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →