Tron网络结构

Tron网络采用Peer-to-Peer(P2P)的网络架构,网络中的节点地位对等。网络中的节点有SuperNode、FullNode、SolidityNode三种类型,SuperNode主要用于生成区块,FullNode用于同步区块、广播交易,SolidityNode用于同步固化的区块。任何部署运行Tron代码的设备都可以加入Tron网络并作为一个节点,和Tron网络中的其他节点有相同的地位,他们可以创建交易,广播交易,同步区块等,也可以作为SuperNode的候选人参与选举。

image

SuperNode介绍

超级代表(简称SR) 是TRON网络上的记账人,一共27个,负责对网络上广播出来的交易数据进行验证,并将交易打包进区块中,他们是轮流的方式打包区块。超级代表的信息是在TRON网络上公开的,所有人都可以获取这些信息,最便捷的方式是在TRON的区块链浏览器查看超级代表列表及其信息。

最低配置要求: CPU:16核 内存:32G 带宽:100M 硬盘:1T 推荐配置要求: CPU:64核及以上 内存:64G及以上 带宽:500M及以上 硬盘:2T及以上

FullNode介绍

FullNode是拥有完整区块链数据的节点,能够实时更新数据,负责交易的广播和验证,提供操作区块链的api和查询数据的api。

最低配置要求: CPU:16核 内存:32G 带宽:100M 硬盘:1T 推荐配置要求: CPU:32核及以上 内存:48G及以上 带宽:500M及以上 硬盘:2T及以上

SolidityNode介绍

SolidityNode是只从自己信任的FullNode同步固化块的节点,并提供区块、交易查询等服务。

NOTE: 原则上不鼓励继续使用 SolidityNode, 目前 FullNode 可以替代 SolidityNode 的功能.

最低配置要求: CPU:16核 内存:32G 带宽:100M 硬盘:1T 推荐配置要求: CPU:32核及以上 内存:48G及以上 带宽:500M及以上 硬盘:2T及以上

主网、测试网、私有网络

加入主网或测试网或私有网络的节点在部署时运行的是同一份代码,区别仅仅在于节点启动时加载的配置文件不同。

1. 主网

主网配置文件

2. 测试网

测试网配置文件

3. 搭建私有网络

3.1 前提

  1. 具备至少两个钱包账户的私钥与地址;如何生成钱包账户
  2. 至少部署一个SuperNode用于出块;
  3. 部署任意数量的FullNode节点用于同步区块、广播交易;
  4. SuperNode与FullNode组成了私有网络,可以进行网络发现、区块同步、广播交易;

3.2 部署

3.2.1 步骤一:部署超级节点
  1. 下载private_net_config.conf

    wget https://raw.githubusercontent.com/tronprotocol/tron-deployment/master/private_net_config.conf
    
  2. 在localwitness中添加自己的私钥

  3. 设置genesis.block.witnesses为私钥对应的地址
  4. 设置p2p.version为除了11111之外的任意正整数
  5. 第1个SR设置needSyncCheck为false,其他可以设置为true
  6. 设置node.discovery.enable为true
  7. 运行部署脚本
nohup java -Xmx6g -XX:+HeapDumpOnOutOfMemoryError -jar FullNode.jar  --witness  -c private_net_config.conf &>/dev/null &

命令行参数说明:
--witness: 启动witness功能,i.e.: --witness
--log-config: 指定日志配置文件路径,i.e.: --log-config logback.xml
-c: 指定配置文件路径,i.e.: -c config.conf

日志文件使用: 可以修改模块的level等级来控制日志的输出,默认每个模块的level级别为INFO,比如,只打印网络模块warn以上级别的信息,可以如下修改:

<logger name="net" level="WARN"/>

配置文件中需要修改的参数:

localwitness: image witnesses: image version: image enable: image

3.2.2 步骤二:部署FullNode节点
  1. 下载private_net_config.conf

    wget https://raw.githubusercontent.com/tronprotocol/tron-deployment/master/private_net_config.conf
    
  2. 设置seed.node ip.list 为SR的ip地址和端口

  3. 设置p2p.version与超级节点的p2p.version一致
  4. 设置genesis.block 与SR中的genesis.block配置一致
  5. 设置needSyncCheck为true
  6. 设置node.discovery.enable 为true
  7. 如果FullNode和SR部署在同一台机器上,则需要修改listen.port、http端口、rpc 端口
  8. 运行部署脚本
nohup java -Xmx6g -XX:+HeapDumpOnOutOfMemoryError -jar FullNode.jar -c private_net_config.conf &>/dev/null &
命令行参数说明:
--log-config: 指定日志配置文件路径,i.e.: --log-config logback.xml。
-c: 指定配置文件路径,i.e.: -c config.conf。

日志文件使用: 可以修改模块的level等级来控制日志的输出,默认每个模块的level级别为INFO,比如,只打印网络模块warn以上级别的信息,可以如下修改:

<logger name="net" level="WARN"/>

配置文件中需要修改的参数:

ip.list: image p2p.version: image genesis.block: image needSyncCheck: image node.discovery.enable: image