Home指南API 参考手册
指南API 参考手册社区Discord博客FAQ漏洞赏金公告中心English(英文版)Log In
指南

节点搭建

支持的操作系统:LinuxMacOS

支持的架构及相应 JDK 版本:

  • x86_64架构:Oracle JDK 8
  • ARM64架构:Oracle JDK 17

推荐配置

  • CPU:16核
  • 内存:32G
  • SSD:2.5T以上
  • 带宽:100M

如果是超级代表搭建产块的全节点,建议配置是 CPU:32核, 内存:64G

节点部署指南

无论哪种类型的节点,部署流程都是一样的,请参考如下步骤:

1. 获取Fullnode.jar

可以通过编译源代码或者从已发布版本直接获取Fullnode.jar

编译源码

  1. 获取java-tron源码
        $ git clone https://github.com/tronprotocol/java-tron.git
        $ git checkout -t origin/master
  2. 编译
        $ cd java-tron
        $ ./gradlew clean build -x test
    编译完成之后,FullNode.jar会生成在 java-tron/build/libs/FullNode.jar

2) 启动节点

主网全节点请使用默认配置文件config.conf ;Nile 测试网节点配置以Nile官网 为准;私链节点配置请按照私链搭建章节进行设置。

  • 启动主网全节点: Fullnode作为TRON网络的入口点,拥有完整的历史数据,并提供对外访问的HTTP API和GRPC API。您可以通过全节点与TRON网络进行交互,如:资产转移、合约部署、合约交互等。主网全节点启动命令如下,并通过-c参数指定全节点的配置文件:

    $  java -Xmx24g -XX:+UseConcMarkSweepGC -jar FullNode.jar -c config.conf
    • -XX:+UseConcMarkSweepGC :指定并行垃圾回收。要放在 -jar 参数前面,不能放在最后面。
    • -Xmx :JVM堆的最大值,可以设置成物理内存的80%
  • 启动主网出块的全节点 将--witness参数添加到启动命令中,fullnode将作为出块的全节点运行。出块全节点除了支持fullnode的所有功能,它还支持区块生产和交易打包。请确保您拥有一个超级代表账户,并获得他人的投票,如果票数排在前27名,您需要启动一个出块的全节点参与区块生产。

    将超级代表地址的私钥填写到config.conf的localwitness列表中,示例如下。但如果不希望使用这种以明文的方式进行私钥指定,可以使用keystore + 密码的方式,请参考其它说明

    localwitness = [
       650950B1...295BD812
    ]

    然后执行如下命令来启动节点:

      $ java -Xmx24g -XX:+UseConcMarkSweepGC -jar FullNode.jar --witness -c config.conf

注意:对于主网和nile测试网,由于新节点启动后,需要同步的数据量较大,因此同步数据需要较长的时间。可以使用数据快照来加快节点同步速度。首先下载最新的数据快照,并将其解压至tron项目的output-directory目录下,然后再启动节点,这样节点将在数据快照的基础上进行同步。

节点启动后,可以使用命令 kill -15 进程id 来关闭全节点。

其它说明

如何使用keystore+密码的方式指定witness账户私钥

  1. 这种方式指定私钥,需要在启动节点时进行人机交互,因此请不要使用nohup命令,建议使用会话保持工具,如screen, tmux等。
  2. 注释掉节点配置文件中的localwitness配置项,取消localwitnesskeystore配置项的注释,填入keystore文件的路径,注意keystore文件需要放到启动命令执行的当前目录下或者其子目录下。如当前目录是A,keystore文件的目录是A/B/localwitnesskeystore.json,则需要配置成:
    localwitnesskeystore = [
          "B/localwitnesskeystore.json"
    ]
    注:可以使用wallet-cli项目的registerwallet命令生成 keystore + 密码。
  3. 启动出块的全节点
      $ java -Xmx24g -XX:+UseConcMarkSweepGC -jar FullNode.jar --witness -c config.conf
  4. 正确的输入密码,完成节点启动。

如何使用tcmalloc优化内存占用

为达到内存使用最优化,可以使用 google tcmalloc 替代系统 glibc malloc. 方法如下: 安装tcmalloc,然后在启动脚本中添加以下两行,不同的linux发行版tcmalloc的路径略有差异。

#!/bin/bash
  
export LD_PRELOAD="/usr/lib/libtcmalloc.so.4"
export TCMALLOC_RELEASE_RATE=10
  
# original start command
java -jar .....

在各个linux发行版上安装命令如下:

  • Ubuntu 20.04 LTS / Ubuntu 18.04 LTS / Debian stable 安装

    sudo apt install libgoogle-perftools4

    在启动脚本中添加:

    export LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libtcmalloc.so.4"
    export TCMALLOC_RELEASE_RATE=10
  • Ubuntu 16.04 LTS 安装同上,在启动脚本中添加:

    export LD_PRELOAD="/usr/lib/libtcmalloc.so.4"
    export TCMALLOC_RELEASE_RATE=10
  • CentOS 7 安装

    sudo yum install gperftools-libs

    在启动脚本中添加:

    export LD_PRELOAD="/usr/lib64/libtcmalloc.so.4"
    export TCMALLOC_RELEASE_RATE=10

如何配置节点的只读模式?

Java-tron 支持在不启动网络模块的情况下提供数据查询服务。您可以参考以下步骤来配置节点的只读模式:

1. 禁用网络模块

在节点的启动命令中添加参数 --p2p-disable true,如下所示:

java -jar FullNode.jar -c config.conf --p2p-disable true 

或者,在节点的配置文件中设置以下配置项:

node.p2p.enable = false

2. 禁用 P2P 通信

禁用节点发现服务,然后清空受信任的节点列表。

node.discovery.enable = false  
node.active = []  
node.passive = []

注意:尽管仅设置 node.p2p.enable = false 就足以在阻止节点同步区块的同时允许数据查询,但为了实现完全的只读模式,我们建议您同时应用以上所有设置。


如何配置支持账户历史余额查询的节点?

请参考以下步骤来配置一个支持账户历史余额查询的节点:

  1. 启用账户历史余额查询

修改节点配置文件,开启账户历史余额查询选项:

storage {
  balance.history.lookup = true
}
  1. (可选)下载数据库快照

如果节点从创世区块(区块0)开始同步,或者您下载并使用包含历史余额数据的数据库快照,则节点可以查询所有已同步区块的账户余额,包括快照之前的历史区块,从而支持完整的账户历史余额查询。

否则,节点启动后仅能查询从启动节点开始同步的新区块的账户余额,之前已同步区块的账户余额将无法查询。请根据需求选择是否使用数据库快照。

  1. 启动节点

完成上述配置后,启动节点。节点同步完成后,您即可通过 wallet/getaccountbalance 接口查询任意账户的历史 TRX 余额。