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

FunC

Низкоуровневый язык программирования смарт-контрактов в TON. Компилируется в байткод TVM и используется в большинстве системных и DeFi-контрактов сети.

Синонимы: фанк, ton func, язык func

FunC — основной язык смарт-контрактов TON в первые годы существования сети. Синтаксисом он напоминает упрощённый C, но семантика строится вокруг особенностей TVM: ячейки, slice-ы, продолжения, асинхронные сообщения.

Где используется

На FunC написаны почти все системные и инфраструктурные контракты сети:

  • Эталонные реализации wallet-контрактов (от v3 до W5).
  • Стандартные контракты jetton master / jetton wallet.
  • Контракты NFT-коллекций и отдельных NFT-айтемов.
  • Большая часть кода ранних DEX и стейкинг-пулов (STON.fi v1, нативные nominator-pool, Tonstakers).

В 2024-2026 годах часть новых проектов мигрирует на Tact ради скорости разработки, но для production-критичных контрактов с большими TVL FunC остаётся стандартом из-за своей предсказуемости и дешевизны исполнения.

Особенности языка

  • Низкоуровневый. Программист сам сериализует данные в cell, парсит slice, считает биты. Ошибиться легко, но и оптимизировать можно до байта.
  • Без сборщика мусора, без heap. Всё работает на стеке TVM, что даёт минимальную газовую цену.
  • Слабая типизация по умолчанию. Тип чаще всего — int, cell, slice, tuple. Дисциплину обеспечивает программист.
  • Inline-функции и продолжения. Можно передавать функции как значения, что позволяет писать компактный код для разбора структур.

Цена входа

FunC требует сильного бэкграунда: понимание стековых машин, бинарной сериализации, асинхронной модели TON. По меркам Solidity-разработчика это «минус два уровня абстракции». Зато результат — байткод размером в сотни байт и стабильная цена газа на любых нагрузках.

Инструменты

  • Blueprint — официальный фреймворк для разработки и тестирования FunC-контрактов. Поднимает локальный sandbox TVM, прогоняет контракт через тесты на TypeScript.
  • Toncli — старая CLI-утилита, всё реже используется.
  • VS Code extension — подсветка синтаксиса, базовый линтер.

Документация — docs.ton.org/develop/func. Эталонные реализации — репозиторий ton-blockchain/ton и ton-blockchain/token-contract в GitHub.

См. также