Acton v1.0 — Foundry для TON: полный гайд (2026)
Acton v1.0 от TON Foundation вышел 11 мая 2026: один Rust-CLI, который заменяет blueprint, sandbox, Misti и func.
- Автор
- TON Adoption Team · исследовательская группа проекта
- Опубликовано
Содержание28разделов
- Что такое Acton
- Что заменяет Acton
- Архитектура: 30 Rust-крейтов
- Установка: для Windows — только WSL
- Поставить WSL
- Установить Acton внутри WSL
- Node.js 22 LTS для frontend и func2tolk
- Docker-альтернатива
- Tolk: язык, на котором всё строится
- Главные команды
- Quickstart за пять минут
- Build и test
- Lint
- Format
- Wallet и deploy
- Verification
- Mutation testing — главное оружие
- Fuzzing через @test.fuzz
- On-chain retrace — debugger для реальных транзакций
- func2tolk: автоконвертация FunC в Tolk
- Какие проекты можно делать первой волной
- Прикладные проекты
- Toolchain-проекты
- Контент и обучение
- Грантовые возможности TON Foundation
- Когда выбирать Acton, а когда нет
- Связанные материалы
- Ссылки
TL;DR. 11 мая 2026 TON Foundation выпустила Acton v1.0 — написанный на Rust all-in-one CLI, который консолидирует разрозненный TON-стек под одной командой. Blueprint, @ton/sandbox, Misti, func-компилятор, deployer, debugger — всё это теперь подкоманды acton. Бонусом — mutation testing, fuzzing через @test.fuzz, on-chain acton retrace для replay реальных транзакций и автоматическая конвертация FunC → Tolk. Это первый stable toolkit уровня Foundry на TON. Окно для first-mover-проектов — 2-4 месяца.
Что такое Acton
Acton — это Foundry для TON. Аналогия буквальная: то же сочетание скорости (Rust-runtime), интегрированности (всё в одном CLI) и культурного сдвига (старый JS-стек уходит, на смену приходит нативный быстрый инструмент).
До Acton TON-разработка выглядела так: func отдельно, blueprint отдельно, @ton/sandbox отдельно, Misti статанализатор отдельно, debugger-а нет, mutation testing нет, нативного fuzzing нет. Каждый из этих инструментов писался независимо, с разными договорённостями, разными конфигами.
После Acton — один манифест Acton.toml, одна команда, унифицированный workflow. Под капотом — 30 Rust-крейтов, от парсера Tolk до TVM-эмулятора и индексатора.
Что заменяет Acton
| Что было до | Что теперь |
|---|---|
func (FunC compiler) | acton build |
tact (Tact compiler) | Tolk вместо Tact для новых проектов |
blueprint (npm-фреймворк) | acton new |
@ton/sandbox (npm) | acton test (Rust-runtime, в разы быстрее) |
| Ручные deploy-скрипты | acton script ... --net testnet |
| TON-CLI отдельно | acton wallet ... |
| Misti (статанализатор) | acton check — 29 lint-правил из коробки |
| Нет debugger-а | acton ... --debug (DAP-протокол, IDE-интеграция) |
| Нет mutation testing | acton test --mutate |
| Нет on-chain replay | acton retrace <HASH> --debug |
| Нет formatter-а | acton fmt |
| Нет verification | acton verify --net mainnet |
Это гигантская консолидация инфраструктуры. Не маркетинговая, а реальная: каждая правая колонка — рабочая команда v1.0.
Архитектура: 30 Rust-крейтов
Под капотом Acton — модульный pipeline:
tolk-syntax + tolk-resolver + tolk-analysis + tolk-ty
↓
tolk-compiler ← компилятор Tolk → TVM bytecode
↓
tasm-core + tasm-syntax ← TVM assembler
↓
ton-emulator ← локальный TVM-эмулятор для тестов
↓
ton-executor ← исполнение транзакций
↓
ton-networks + ton-api ← интеграция с testnet/mainnet
↓
ton-localnet + acton-localnet-ui ← локальная цепь
Дополнительные крейты:
tolk-linter— 29 правил статанализаtolk-fmt— formattertolk-dataflow— CFG и dataflow-анализ для линтераacton-debug+dap-client— debugger через Debug Adapter Protocolton-indexer— индексация on-chain состоянияacton-test-ui— браузерная UI для тестовfift-syntaxиtlb-syntax— поддержка Fift и TL-B (Type Language Block)
Что это даёт на практике: тесты идут в разы быстрее, чем на @ton/sandbox (Node.js-JIT vs нативный Rust). Tolk-компилятор не транспилируется в FunC, он сразу собирает TVM-байткод. Линтер с dataflow-анализом — на уровне профессиональных анализаторов вроде Slither или Mythril в EVM-мире.
Установка: для Windows — только WSL
Native Windows не поддерживается. Поддерживаемые платформы:
- macOS (ARM64, x86_64)
- Linux GNU (x86_64, ARM64), Ubuntu 20.04+
На Windows — обязательно WSL с Ubuntu 20.04 или новее. Рекомендую 22.04 или 24.04 LTS.
Поставить WSL
wsl --version
wsl --list --verbose
wsl --install -d Ubuntu-24.04
После установки войти в WSL:
wsl -d Ubuntu-24.04
Установить Acton внутри WSL
Официальный installer (без sudo, кладёт бинарь в ~/.local/bin/):
curl -LsSf https://github.com/ton-blockchain/acton/releases/latest/download/acton-installer.sh | sh
Альтернативно — tarball:
wget https://github.com/ton-blockchain/acton/releases/latest/download/acton-x86_64-unknown-linux-gnu.tar.gz
tar -xzf acton-*.tar.gz
sudo mv acton /usr/local/bin/
acton --version
Должно вывести 1.0.0 и build-хеш.
Node.js 22 LTS для frontend и func2tolk
Linux-native Node нужен для двух кейсов: команды acton func2tolk (использует npx @ton/convert-func-to-tolk) и шаблонов с --app (Vite + React).
cd /tmp && wget https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-x64.tar.xz
mkdir -p ~/node_extract && cd ~/node_extract
tar -xJf /tmp/node-v22.11.0-linux-x64.tar.xz
mv node-v22.11.0-linux-x64 ~/.local/node
В ~/.bashrc:
export PATH="$HOME/.local/node/bin:$HOME/.local/bin:$PATH"
Важный подводный камень: Windows-native Node из /mnt/c/Program Files/nodejs/ не работает с Linux-side путями. npx падает с ошибкой про UNC-пути. Поэтому Node ставится именно внутрь WSL.
Docker-альтернатива
Если не хочется возиться с WSL:
docker run --rm ghcr.io/ton-blockchain/acton:1.0.0 --version
docker run --rm -v "$PWD":/workspace -w /workspace ghcr.io/ton-blockchain/acton:1.0.0 build
Tolk: язык, на котором всё строится
Acton — Tolk-first. Tolk — официальный преемник FunC от TON Core team, разработан как ответ на главные жалобы по FunC: нечитаемый stack-manipulation код и отсутствие современных типов.
Что характеризует Tolk:
- Синтаксис близкий к TypeScript (намного дружелюбнее FunC)
- Сильная типизация:
int,coins,address,cell,slice, плюс custom-типы - Поддерживает structs, enums, lazy types, pattern matching
- Компилируется напрямую в TVM bytecode, без транспиляции
- Имеет стандартную библиотеку
@stdlibи Acton-расширения@acton
Минимальный пример — counter из шаблона:
import "@stdlib/tvm-dicts"
struct Storage {
id: uint32
owner: address
counter: int32
}
@inline
fun loadStorage(): Storage {
return Storage.fromCell(contract.getData())
}
@inline
fun saveStorage(storage: Storage) {
contract.setData(storage.toCell())
}
struct IncreaseCounter {
static OPCODE = 0x12345678
queryId: uint64
delta: int32
}
fun onInternalMessage(in: InMessage) {
val storage = loadStorage()
val body = in.body
if (body.matches<IncreaseCounter>()) {
val msg = body.parseAs<IncreaseCounter>()
assert (in.senderAddress == storage.owner) throw Errors.NotOwner
storage.counter += msg.delta
saveStorage(storage)
}
}
Эквивалентный FunC — ~30 строк нечитаемого stack-manipulation. Для senior-разработчика с TypeScript/Python бэкграундом learning curve Tolk-а — две недели вместо месяца на FunC.
Главные команды
Quickstart за пять минут
acton new my_first --template counter --app
cd my_first
acton build
acton test
acton wallet new --name deployer --local --airdrop --version v5r1 --secure false
acton run deploy-testnet
npm ci && npm run dev
Через пять минут — задеплоенный counter-контракт на testnet с React-фронтом, подключение через TON Connect. Шаблоны: counter, empty, jetton (TEP-74), nft (TEP-62), w5-extension (расширение для WalletV5R1).
Build и test
acton build # компиляция всего проекта
acton test # все тесты
acton test --coverage # с coverage
acton test --filter "increase" # только тесты с "increase" в имени
acton test --ui --coverage # браузерный UI с подсветкой строк
acton test --debug --debug-port 4711 # с DAP debugger-ом (VS Code attach)
Coverage показывает и line-percent, и branch-percent. На counter-шаблоне линии покрываются на 100%, но три branches остаются непокрытыми — нормальный сигнал, что тесты проверяют hot path, но edge-кейсы пропущены.
Lint
acton check # все правила
acton check Counter # один контракт
acton check --explain E013 # детальное описание правила
acton check --fix # авто-фиксы простых
29 встроенных правил — от security-критичных (E007 no-bounce-handler, E013 unauthorized-access, E018 random-requires-initialization, E019 divide-before-multiply) до стилистических. E013 использует CFG + dataflow analysis — детектит storage.save() без предшествующего admin sender-check, что эквивалентно permissionless write. Найти такой баг вручную сложно, Acton делает это автоматически.
Format
acton fmt # форматировать
acton fmt --check # CI-проверка (exit 1 если есть unformatted)
Wallet и deploy
acton wallet new --name deployer --local --version v5r1 --secure false
acton wallet airdrop deployer # testnet faucet
acton wallet list --balance
acton script scripts/deploy.tolk # эмуляция (без отправки)
acton script scripts/deploy.tolk --fork-net testnet # эмуляция с live testnet state
acton script scripts/deploy.tolk --net testnet # реальный send
Флаг --secure false обходит интерактивный prompt про keychain — в WSL keychain-а нет, поэтому mnemonic сохраняется в wallets.toml (он автоматически попадает в .gitignore).
Verification
acton verify Counter --net mainnet --address EQB...
Acton компилирует локальный source, грузит на verifier-бэкенд, собирает подписи и сабмитит verification tx. Verified-контракт публикуется на tonviewer и tonscan — аналог Etherscan verification.
Mutation testing — главное оружие
acton test --mutate --mutate-contract Counter
Acton автоматически модифицирует код контракта: меняет += на -=, == на !=, убирает assert, переворачивает >= в >. Затем запускает тесты на каждой мутации. Если все тесты прошли при изменённом коде — мутация survived, и это значит, что данная строка по факту не проверяется тестами.
Пример вывода на counter-шаблоне:
Total mutants: 15
Killed: 12
Survived: 3
Mutation Score: 80.0%
◉ Counter.tolk:29 Remove assert storage.owner == in.senderAddress SURVIVED
◉ Counter.tolk:30 Replace >= with > SURVIVED
◉ Counter.tolk:37 Remove assert in DecreaseCounter SURVIVED
«Remove assert на line 29» — означает, что тесты не проверяют, что non-owner не может decrement-нуть counter. То есть в официальном шаблоне TON Foundation. Это не баг TON-команды — это иллюстрация того, насколько mutation testing вскрывает реальные дыры в покрытии даже там, где coverage показывает 100%.
Для аудита и bug-hunting-а это идеальный инструмент: берёшь чужой контракт, прогоняешь mutation на его тестах, смотришь survivors, и каждый survivor — потенциальный bug-вектор. «Вот строка X, изменение которой никем не замечается» — если можно построить эксплойт, использующий это поведение, это valid bug.
Fuzzing через @test.fuzz
Fuzzing уже встроен в Acton stdlib (@acton/testing/fuzz):
import "@acton/testing/expect"
import "@acton/testing/fuzz"
@test.fuzz
get fun `test balance stays bounded`(value: int) {
val bounded = fuzz.bound(value, 0, 100)
fuzz.assume(bounded != 13)
expect(bounded >= 0).toBeTrue()
}
Аннотации:
@test.fuzz— fuzz-тест с дефолтным числом runs@test.fuzz(1000)— explicit число итераций@test.fuzz({ ... })— кастомный конфиг
Helpers:
fuzz.bound(value, min, max)— clamp в диапазонfuzz.assume(condition)— discard input если condition false (аналогvm.assumeиз Foundry)
Применение: пишешь тест, проверяющий инвариант контракта (например, «total_supply всегда равен сумме всех balances»), запускаешь с fuzz — Acton прогоняет сотни сгенерированных входов. Если хоть один fail — это bug.
On-chain retrace — debugger для реальных транзакций
acton retrace <TX_HASH> --contract MyContract --debug --debug-port 4711
Это магия, которой не было ни на одном TON-инструменте до Acton. Берёшь хеш реальной транзакции из mainnet, Acton:
- Подтягивает on-chain state на момент транзакции
- Реконструирует её локально в TVM-эмуляторе
- Запускает с DAP-debugger-ом
VS Code прикрепляется к порту, можно ставить breakpoints на любой строке Tolk, делать step-into (включая inlined functions), смотреть TVM-регистры, stack frames, переменные.
Кейсы использования:
- Подозрительная активность на контракте — копируешь
tx hash, retrace в debug-режиме, step through, ищешь нарушение invariant-а - Контракт упал на mainnet — реплейишь tx, видишь точное место и значения переменных
- Хочешь понять чужой mainnet-контракт без исходников —
acton disasm+ retrace дают полную картину
func2tolk: автоконвертация FunC в Tolk
acton func2tolk path/to/contract.fc
Внутри — npx @ton/convert-func-to-tolk@1.0.0. Требует Linux-native Node.js (см. секцию «Установка»).
На вход FunC, на выход — идиоматический Tolk:
() storage::load() impure inline { ... }превращается в@inline fun storage_load() { ... }ds~load_msg_addr()превращается вds.loadAddress()throw_if(err, condition)превращается вassert(!condition) throw err- TVM opcodes автоматически переводятся в
UPPER_SNAKE_CASE-константы - Идентификаторы с
::сохраняются через backtick-escaping
Это критично для существующих FunC-кодовых баз. STON.fi v2 (4 355 строк FunC), EVAA (10 804 строки) — всё можно автоматически перевести в Tolk и применить полную мощь Acton: mutation testing, fuzzing, debugger, coverage.
Какие проекты можно делать первой волной
Релиз свежий, окно для first-mover-проектов открыто 2-4 месяца. Конкретные ниши:
Прикладные проекты
| Идея | Сложность | Время до MVP |
|---|---|---|
| Jetton-индексер с rich-API на ton-indexer крейте | Средняя | 2 недели |
| TON DNS marketplace | Средняя | 3 недели |
| NFT fractional ownership | Высокая | 6-8 недель |
| Социальные графы on-chain (mini-app) | Средняя | 4 недели |
| Кастомный staking с разными стратегиями | Высокая | 6 недель |
| Decentralized prediction market | Высокая | 8-12 недель |
Toolchain-проекты
- VS Code extension с AI-помощником для Tolk (autocomplete, bug-fix suggestions)
- Tolk-cookbook: лучшие практики, паттерны, anti-patterns
- Testing patterns library — готовые invariant-тесты как cargo/npm-пакет
- Acton plugin для bug-bounty платформ — auto-submit reports с CI
- TonScan-like explorer поверх
ton-indexerкрейта
Контент и обучение
Educational ниша на русском по Acton — пустая. Туториалы на YouTube, Telegram-канал по TON dev, платные workshops, гайд-книга в формате Gitbook — всё это сейчас без конкуренции.
Грантовые возможности TON Foundation
TON Foundation систематически финансирует инфраструктуру вокруг своих инструментов через программу ton-society/grants-and-bounties. Что обычно финансируется:
- Расширения и плагины для официальных tools (VS Code, JetBrains, Acton-плагины)
- Образовательные проекты: курсы, документация, переводы
- Индексаторы, экспонаторы, dev-tools поверх крейтов Acton
- Локализация ecosystem-контента
Размер грантов варьируется от $5k для небольших обучающих проектов до $50k+ для серьёзных инфраструктурных. Шанс на одобрение выше нормы именно сейчас — потому что Acton свежий, и Foundation активно ищет команды, которые помогут с экосистемой.
Когда выбирать Acton, а когда нет
Acton — да, если:
- Новый проект на Tolk
- Хочется mutation testing, fuzzing, retrace из коробки
- Команда готова работать в WSL/Linux
- Нужен встроенный formatter и lint
- Хочется заменить «зоопарк» из 5-7 инструментов на один CLI
Acton — пока подожди, если:
- Большая существующая FunC-кодовая база с сотнями Jest-тестов на
@ton/sandbox. Конвертация черезfunc2tolkработает, но переписывать тесты — отдельная работа. Разумная стратегия: оставаться на Blueprint, постепенно переносить новые контракты на Acton. - Tact-only проект. Tolk-first означает, что не все возможности (mutation, fuzz) одинаково работают с Tact.
- Windows без WSL и без возможности его поставить (корпоративные ограничения). Docker как fallback подходит для CI, но не для активной разработки с debugger-ом.
Связанные материалы
Acton — это инструмент уровня экосистемной инфраструктуры, и понимание его места в TON-стеке полезно соотнести с общей картиной развития проекта. Кто стоит за TON Foundation и какие у них приоритеты — мы разбираем в обзоре TON Foundation. Что планируется в ближайшие два года — в дорожной карте 2026-2027. Сравнение трёх языков TON — FunC, Tact и Tolk — в гайде для разработчиков. Когда переходить с testnet на mainnet — в материале про testnet vs mainnet. Почему TON технологически отличается от EVM-сетей — в объяснении про не-EVM-совместимость.
Ссылки
- Репозиторий Acton: github.com/ton-blockchain/acton
- Документация: ton-blockchain.github.io/acton/
- Tolk language reference: docs.ton.org/languages/tolk
- Acton libraries:
@acton/env,@acton/io,@acton/emulation/network,@acton/emulation/scripts - TON Foundation grants: github.com/ton-society/grants-and-bounties
- TON Society: society.ton.org
Acton — open-source под лицензией Apache 2.0, контрибьюции принимаются. CHANGELOG в репозитории обновляется активно — стоит перечитывать раз в две недели, чтобы не пропустить новые фичи.
Частые вопросы
Что такое Acton и чем он отличается от Blueprint?
Acton работает на Windows?
Нужно ли учить Tolk, или можно остаться на FunC/Tact?
Что такое mutation testing и зачем он нужен?
Что делает acton retrace?
Можно ли получить грант TON Foundation на инструмент вокруг Acton?
Сколько весит установка Acton?
Что выбрать — Acton или старый стек blueprint + sandbox?
Похожие материалы
- Основы15 дек. 2025 г.
TON для разработчиков: знакомство с FunC, Tact и Tolk
Какие языки используются для смарт-контрактов TON в 2026 — FunC, Tact, Tolk. Что выбрать новичку, чем отличаются, какие инструменты нужны и где учиться.
- Новости9 мар. 2026 г.
TON Foundation: кто стоит за развитием блокчейна 2026
Разбор TON Foundation — структура, ключевые люди, история отделения от Telegram, роль Max Crown и Steve Yun, появление TON Strategy Co.
- Основы11 февр. 2026 г.
Mainnet vs Testnet TON: для чего нужны и как переключаться
Чем отличается mainnet от testnet TON, как переключить Tonkeeper в тестовую сеть, где взять бесплатный testnet TON и зачем это нужно разработчикам и.
- Новости31 мар. 2026 г.
Дорожная карта TON 2026-2027: что обещают разработчики
Полный обзор roadmap TON на 2026-2027 — Catchain 2.0, AgenticKit, Rust Node, TON Pay 2.0, мост Teleport на Bitcoin, инициатива MTONGA от Telegram.
- Основы30 дек. 2025 г.
Почему TON не EVM-совместим и что это значит
TON использует TVM вместо Ethereum Virtual Machine — почему так задумано, чем это плохо и хорошо для пользователя, и что есть EVM-мосты в экосистеме TON в 2026.