Настройка Blueprint для разработки (TON)
TON — асинхронная блокчейн-платформа с архитектурой, принципиально отличающейся от EVM. Смарт-контракты пишутся на FunC или Tact, компилируются в TVM-байткод. Blueprint — официальный фреймворк для разработки, тестирования и деплоя TON-контрактов. Без него начать разработку на TON сложно: нужно вручную настраивать компилятор, тестовый runner и sandbox. Blueprint решает всё это из коробки.
Что Blueprint даёт в практике
После инициализации проекта через npm create ton@latest получаем структуру с тестами, скриптами деплоя и конфигурацией для работы с @ton/sandbox — это локальный эмулятор TVM, который позволяет тестировать контракты без обращения к реальной сети.
Ключевое отличие от Hardhat/Foundry: в TON нет глобального состояния сети в тестах. Каждый тест создаёт свой Blockchain instance через Blockchain.create(), деплоит контракты туда и работает изолированно. Это быстро (нет сетевых запросов) и детерминировано.
Структура проекта
contracts/ # FunC или Tact исходники
wrappers/ # TypeScript-обёртки над контрактами (отправка сообщений, чтение данных)
tests/ # Jest-тесты с Sandbox
scripts/ # Скрипты деплоя на testnet/mainnet
Wrappers — важная концепция Blueprint. Каждый контракт имеет TypeScript-класс, который инкапсулирует сериализацию/десериализацию cell-структур (ячеек — основного формата данных в TON). Без wrapper нужно вручную строить beginCell().storeUint(...).endCell() каждый раз при тесте.
Настройка Sandbox и первый тест
Типичная проблема при первом знакомстве: тест деплоит контракт, отправляет сообщение, но не знает как проверить результат. В EVM это просто — emit events, смотрим logs. В TON архитектура другая: контракты обмениваются сообщениями, и ответные сообщения — это отдельные транзакции.
Sandbox возвращает SendMessageResult с массивом transactions. Каждая транзакция содержит inMessage, outMessages, description. Для проверки Blueprint поставляется вместе с @ton/test-utils, который добавляет кастомные Jest-матчеры:
expect(result.transactions).toHaveTransaction({
from: deployer.address,
to: contract.address,
success: true,
});
Без этих матчеров проверка транзакций — многострочный императивный код. С ними — читаемые assertions.
Интеграция с TON Connect и деплой
Для деплоя Blueprint использует NetworkProvider — абстракцию, которая работает одинаково в testnet (Testnet через tonapi.io) и mainnet. Скрипты деплоя запускаются через npx blueprint run deployMyContract и автоматически предлагают выбрать сеть.
Частая сложность: деплой в TON — это отправка сообщения на uninit-адрес (адрес контракта вычисляется из кода и initial data до деплоя). Если initial data неправильно сериализована в wrapper, контракт задеплоится на другой адрес, чем ожидался. Проверяем адрес через Contract.address в wrapper и сравниваем с tonscan.org до фактического деплоя.
Конфигурация для нескольких контрактов
В проектах с несколькими взаимодействующими контрактами важно правильно настроить порядок деплоя и передачу адресов. Blueprint поддерживает это через параметры скриптов. Для мастер-контракта, который хранит адреса дочерних:
- Деплой дочернего контракта → получаем адрес
- Деплой мастера с адресом дочернего в initial data
- Верификация связи через Sandbox-тест
Сроки
Базовая настройка Blueprint для нового проекта (инициализация, настройка Sandbox, первый контракт с тестами) — 4-8 часов. Полноценная среда разработки с CI/CD через GitHub Actions и деплоем на testnet/mainnet — 1-2 рабочих дня.







