К основному содержанию
T TON Adoption
Основы DEV · 2026

Acton v1.0 — Foundry для TON: полный гайд (2026)

Acton v1.0 от TON Foundation вышел 11 мая 2026: один Rust-CLI, который заменяет blueprint, sandbox, Misti и func.

Автор
TON Adoption Team · исследовательская группа проекта
Опубликовано
9 мин. чтения

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 testingacton test --mutate
Нет on-chain replayacton retrace <HASH> --debug
Нет formatter-аacton fmt
Нет verificationacton 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 — formatter
  • tolk-dataflow — CFG и dataflow-анализ для линтера
  • acton-debug + dap-client — debugger через Debug Adapter Protocol
  • ton-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:

  1. Подтягивает on-chain state на момент транзакции
  2. Реконструирует её локально в TVM-эмуляторе
  3. Запускает с 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 — open-source под лицензией Apache 2.0, контрибьюции принимаются. CHANGELOG в репозитории обновляется активно — стоит перечитывать раз в две недели, чтобы не пропустить новые фичи.

Частые вопросы

Acton — это написанный на Rust all-in-one CLI от TON Foundation, релиз v1.0.0 состоялся 11 мая 2026. Blueprint — это npm-пакет для скаффолдинга и тестов на @ton/sandbox. Acton заменяет blueprint, @ton/sandbox, func-компилятор, Misti, devtools и debugger одной командой. Runtime тестов в разы быстрее за счёт нативного Rust-эмулятора.
Native Windows не поддерживается. Нужен WSL с Ubuntu 20.04+ (рекомендую 22.04 или 24.04). Также есть Docker-образ ghcr.io/ton-blockchain/acton:1.0.0. macOS (ARM64, x86_64) и Linux GNU — поддерживаются нативно.
Acton — Tolk-first. FunC всё ещё компилируется, но новые проекты идут на Tolk. Для существующих FunC-кодовых баз есть команда acton func2tolk, которая автоматически конвертирует .fc в .tolk через npx @ton/convert-func-to-tolk. Tact поддерживается частично — не все возможности Acton работают с Tact-проектами.
Acton автоматически модифицирует контракт-код (меняет += на -=, == на !=, убирает assert и так далее) и запускает тесты на каждой мутации. Если все тесты прошли при изменённом коде — значит покрытие недостаточное, эта строка по факту не проверяется. Главный инструмент для аудита: каждая survived mutation — потенциальный bug-вектор.
Берёт хеш реальной транзакции из mainnet или testnet, реконструирует её локально и запускает с debugger-ом, breakpoints и step-into. Можно физически увидеть, что произошло в TVM при подозрительной транзакции — раньше на TON такого инструмента не было.
Да, TON Foundation систематически финансирует инфраструктуру через ton-society/grants-and-bounties. Acton-плагины, VS Code расширения, обучающие проекты, индексаторы поверх ton-indexer крейта — всё это активные направления. Релиз свежий, окно для first-mover-проектов открыто 2-4 месяца.
Бинарь Acton — около 80 МБ (статически слинкованный Rust). С Node.js 22 LTS (нужен для func2tolk и frontend-шаблонов) — суммарно около 200 МБ. Не нужны sudo права: устанавливается в ~/.local/bin/acton.
Для новых проектов на Tolk — Acton, без вариантов. Для существующих FunC-кодовых баз с большим количеством тестов на Jest — пока разумно остаться на blueprint, конвертацию делать постепенно. Mutation testing, fuzzing и retrace Acton даёт даже на конвертированных FunC-контрактах — это сильный аргумент за миграцию.

Похожие материалы