TRON Network Instructure

TRON network uses Peer-to-Peer(P2P) network instructure, all nodes status equal. There are three types of node: SuperNode, FullNode, SolidityNode. SuperNode produces blocks, FullNode synchronizes blocks and broadcasts transactions, SolidityNode synchronizes solidified blocks. Any device that deploy the java-tron code can join TRON network as a node. image

SuperNode

Super Representative(abbr: SR) is the block producer in TRON network, there are 27 SR. They verify the transactions and write the transactions into the blocks, they take turns to produce blocks. The super Representatives' information is public to everyone in TRON network. The best way to browse is using tronscan.

Recommended Hardware Configuration:
minimum requirement:
CPU: 16 cores, RAM: 32G, Bandwidth: 100M, Disk: 1T
Recommended requirement:
CPU: > 64 cores RAM: > 64G, Bandwidth: > 500M, Disk: > 20T

FullNode

FullNode has the complete block chain data, can update data in real time. It can broadcast the transactions and provide api service.

Recommended Hardware Configuration:
minimum requirement:
CPU: 16 cores, RAM: 32G, Bandwidth: 100M, Disk: 1T
Recommended requirement:
CPU: > 64 cores RAM: > 64G, Bandwidth: > 500M, Disk: > 20T

SolidityNode

SolidityNode only synchronize solidified blocks data from the fullNode it specifies, It also provie api service.

Recommended Hardware Configuration:
minimum requirement:
CPU: 16 cores, RAM: 32G, Bandwidth: 100M, Disk: 1T
Recommended requirement:
CPU: > 64 cores RAM: > 64G, Bandwidth: > 500M, Disk: > 20T

MainNet, TestNet, PrivateNet

MainNet, TestNet, PrivateNet all use the same code, only the node start configuration varies.

1. MainNet

MainNet configuration

2. TestNet

TestNet configuration

3. PrivateNet

3.1 Preconditions

  • at least two accounts generate an account
  • at least deploy one SuperNode to produce blocks
  • deploy serval FullNodes to synchronize blocks and broadcast transactions
  • SuperNode and FullNode comprise the private network
3.2 Deployment
3.2.1 Step 1: SuperNode Deployment

1. download private_net_config.conf

wget https://github.com/tronprotocol/tron-deployment/blob/master/private_net_config.conf

2. add your private key in localwitness
3. set genesis.block.witnesses as the private key's corresponding address
4. set p2p.version, any positive integer but 11111
5. set the first SR needSyncCheck = false, others can be set true
6. set node.discovery.enable = true
7. run the script

nohup java -Xmx6g -XX:+HeapDumpOnOutOfMemoryError -jar FullNode.jar  --witness  -c private_net_config.conf

command line parameters introduction:  
--witness: start witness function, i.e.: --witness  
--log-config: specify the log configuration file path, i.e.: --log-config logback.xml  
-c: specify the configuration file path, i.e.: -c config.conf 

The usage of the log file:
You can change the level of the module to control the log output. The default level of each module is INFO, for example: only print the message with the level higher than warn:
The parameters in configuration file that need to modify:
localwitness:
image
witnesses:
image
version:
image
enable:
image

3.2.2 Step 2: FullNode Deployment

1. Download private_net_config.conf

wget https://github.com/tronprotocol/tron-deployment/blob/master/private_net_config.conf 

2. set seed.node ip.list with SR's ip and port
3. set p2p.version the same as SuperNode's p2p.version
4. set genesis.block the same as genesis.block
5. set needSyncCheck true
6. set node.discovery.enable true
7. run the script

 nohup java -Xmx6g -XX:+HeapDumpOnOutOfMemoryError -jar FullNode.jar  --witness  -c private_net_config.conf

 command lines parameters  
 --witness: start witness function´╝îi.e.: --witness  
 --log-config: specify the log configuration file path, i.e.: --log-config logback.xml  
 -c: specify the configuration file path, i.e.: -c config.conf

The usage of the log file:
You can change the level of the module to control the log output. The default level of each module is INFO, for example: only print the message with the level higher than warn:
The parameters in configuration file that need to modify:
ip.list:
image
p2p.version:
image
genesis.block:
image
needSyncCheck:
image
node.discovery.enable:
image