๐ฅ๏ธ Introduction to TRON Nodes
A TRON full node is a computer that runs the TRON blockchain software (Java-tron) and maintains a complete copy of the TRON ledger. Nodes are the backbone of the TRON network โ they validate transactions, propagate blocks, and serve data to other nodes and applications.
Running your own full node gives you direct access to the blockchain without relying on third-party RPC providers. This is essential for developers building dApps, exchanges processing high volumes, or anyone who wants to contribute to the network's decentralization.
Benefits include: full sovereignty over your data, no rate limits on API calls, lower latency for transaction submission, and direct participation in the TRON network. You also help maintain the network's decentralization and resilience.
โ๏ธ Hardware Requirements
Running a TRON full node requires substantial hardware resources. The blockchain database size grows over time, so it's important to plan for future scalability.
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 8-core @ 2.0 GHz | 16-core @ 2.5+ GHz |
| RAM | 16 GB | 32 GB |
| Storage | 2 TB SSD | 4 TB NVMe SSD |
| Network | 100 Mbps | 1 Gbps |
| Bandwidth | 2 TB/month | 5+ TB/month |
| OS | Ubuntu 20.04+ | Ubuntu 22.04 LTS |
The TRON blockchain database is currently ~1.5 TB and grows by approximately 10-15 GB per month. Plan for at least 3-4 TB of SSD storage to avoid running out of space in the medium term.
๐ฆ Installation Guide
The recommended way to run a TRON full node is using the official Java-tron implementation. Follow these steps:
Prerequisites
- Java 11 or 17 (OpenJDK)
- Ubuntu 20.04/22.04 LTS (or compatible Linux distribution)
- Sufficient storage space (see requirements above)
- Open firewall ports: 18888 (p2p), 50051 (gRPC), 8090 (HTTP)
Step-by-Step Installation
-
1
Install Java
sudo apt update && sudo apt install openjdk-11-jdk
-
2
Download Java-tron
Download the latest release JAR from the official TRON GitHub: wget https://github.com/tronprotocol/java-tron/releases/latest/download/FullNode.jar
-
3
Create configuration file
Generate a config.conf file using the example from the repository. You can customize parameters like storage path, network settings, and API ports.
-
4
Start the node
java -jar FullNode.jar -c config.conf
For production, use nohup or a service manager like systemd to keep the node running.
-
5
Monitor synchronization
Check the logs to see sync progress. You can also query the node's API to verify it's caught up with the network.
[Unit]
Description=TRON Full Node
After=network.target
[Service]
User=tron
ExecStart=/usr/bin/java -jar /opt/tron/FullNode.jar -c /opt/tron/config.conf
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
โ๏ธ Configuration Options
The config.conf file controls your node's behavior. Key configuration parameters:
| Parameter | Description | Example |
|---|---|---|
| storage.db.directory | Path to store blockchain database | /data/tron/db |
| node.listen.port | P2P listening port | 18888 |
| node.rpc.port | gRPC API port | 50051 |
| node.http.port | HTTP API port | 8090 |
| node.isWitness | Enable witness (block production) mode | false |
| vm.supportConstant | Enable constant optimization | true |
If you're running a node for development or private use, consider using a firewall to restrict access to RPC and HTTP ports. Only expose the P2P port (18888) to the public internet.
๐ Synchronization Process
When you start a new full node, it must synchronize with the network by downloading and verifying all blocks from genesis to the current head. This process can take 24-72 hours depending on your hardware and network speed.
You can monitor sync progress by checking the logs or using the node's HTTP API:
curl -X GET http://localhost:8090/wallet/getnowblock
# Check sync status
curl -X GET http://localhost:8090/wallet/getnodeinfo
The node is fully synced when the blockID in the response matches the latest block from the network. You can verify this against a block explorer like TronScan.
For faster synchronization, you can use the --witness flag (which enables fast sync mode) or download a pre-synced database snapshot from trusted sources. Always verify the integrity of snapshots before using them.
๐ง Node Maintenance & Monitoring
Running a full node requires ongoing maintenance to ensure it stays healthy and up-to-date.
- Regular updates โ Keep Java-tron updated with the latest releases for security patches and performance improvements.
- Disk space monitoring โ Set up alerts for disk usage. Consider using logical volumes or LVM for flexible storage expansion.
- Log rotation โ Configure logback or use external tools like logrotate to prevent logs from consuming all available disk space.
- Resource monitoring โ Use tools like Prometheus + Grafana to monitor CPU, RAM, disk I/O, and network usage.
- Regular backups โ Backup your node's private keys and configuration files. Consider periodic database backups for disaster recovery.
Set up automated health checks that periodically query the node's API and alert you if the node is down or lagging behind the network. This is critical for witness nodes or production infrastructure.
๐ณ๏ธ Witness Node (Validator) Configuration
A witness node (also called a validator node) is a full node that participates in block production. To run a witness node, you need:
- A full node with node.isWitness = true in config.conf
- A private key for the witness account (stored securely in the wallet)
- Sufficient TRX staked to be elected as a Super Representative (SR)
- High uptime (99.9%+) to avoid missing blocks and penalties
private key = "your_private_key_here"
# In config.conf
node.isWitness = true
wallet.privateKey = "your_private_key_here"
Never store your witness private key in plain text in production. Use hardware security modules (HSM) or secure key management solutions. Consider using a multi-signature setup for added security.