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.