Розгортування ноди 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 для staking).
Типи нод TON
Full node — скачує та верифікує всі блоки, зберігає поточний стан. Достатня для більшості завдань: читання даних, відправка транзакцій, мониторинг.
Archive node — full node + вся історія станів. Потрібна для індексації історичних даних. Вимагає значно більше дискового простору (кілька терабайт).
Lite node — не верифікує всі блоки, довіряє full/archive нодам. Підходить для легких клієнтів.
Validator node — full node з правом створювати блоки. Вимагає stake та постійний uptime.
Системні вимоги
| Тип ноди | CPU | RAM | Диск | Мережа |
|---|---|---|---|---|
| Full node | 8+ ядер | 16 ГБ | 500 ГБ NVMe SSD | 100 Мбіт/с |
| Archive node | 16+ ядер | 32-64 ГБ | 4+ ТБ NVMe | 1 Гбіт/с |
| Validator | 16+ ядер | 64 ГБ | 1 ТБ NVMe | 1 Гбіт/с (стабільна) |
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 # додавання ключа
# Поповнення кошельку валідатора
> send AMOUNT # потрібно мінімум ~100k TON для staking
# Участь в 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 дні.







