TON для разработчиков: знакомство с FunC, Tact и Tolk
Какие языки используются для смарт-контрактов TON в 2026 — FunC, Tact, Tolk. Что выбрать новичку, чем отличаются, какие инструменты нужны и где учиться.
- Автор
- TON Adoption Team · исследовательская группа проекта
- Опубликовано
- Обновлено
Содержание21разделов
- Три языка TON
- FunC: классика
- Tact: дружелюбный
- Tolk: новый рекомендованный
- Что выбрать
- Blueprint: главный инструмент
- Что внутри
- Создание проекта
- Запуск тестов
- Деплой в testnet
- Минимальный workflow разработки
- Что важно понимать про модель TON
- Каждый аккаунт — это контракт
- Асинхронность
- Bounce
- Storage fee
- Cells и Slices
- Frontend и dApp
- Где учиться
- Дальше
- Источники
Для разработчика, который привык к Solidity, TON — отдельная вселенная. Другие языки, другие концепции (асинхронность, ячейки, message-passing), другие инструменты. Этот гайд — карта местности: что есть, что выбрать, в каком порядке учить.
Один важный disclaimer: ниже мы говорим про смарт-контракты, то есть код, который живёт в блокчейне. Для front-end интеграции (dApp на JS/React, бот, мини-аппа) языки другие — TypeScript, Python — и они стандартные.
Три языка TON
В TON существует три актуальных языка для смарт-контрактов на 2026 год:
- FunC — низкоуровневый, исторически первый, написан Николаем Дуровым.
- Tact — высокоуровневый, появился в 2023, синтаксис похож на TypeScript/Kotlin.
- Tolk — новейший (2024–2025), позиционируется TON Foundation как рекомендуемый по умолчанию.
Плюс есть Fift — стек-ориентированный язык, но он используется только для деплоя и низкоуровневых утилит. Контракты на нём в проде не пишут.
Все три языка компилируются в TVM-байткод, который и исполняется в сети.
FunC: классика
FunC — функциональный, низкоуровневый язык с явной работой с памятью TON (ячейки, slices, dictionaries). Его синтаксис напоминает гибрид C и Lisp:
- Явная типизация (
int,cell,slice). - Прямые TVM-инструкции при необходимости.
- Минимум абстракций — пишешь близко к железу.
Плюсы:
- Полный контроль над gas-расходом.
- Все примеры в документации TON исторически на FunC — базовый язык.
- Большинство существующих контрактов в mainnet написано на FunC.
Минусы:
- Высокий порог входа: нужно понимать ячейки и низкоуровневую модель.
- Много boilerplate (сериализация, обработка сообщений, авторизация — всё руками).
- Легко ошибиться с типами или порядком операций.
FunC всё ещё поддерживается, но TON Foundation постепенно сдвигает фокус на Tolk. Новые проекты на чистом FunC в 2026 году пишутся редко.
Tact: дружелюбный
Tact задумывался как «Solidity для TON» — высокоуровневый язык, который скрывает большую часть сложности TVM. Синтаксис близок к TypeScript:
contract Counter {
val: Int as uint32 = 0;
receive("increment") {
self.val = self.val + 1;
}
get fun value(): Int {
return self.val;
}
}
Плюсы:
- Низкий порог входа для разработчиков с опытом TypeScript/Java/Kotlin.
- Автоматическая сериализация сообщений.
- Встроенные паттерны для jetton, NFT, ownership.
- Отличная документация на tact-lang.org.
Минусы:
- Меньше контроля над gas — компилятор генерирует код «безопасно», но не всегда оптимально.
- Часть сценариев требует встраивания FunC-фрагментов.
- Сообщество меньше, чем у FunC.
Tact активно используется в продакшене — много проектов 2024–2025 годов перешли с FunC именно на него.
Tolk: новый рекомендованный
Tolk — самая свежая разработка TON Foundation. Запущен в 2024–2025 годах, к 2026 — рекомендуемый язык по умолчанию.
fun main(in_msg: cell, in_msg_full: cell, my_balance: int): int {
var counter: int = read_counter();
counter += 1;
save_counter(counter);
return 0;
}
Идея Tolk:
- Современный, типобезопасный синтаксис (как TypeScript).
- Под капотом FunC-ядро — полный контроль над TVM.
- Автоматическая упаковка структур в ячейки.
- Pattern matching, null safety, generics.
Плюсы:
- Экономия gas 30–50% против FunC по официальным замерам TON Foundation.
- Авто-инлайн функций (в FunC нужны вручную).
- Современный type system: type aliases, union types, generics, null safety.
- Всё ещё — близко к TVM, гибкость на низком уровне.
Минусы:
- Молод — экосистема только формируется.
- Меньше готовых примеров и аудит-кейсов.
- Документация ещё дописывается.
В 2026 году TON Foundation активно переписывает примеры и шаблоны на Tolk. Новый разработчик — должен смотреть в Tolk в первую очередь.
Что выбрать
| Сценарий | Рекомендация |
|---|---|
| Новый проект, нет легаси-кода | Tolk |
| Высокая важность gas-оптимизации | Tolk или FunC |
| Команда привыкла к TypeScript/Solidity | Tact |
| Поддержка существующего проекта на FunC | FunC |
| Учеба, понимание устройства TON | Сначала FunC для базы, потом Tolk |
Для абсолютного новичка путь:
- Изучить базовую модель TON — ячейки, асинхронные сообщения, account-as-contract.
- Сделать первый контракт на Tolk через Blueprint.
- По мере необходимости — заглядывать в FunC для глубокого контроля.
Blueprint: главный инструмент
Blueprint — это фреймворк для разработки на TON, аналог Hardhat в Ethereum. Создан TON Foundation, поддерживает все три языка контрактов.
Что внутри
- Скаффолдинг —
npm create ton@latestсоздаёт проект с примером. - Компилятор — встроена поддержка FunC, Tact, Tolk.
- Sandbox — локальный эмулятор TVM для unit-тестов.
- Деплой — скрипты для testnet/mainnet через Tonkeeper или mnemonic.
- Тестирование — Jest-based, работает через @ton/sandbox.
Создание проекта
npm create ton@latest my-contract
cd my-contract
npm install
Дальше Blueprint спросит: какой язык контракта (FunC/Tact/Tolk), как назвать главный контракт, делать ли пример. После этого получишь готовую структуру с тестами и скриптом деплоя.
Запуск тестов
npx blueprint test
Тесты выполняются в локальном sandbox — никаких сетевых вызовов, без расхода TON. Время — миллисекунды на тест.
Деплой в testnet
npx blueprint run --testnet
Скрипт спросит, как авторизоваться (через Tonkeeper по QR или mnemonic-фразу), и задеплоит контракт. Аналогично с --mainnet для продакшена.
Минимальный workflow разработки
Типичный процесс работы над контрактом:
- Скаффолдинг.
npm create ton@latest my-token. - Локальная разработка. Пишешь контракт, пишешь тесты в
tests/MyToken.spec.ts. - Локальные тесты.
npx blueprint test— должны зелёные. - Testnet деплой.
npx blueprint run --testnet. Контракт получает адрес. Дальше можешь подключиться к нему через Tonkeeper в testnet. - Ручное тестирование. Переключаешь Tonkeeper в testnet, отправляешь транзакции, проверяешь поведение через TonScan testnet.
- Аудит. Если контракт держит реальные деньги — обязательный шаг. Аудит-фирмы в TON: Certik, Trail of Bits, slowmist.com (специализированные на TON), Tonbit.
- Mainnet деплой.
npx blueprint run --mainnet. Деплой стоит 0.05–0.5 TON.
Что важно понимать про модель TON
Несколько концепций, которые отличают разработку на TON от EVM:
Каждый аккаунт — это контракт
Даже обычный кошелёк — это смарт-контракт (wallet contract). У него есть код, состояние, баланс. Когда ты «отправляешь TON», ты на самом деле дёргаешь функцию своего wallet-контракта, который шлёт сообщение получателю.
Асинхронность
Контракты не «вызывают» друг друга. Они посылают сообщения, и получатель обработает их в следующем блоке. Возврата значения «прямо сейчас» нет — нужно дизайнить логику с callback-сообщениями.
Bounce
Если получатель не смог обработать сообщение, оно «отскакивает» обратно с флагом bounced=true. Контракт-отправитель должен уметь обрабатывать bounce — иначе деньги «зависнут».
Storage fee
Контракт платит за storage из своего баланса. Если оставить контракт без TON, через несколько месяцев его state «съест» storage fee и контракт замёрзнет (frozen).
Cells и Slices
Все данные в TON хранятся в ячейках — структурах с фиксированным лимитом (1023 бит данных + 4 ссылки на другие ячейки). Большие данные — это дерево ячеек. Сериализация в ячейки и обратно — отдельный навык.
Подробнее про модель — в статье про несовместимость с EVM.
Frontend и dApp
Если ты пишешь не сам контракт, а dApp вокруг него — frontend-разработка стандартная: TypeScript, React/Vue/Svelte, что угодно.
Ключевые библиотеки:
- @ton/ton — официальный SDK для работы с TON-сетью из JS/TS.
- @tonconnect/ui-react — кнопка Connect Wallet с поддержкой всех кошельков. Подробнее — в материале про TON Connect.
- @ton/core — типы и низкоуровневые операции с ячейками.
- @ton/crypto — криптография (mnemonic, keys, signatures).
Где учиться
Бесплатные источники в 2026 году:
- docs.ton.org — официальная документация. Обновляется, есть туториалы.
- tact-lang.org — отдельная документация Tact.
- TON Hello World — пошаговый туториал «свой первый контракт».
- GitHub TON-Foundation — репозитории с примерами и образцами.
- Telegram-каналы —
@toncontests,@tondevchat,@TONresearch.
Платные курсы существуют, но для входа достаточно бесплатных материалов плюс собственная практика.
Дальше
Если хочешь сначала разобраться с архитектурой TON — полный гайд по сети. Если интересует, как dApp общается с кошельками — TON Connect. Если будешь тестировать без рисков — гайд по testnet.
Источники
Частые вопросы
Какой язык учить для TON в 2026?
Можно ли писать смарт-контракты для TON на JavaScript или Python?
Какой главный инструмент для разработки?
Как тестировать смарт-контракты, не тратя реальные TON?
Сколько стоит деплой контракта в mainnet?
Похожие материалы
- Основы28 янв. 2026 г.
TON Connect: что это, зачем нужен и как работает (2026)
TON Connect — стандарт подключения кошельков к dApps в TON. Разбираем как работает протокол, какие кошельки поддерживают
- Основы11 февр. 2026 г.
Mainnet vs Testnet TON: для чего нужны и как переключаться
Чем отличается mainnet от testnet TON, как переключить Tonkeeper в тестовую сеть, где взять бесплатный testnet TON и зачем это нужно разработчикам и.
- Основы30 дек. 2025 г.
Почему TON не EVM-совместим и что это значит
TON использует TVM вместо Ethereum Virtual Machine — почему так задумано, чем это плохо и хорошо для пользователя, и что есть EVM-мосты в экосистеме TON в 2026.