Как настроить ноду TRON (прагматичный способ)
Запустите TRON-ноду без 3 ТБ диска: Lite FullNode из снапшота, настройка systemd и Docker, таблица оборудования, расходы и точка безубыточности против API.
Большинство тех, кто ищет «tron node», хотят одного: прямого доступа к сети, через которую проходит огромная доля мирового USDT. Официальная документация отвечает на это Java-цепочкой инструментов — установить JDK 1.8, склонировать java-tron, собрать через Gradle, настроить JVM. Этот гайд вместо этого идёт прагматичным путём: готовый FullNode.jar со страницы релизов плюс снапшот Lite FullNode, что сокращает требования к диску с более чем 3 ТБ до нескольких сотен ГБ. Далее — Docker как альтернатива без Java, время синхронизации, расчёт стоимости и честная точка безубыточности по сравнению с API.
Что такое нода TRON?
Нода TRON запускает java-tron, эталонный клиент, и подключает вас к сети, которая валидирует транзакции каждые 3 секунды. Она предоставляет приложениям два API: HTTP на порту 8090 и gRPC на порту 50051. Через них можно деплоить и вызывать контракты, переводить TRX и токены, запрашивать состояние сети — нода является точкой входа для всего, что вы строите на TRON.
Клиент развивается быстрее, чем можно подумать, глядя на его цепочку JDK 8: GreatVoyage-v4.8.0 (Kant) вышла в феврале 2026 года, текущий релиз — v4.8.1.1 (Hypatia, июнь 2026). Почти каждый релиз несёт метку «mandatory upgrade», что определяет рутину обслуживания, описанную далее в этом гайде.
Роли нод, по релевантности. FullNode валидирует и ретранслирует блоки и отвечает на запросы API; почти всегда это то, что вам нужно. Witness-нода производит блоки — это зарезервировано за 27 избранными голосами TRX супер-представителями; для всех остальных флаг --witness бесполезен. По оси хранения есть два варианта: стандартный FullNode несёт полную историю транзакций — около 3 ТБ в середине 2026 года и растёт; официальные снапшоты за март 2026 весят 2,9–3,1 ТБ в зависимости от варианта — тогда как Lite FullNode стартует со снапшота только состояния размером около 100 ГБ.
Lite FullNode покрывает всё, что нужно платёжному бэкенду: текущее состояние, новые блоки, рассылку транзакций, отслеживание депозитов. Чего он не может — отвечать на вопросы об истории до своего снапшота: запрос старой транзакции по ID завершится ошибкой. Эксплорерам и аналитическим платформам нужна полная история. Большинству интеграций — нет.
Три роли рядом друг с другом, с цифрами середины 2026 года:
| Lite FullNode | FullNode (полная история) | Witness-нода (SR) | |
|---|---|---|---|
| Диск | снапшот около 100 ГБ; закладывайте 300–500 ГБ | официальные снапшоты 2,9–3,1 ТБ; закладывайте 4 ТБ | спецификация полной истории плюс запас для продакшена |
| История | со своего снапшота | полная с генезиса | полная |
| API HTTP/gRPC | да | да | да, хотя SR отделяют RPC от производства блоков |
| Производит блоки | нет | нет | да — только 27 избранных SR |
| Типичный оператор | платёжные бэкенды, интеграции | эксплореры, аналитика, архивы для комплаенса | избранные супер-представители |
Оборудование: FullNode против Lite FullNode
| Компонент | FullNode (полная история) | Lite FullNode |
|---|---|---|
| CPU | 16 ядер | 8–16 ядер |
| RAM | 32 ГБ (64 ГБ для производства блоков) | 16–32 ГБ |
| Диск | 3 ТБ+ NVMe, растёт | 300–500 ГБ NVMe (снапшот ~100–200 ГБ плюс рост) |
| Сеть | 100 Мбит/с | 100 Мбит/с |
Строки CPU и RAM расширяют официальную рекомендацию (16 ядер, 32 ГБ, «2,5 ТБ+» — написано, когда сеть была меньше). RAM на TRON важна вдвойне: один раз для кучи JVM и один раз для файлового кеша операционной системы, поэтому машина с 32 ГБ работает заметно плавнее, чем с 16 ГБ, даже для Lite-ноды.
Пошагово: Lite FullNode из релизного jar
Команды рассчитаны на Ubuntu 24.04.
1. Установить Java 8
java-tron в 2026 году всё ещё нацелен на JDK 1.8 — странность, но не подлежащая обсуждению. Более новые JVM падают при старте.
sudo apt updatesudo apt install -y openjdk-8-jdkjava -version # должна показать 1.8.x2. Создать пользователя и директории
sudo useradd --no-create-home --shell /usr/sbin/nologin tronsudo mkdir -p /opt/tron /var/lib/tronsudo chown -R tron:tron /opt/tron /var/lib/tron3. Скачать релизный jar и конфиг mainnet
Сборка через Gradle не нужна; каждый релиз java-tron поставляется с готовым FullNode.jar:
cd /opt/tronsudo -u tron wget $(curl -s https://api.github.com/repos/tronprotocol/java-tron/releases/latest \ | grep browser_download_url | grep FullNode.jar | cut -d '"' -f 4)sudo -u tron wget https://raw.githubusercontent.com/tronprotocol/tron-deployment/master/main_net_config.confНа страницах релизов публикуются контрольные суммы — выполните sha256sum FullNode.jar и сравните, прежде чем запускать код, который месяцами будет держать сетевые соединения открытыми.
4. Восстановить снапшот Lite FullNode
На официальной странице снапшотов базы данных в TRON developer hub перечислены зеркала в Сингапуре и США, публикующие свежие архивы ежедневно, в вариантах LevelDB и RocksDB — берите LevelDB, если ваш конфиг не говорит иное, потому что движок базы данных должен совпадать со снапшотом. Lite-архивы следуют цели дизайна TIP-128 — около 3% полной базы данных; при полных мартовских снапшотах 2026 года в 2,9–3,1 ТБ (3,6 ТБ для варианта с историей балансов адресов) это ставит Lite-загрузку в нижний диапазон сотен ГБ. Выберите ближайшее зеркало, скопируйте актуальную ссылку и:
cd /var/lib/tronsudo -u tron wget '<PASTE_LITE_SNAPSHOT_URL>'sudo -u tron tar xzf LiteFullNode_output-directory.tgzПосле распаковки у вас должна появиться /var/lib/tron/output-directory с базой данных. Эта папка — весь секрет «синхронизации со снапшота»: нода стартует поверх этого состояния, вместо того чтобы заново проигрывать годы блоков. Если вы когда-нибудь будете восстанавливать вариант с полной историей, используйте потоковую форму, рекомендуемую зеркалами — wget -qO- '<URL>' | tar xz —, чтобы архив на 3 ТБ никогда не лежал на диске рядом со своей распакованной копией. Для Lite-архива вариант «сначала скачать, потом распаковать» не проблема.
5. systemd-юнит
Создайте /etc/systemd/system/tron.service:
[Unit]Description=TRON Lite FullNode (java-tron)After=network-online.targetWants=network-online.target
[Service]User=tronGroup=tronType=simpleRestart=alwaysRestartSec=10WorkingDirectory=/var/lib/tronExecStart=/usr/bin/java -Xmx24g -XX:+UseConcMarkSweepGC \ -jar /opt/tron/FullNode.jar \ -c /opt/tron/main_net_config.conf \ -d /var/lib/tron/output-directory
[Install]WantedBy=multi-user.targetДве детали JVM прямо из официальной документации: флаг сборщика мусора должен идти перед -jar, а не после, а -Xmx должен составлять около 80% физической RAM — 24g подходит для машины с 32 ГБ; на меньших машинах уменьшайте пропорционально. systemd останавливает сервис через SIGTERM, что соответствует инструкции kill -15 из документации. Никогда не делайте kill -9 для ноды TRON; LevelDB повреждается, и вместо ужина вы будете восстанавливать снапшот.
Откройте P2P-порт, держите API-порты приватными:
sudo ufw allow 18888 comment 'tron p2p'Порты 8090 и 50051 не несут никакой аутентификации. Они остаются закрытыми для интернета.
6. Запустить и проверить
sudo systemctl daemon-reloadsudo systemctl enable --now tronjournalctl -fu tronКак только появятся сообщения о блоках, проверьте высоту:
curl -s http://127.0.0.1:8090/wallet/getnowblock | jq '.block_header.raw_data.number'Сравните число с последним блоком на tronscan.org; curl http://127.0.0.1:8090/wallet/getnodeinfo дополнительно показывает число пиров и статус синхронизации. Когда ваша высота идёт вровень с эксплорером, нода в сети.
Пара слов о производстве блоков, поскольку официальная документация посвящает этому немало страниц: witness-нода имеет смысл только для 27 избранных супер-представителей. Механика — флаг --witness плюс приватный ключ SR в списке localwitness файла main_net_config.conf, или вариант с keystore и паролем, если вы отказываетесь от ключей в открытом виде, — задокументирована в апстриме. Для всех остальных правильная цель — обычный FullNode.
Docker вместо Java
Все топовые гайды по TRON обходят Docker стороной, хотя официальный образ делает требование JDK 8 чужой проблемой:
docker pull tronprotocol/java-trondocker run -d --name tron --restart unless-stopped \ -p 127.0.0.1:8090:8090 -p 127.0.0.1:50051:50051 \ -p 18888:18888 -p 18888:18888/udp \ -v /var/lib/tron/output-directory:/java-tron/output-directory \ tronprotocol/java-tronМонтирование тома использует Lite-снапшот из шага 4, поэтому запуск контейнера не является пересинхронизацией. Привязка 8090 и 50051 к 127.0.0.1 держит API приватными, пока P2P-порт остаётся доступным. Для кастомных настроек смонтируйте свой main_net_config.conf в контейнер и передайте -c как аргумент команды; без этого образ работает с настройками mainnet по умолчанию. Если на вашем хосте уже запущены другие контейнеры, это более чистая настройка — одно обновление образа заменяет весь стек Java.
Время синхронизации и работа со снапшотами
Арифметика, а не обещания. Lite-архив на 150 ГБ при устойчивых 50 МБ/с скачивается примерно за 50 минут; распаковка добавляет минуты на NVMe. Снапшоту максимум сутки, а TRON производит около 28 800 блоков в день при своём 3-секундном интервале — здоровая нода импортирует гораздо быстрее реального времени, поэтому догонка стоит от минут до нескольких часов. Итого: рабочий Lite FullNode за один вечер.
Для ноды с полной историей та же арифметика бьёт больнее: 3 ТБ+ при 100 МБ/с означают более 8 часов загрузки ещё до начала распаковки, а синхронизация с генезиса без всякого снапшота тянется неделями. Одну асимметрию стоит знать: java-tron поставляется с инструментом, который уменьшает базу данных FullNode до формата Lite, но пути обратно из Lite в полный формат нет — если вам когда-нибудь понадобится полная история, начинайте с полного снапшота.
Потоки событий и gRPC
Опрашивать блоки по HTTP работает, но java-tron умеет и пушить данные. Механизм подписки на события, включаемый в блоке event.subscribe файла main_net_config.conf, публикует триггеры для новых блоков, транзакций, логов контракта и событий контракта — во встроенную очередь ZeroMQ для лёгких настроек, или через плагины в Kafka или MongoDB для настоящих пайплайнов.
Для обнаружения депозитов это заменяет сканирование блоков: подписаться на события контракта, фильтровать по контракту USDT, сверять получателя со своими адресами клиентов. Одна деталь решает вопрос корректности. Простые триггеры срабатывают, как только приходит блок, но блок TRON становится необратимым только после подтверждения достаточным числом супер-представителей; варианты solidified-триггеров срабатывают именно в этот момент, и именно из них следует зачислять баланс клиента. Депозит, зачисленный из несолидифицированного блока, может — редко — исчезнуть при реорганизации.
Второй машинный интерфейс — gRPC на порту 50051: те же операции с кошельком, что и HTTP, но типизированные через protobuf и быстрее на вызов под нагрузкой, поэтому большинство индексаторов и бэкендов бирж на TRON используют именно его. Практичное разделение: gRPC для массовых чтений вашего индексатора, HTTP для точечных проверок вроде curl-запросов в этом гайде, и solidity API (порт 8091, если включён) для запросов, которые должны видеть только необратимое состояние.
Сколько стоит нода TRON
Путь расчёта, а не прайс-лист. Lite FullNode требует 8–16 ядер, 32 ГБ RAM и около 500 ГБ NVMe — территория VPS верхнего среднего уровня или бюджетного выделенного сервера, что у европейских хостеров как порядок величины означает от среднего двузначного до нижнего трёхзначного числа евро в месяц. Ноде с полной историей нужен класс 3 ТБ+ NVMe, то есть полноценный выделенный сервер в нижнем-среднем трёхзначном диапазоне.
Добавьте свои часы: полдня на настройку по этому гайду, обновления java-tron раз в несколько месяцев и периодическое обновление снапшота после сбоя. Lite FullNode — редкий случай, когда самостоятельный хостинг блокчейн-инфраструктуры действительно дёшев, пока ничей доход не зависит от того, что она работает и в 3 часа ночи.
Мониторинг и проверки здоровья
Всё, что стоит проверять, находится за одним эндпоинтом. /wallet/getnodeinfo за один вызов возвращает версию клиента, число пиров, последний блок и последний солидифицированный блок:
curl -s http://127.0.0.1:8090/wallet/getnodeinfo | jq \ '{version: .configNodeInfo.codeVersion, peers: .currentConnectCount, head: .block, solidified: .solidityBlock}'Здоровая нода показывает голову, продвигающуюся каждые 3 секунды, и солидифицированный блок примерно на 19–20 блоков позади — это глубина подтверждения в две трети от 27 SR, около минуты времени сети. Для алертинга сравнивайте свою голову с tronscan или второй нодой каждые несколько минут и поднимайте тревогу, когда разрыв превышает 40 блоков, две минуты времени сети. systemctl is-active tron плюс число пиров из того же вызова покрывает liveness.
Поскольку эта нода — JVM, следите за памятью отдельно: jstat -gcutil $(pgrep -f FullNode.jar) 10s показывает давление сборки мусора, и растущее время full-GC появляется в этом выводе раньше, чем нода начинает отставать. Дополните это df -h /var/lib/tron с порогом 85% — Lite-нода растёт медленно, но растёт, и тот же cron, который присылает вам статус синхронизации по почте, может бесплатно прихватить и строку по диску.
Обслуживание и обновления
Релизы java-tron выходят раз в несколько месяцев, и большинство несёт метку «mandatory upgrade» — Kant (v4.8.0, февраль 2026), Democritus (v4.8.1) и Hypatia (v4.8.1.1, июнь 2026) все три. Mandatory означает, что сеть активирует изменения правил по расписанию, и старые версии оказываются на неправильной стороне консенсуса — поэтому относитесь к релизам TRON так же, как операторы BSC относятся к хардфоркам: подпишитесь на ленту релизов tronprotocol/java-tron и обновляйтесь в объявленном окне.
Обновление сохраняет базу данных. Скачайте новый FullNode.jar, сравните sha256sum со страницей релиза, остановите сервис (systemd отправляет SIGTERM — это задокументированное чистое завершение), замените jar в /opt/tron, запустите заново. Нода проигрывает несколько пропущенных минут и вскоре снова оказывается на голове.
Две более медленные задачи заслуживают места в списке. Lite-база растёт вместе с состоянием плюс накапливающимся хвостом блоков; когда рост становится некомфортным, восстановите свежий Lite-снапшот — тот же шаг, что и при восстановлении после сбоя, и причина, по которой эта настройка делает восстановление дешёвым. И следите за требованием к Java: стандартная сборка x86 в середине 2026 года всё ещё нацелена на JDK 1.8, тогда как v4.8.1 добавила ARM-сборки на JDK 17. Ограничение ослабевает, но пока release notes не говорят иначе, стандартный сервер остаётся на Java 8.
Безопасность: два API-порта, ноль аутентификации
Порты 8090 (HTTP) и 50051 (gRPC) принимают любого, кто может до них дотянуться — никаких токенов, никаких аккаунтов, ничего. Нода, настроенная как в этом гайде, не хранит приватных ключей, поэтому открытый порт не приводит напрямую к потере средств, но даёт незнакомцам бесплатный RPC-сервис, а интенсивные циклы запросов к эндпоинтам блоков будут съедать дисковый I/O машины, пока не начнёт голодать ваш собственный софт. Считайте, что любой доступный из интернета порт уже сканируется прямо сейчас.
Файрвол из шага 5 и есть политика: ufw default deny incoming, затем SSH и 18888 (TCP и UDP) — больше ничего. Когда API нужен другим машинам, туннелируйте через WireGuard или SSH, либо поставьте перед ним nginx с TLS и allowlist по IP, и даже в этом случае пробрасывайте только реально используемые эндпоинты. После каждого изменения конфигурации проверяйте, что на самом деле слушает, с помощью ss -tlnp: java-tron может открыть дополнительные порты из файла конфигурации, включая solidity API на 8091, а забытый порт — это незащищённый порт.
Особый случай. Если вы когда-нибудь разместите witness-ключ на машине, эта машина перестаёт быть инфраструктурой и становится горячим кошельком. Отделите её от обслуживания RPC и относитесь к её файлу конфигурации — который может хранить ключ в открытом виде — с той же осторожностью, что и к самому ключу.
Диагностика неполадок
Запуск немедленно падает с ошибкой версии Java
UnsupportedClassVersionError или похожая ошибка означает, что JVM версии 11 или новее. Выберите Java 8 через sudo update-alternatives --config java, либо вовсе обойдите проблему с помощью образа Docker.
OutOfMemoryError или паузы GC на несколько минут
-Xmx настроен неправильно. Следуйте правилу 80% от RAM, но оставьте несколько ГБ для файлового кеша ОС и не размещайте рядом другие прожорливые по памяти сервисы. На машине с 16 ГБ потолок — -Xmx12g.
Нода запускается, но остаётся на высоте снапшота
Нет пиров. Проверьте, что порт 18888 открыт для TCP и UDP, посмотрите число пиров в /wallet/getnodeinfo, проверьте часы через timedatectl — NTP должен быть активен. Сразу после первого запуска дайте обнаружению пиров несколько минут, прежде чем копать дальше.
Ошибки базы данных после сбоя или перезагрузки
kill -9, OOM-килл или потеря питания повреждают базу данных. Самое быстрое решение — оно же предусмотренное: удалить output-directory, восстановить свежий Lite-снапшот, перезапустить — это и есть выгода от небольшого размера снапшота. Профилактика: всегда останавливайте через systemd и держите достаточно свободной RAM, чтобы ядро никогда не убивало Java по OOM.
Нода продолжает отставать от головы
Пиры подключены, блоки приходят, но разрыв с tronscan растёт. Проверяйте в таком порядке: задержку диска (бенчмарк случайного чтения fio — LevelDB на сетевом хранилище или SATA — классическая причина), давление GC (jstat -gcutil, см. раздел мониторинга), затем конкуренцию за CPU от соседних воркладов. 3-секундный ритм TRON прощает короткие заминки; отставание, растущее часами, означает, что машина не справляется, и никакой флаг конфигурации не исправит недостаточное железо.
Диск заполняется
df -h, затем du -h --max-depth=2 /var/lib/tron. Обычная находка — забытый архив снапшота: .tgz может соперничать по размеру с распакованной базой данных. Если сама output-directory переросла том, восстановите новейший Lite-снапшот на диске большего размера; восстановление одновременно сбрасывает накопившийся хвост блоков. Алерт на 85% из раздела мониторинга превращает это в запись в календаре, а не в простой.
Зачем вообще запускать ноду TRON: USDT
Главный ответ — USDT-TRC20. Низкие комиссии и 3-секундные блоки сделали TRON рельсой по умолчанию для бирж и платёжных провайдеров, и десятки миллиардов долларов USDT циркулируют в сети. Собственная нода позволяет отслеживать депозиты клиентов и рассылать выплаты без посредника, именно поэтому платёжные компании спрашивают про ноды TRON гораздо чаще, чем про большинство других сетей.
Механика заслуживает ещё одного уровня детализации, потому что она определяет архитектуру. Депозит USDT — это не перевод TRX, а вызов смарт-контракта USDT, поэтому он никогда не появляется в простых запросах баланса TRX. Обнаружить его — значит декодировать события transfer TRC-20 из каждого блока или подписаться на них через описанный выше механизм событий, и зачислять только после солидификации: около 19 блоков, примерно минута. У выплат своя экономика. Перевод USDT потребляет energy, и кошелёк без застейканных TRX платит за эту energy, сжигая TRX — около 6,4 TRX на адрес, уже держащий USDT, и около 13,4 TRX на пустой, при цене energy в 100 Sun, действующей с proposal #104. Операции с большим объёмом вместо этого стейкают TRX ради energy — для этого и существуют механизмы freeze и delegate.
Но будьте ясны в том, что даёт голая нода: только эндпоинты HTTP и gRPC, не более. Обнаружение депозита USDT клиента означает сканирование каждого блока на события transfer TRC-20 по списку ваших адресов, с самостоятельной обработкой подтверждений и повторов. А система комиссий TRON — bandwidth, energy, freeze TRX, спонсирование комиссий для пользователей — сама по себе отдельная область изучения; калькулятор комиссий TRON показывает, во что реально обходится перевод USDT, прежде чем вы начнёте строить вокруг этого систему.
Часто задаваемые вопросы
Сколько места на диске нужно ноде TRON?
Lite FullNode стартует со снапшота размером около 100 ГБ; закладывайте 300–500 ГБ NVMe на рост. FullNode с полной историей — около 3 ТБ в середине 2026 года: официальные снапшоты за март 2026 весят 2,9–3,1 ТБ, и цифра продолжает расти.
Можно ли запустить ноду TRON на Windows?
Официально java-tron нацелен на Linux и macOS. На Windows практичный путь — образ Docker, который фиксирует всё окружение, включая Java 8.
Приносит ли запуск ноды TRON доход в TRX?
Нет. Награды за блоки через стейкинг идут 27 избранным супер-представителям и их избирателям. FullNode даёт независимый доступ к сети, а не доход.
Какая версия Java нужна java-tron?
JDK 1.8 для стандартной сборки x86, до сих пор в середине 2026 года; в v4.8.1 добавились ARM-сборки на JDK 17, но на обычном сервере более новые JVM падают при старте. Это самая частая ошибка настройки и причина, по которой в этом гайде есть образ Docker.
В чём разница между FullNode и Lite FullNode?
Тот же софт, другая база данных. Lite-вариант стартует с снапшота только состояния и обслуживает всё, что касается текущего состояния сети, но не может отвечать на запросы о транзакциях до своего снапшота. Платежи работают, история для блок-эксплорера — нет.
Своя нода — или API?
Честное сравнение, ведь Chaingateway продаёт альтернативу.
Держите ноду, когда читаете сеть в большом масштабе — индексирование, мониторинг сети за пределами собственных адресов, подача gRPC в собственный пайплайн — или когда политика запрещает третьи стороны. Низкая стоимость Lite FullNode означает, что тяжёлые по чтению ворклады окупаются быстро; это одна из самых дешёвых self-hosted нод среди крупных сетей.
Используйте API, когда нода была бы просто «водопроводом» для платежей. Поверх синхронизированной ноды вам всё равно придётся строить генерацию адресов на каждого клиента, обнаружение депозитов TRC-20, доставку вебхуков, хранение ключей и управление комиссиями. TRON API от Chaingateway — это именно этот слой в виде REST-эндпоинтов: импорт адресов (POST /api/v2/tron/addresses/import), отправка USDT и других токенов TRC-20 (POST /api/v2/tron/transactions/trc20) или активов TRC-10, заморозка и делегирование ресурсов для energy (POST /api/v2/tron/freeze, POST /api/v2/tron/delegate), а также получение подписанных HMAC вебхуков депозитов; неудачные доставки появляются в GET /api/v2/tron/webhooks/notifications/failed и могут быть отправлены заново через эндпоинт retry.
Точка безубыточности как расчёт: (сервер + обновления снапшотов + ваши часы × ваша ставка) против плана на /ru/pricing/. Для сценариев депозит-и-выплата сторона API остаётся меньше вплоть до серьёзного масштаба; для чтения сети «в сыром виде» сторона ноды выигрывает почти сразу. Quickstart и гайд по вебхукам покрывают первый end-to-end тест, а 7-дневный пробный период не требует KYC (регистрация).
Также используете EVM-сети? См. гайды по настройке для Ethereum и BNB Smart Chain.
Готовы собрать это сами? Получите свой API-ключ — 7-дневный пробный период, без карты — или посмотрите API Tron для полного справочника по эндпоинтам.