Развёртывание ноды TON
TON (The Open Network) — технически интересный блокчейн с динамическим шардингом и бесконечным шардингом. Архитектурно он сильно отличается от Ethereum: нет EVM, есть TVM (TON Virtual Machine), смарт-контракты на FunC/Tact, а синхронизация ноды требует понимания иерархии masterchain + workchain + shardchain.
Зачем запускать собственную ноду: снизить latency при работе с TON API, снять зависимость от публичных endpoint'ов (tonapi.io, toncenter.com), получить доступ к полным данным для индексации, или участвовать в сети как validator (требует 100 000+ TON для стейкинга).
Типы нод TON
Full node — скачивает и верифицирует все блоки, хранит текущее состояние. Достаточна для большинства задач: чтение данных, отправка транзакций, мониторинг.
Archive node — full node + вся история состояний. Нужна для индексации исторических данных. Требует значительно больше дискового пространства (несколько терабайт).
Lite node — не верифицирует все блоки, доверяет full/archive нодам. Подходит для легковесных клиентов.
Validator node — full node с правом создавать блоки. Требует stake и постоянный uptime.
Системные требования
| Тип ноды | CPU | RAM | Диск | Сеть |
|---|---|---|---|---|
| Full node | 8+ cores | 16 ГБ | 500 ГБ NVMe SSD | 100 Mbps |
| Archive node | 16+ cores | 32-64 ГБ | 4+ ТБ NVMe | 1 Gbps |
| Validator | 16+ cores | 64 ГБ | 1 ТБ NVMe | 1 Gbps (стабильный) |
NVMe обязателен — SATA SSD не справится с нагрузкой на I/O при синхронизации. HDD исключён.
Развёртывание через mytonctrl
MyTonCtrl — официальный инсталлятор от TON Foundation. Ubuntu 20.04/22.04.
# Обновление системы
apt update && apt upgrade -y
# Установка mytonctrl
wget https://raw.githubusercontent.com/ton-blockchain/mytonctrl/master/scripts/install.sh
chmod +x install.sh
bash install.sh -m full # -m full для full node, -m validator для валидатора
Установка запускает компиляцию TON из исходников — занимает 30-60 минут в зависимости от процессора.
После установки:
# Запуск интерактивного CLI
mytonctrl
# Внутри mytonctrl
> status # статус синхронизации
> getmasterchaininfo # информация о masterchain
> getstatus # общий статус ноды
Первоначальная синхронизация full node — от нескольких часов до нескольких дней в зависимости от скорости интернета и I/O дисков.
Конфигурация и файлы
Конфигурационные файлы после установки:
-
/var/ton-work/db/config.json— основной конфиг ноды -
/var/ton-work/db/keyring/— ключи ноды -
/var/ton-work/log— логи
Логи в реальном времени:
journalctl -u validator -f
# или
tail -f /var/ton-work/log
Важные параметры в config.json:
-
liteservers— список lite server endpoint'ов для соединения -
validator.adnl_id— ADNL-адрес ноды в P2P сети TON
Проверка синхронизации
# В mytonctrl
> status
# Вывод включает:
# Masterchain block: 12345678 (текущий блок ноды)
# Network block: 12345700 (актуальный блок сети)
# Sync status: synchronizing (или 'synced')
Нода считается синхронизированной когда разница между локальным и сетевым блоком < 10-20 блоков.
Lite Server для приложений
Для подключения своих приложений к ноде нужен Lite Server. В config.json добавляем:
{
"liteservers": [
{
"@type": "liteserver.desc",
"id": {
"@type": "pub.ed25519",
"key": "YOUR_LITE_SERVER_PUBLIC_KEY"
},
"port": 43678
}
]
}
Генерация ключей:
generate-random-id -m keys -n liteserver
Подключение через @ton/ton (JavaScript SDK):
import { LiteClient, LiteRoundRobinEngine, LiteSingleEngine } from 'ton-lite-client';
const engine = new LiteSingleEngine({
host: `tcp://YOUR_SERVER_IP:43678`,
publicKey: Buffer.from('YOUR_LITE_SERVER_PUBLIC_KEY', 'base64'),
});
const client = new LiteClient({ engine });
const masterInfo = await client.getMasterchainInfo();
Настройка для validator ноды
Validator требует несколько дополнительных шагов помимо базовой установки:
# В mytonctrl
> new_key # генерация validator ключа
> add_validator_key KEY_HASH # добавление ключа
# Пополнение кошелька validator
> send AMOUNT # нужно минимум ~100k TON для стейкинга
# Участие в elections
> participate_in_elections
TON проводит elections каждые ~36 часов. Validator должен отправить заявку с залоговой суммой. При успешной валидации — получает награду, при downtime или ошибках — штраф (slashing).
Мониторинг
# Prometheus метрики из mytonctrl
> setup_monitoring
# Или через кастомный скрипт
python3 /usr/src/mytonctrl/mytoncore/mytoncore.py --cli "getstatus" | \
python3 -c "import sys, json; data=json.load(sys.stdin); print(data['masterchainblocktime'])"
Ключевые алерты:
- Нода не синхронизирована > 5 минут
- Для валидатора: пропущены > 2 consecutive раунда
- RAM > 80% (утечки памяти в validator процессе — известная проблема)
Типичные проблемы
Out of disk space во время синхронизации. TON активно пишет на диск. Минимум 500 ГБ свободного места до начала синхронизации.
ADNL connectivity. TON использует нестандартный P2P протокол ADNL. Порт UDP 30303 (по умолчанию) должен быть открыт. Проверить: sudo ufw allow 30303/udp.
Compilation failures. TON компилируется из C++ исходников. Требует cmake >= 3.16, clang-14+ или gcc-10+. На старых Ubuntu — установить вручную.
Validator downtime штрафы. Если validator нода падает во время валидационного раунда — возможен slashing. Настройте мониторинг с алертами по SMS/телефону, не только email.
Срок развёртывания: full node — 1 день (установка + синхронизация). Validator node с настройкой мониторинга и участием в elections — 2-3 дня.







