简述

tron 有三种节点类型:

  1. SuperNode:负责生产区块。tron链是DPOS共识,只有27个SR能够产块。
  2. FullNode: 节点负责广播区块,不进行产块,网络中的FullNode转发区块、广播区块。
  3. SolidityNode: 该节点类型已经合并为其它两种节点类型,不会单独运行或部署,所以不再单独部署。

环境准备

保证以下环境正常使用

  1. JDK 1.8
    • 注意不能高于或低于1.8版本,否则会有问题
  2. FullNode.jar

启动节点

项目的启动方式:

  1. 官方脚本启动
  2. 手动指定参数启动
  3. docker 启动

脚本方式

这种方式最简单,不过一般使用区块链的开发者都需要debug代码,所以一般在部署的时候使用脚本启动。
需要用到的文件,都可以从 java-tron 这个项目中获得。

1
2
3
4
git clone https://github.com/tronprotocol/java-tron.git
cd java-tron
git checkout -t origin/master
./gradlew build -x test

gradlew是在java-tron项目中的gradle-wrapper.jar提供的功能Mave也有类型的功能。

使用gradle编译后,把主要的关键文件拿出来:

  1. 配置文件 config.conf
  2. 主程序 FullNode.jar
  3. 启动脚本 start.sh,在项目根目录

FullNode.jar

使用 gradle 编译后会在java-tron/build目录下生成 FullNode.jar文件。

java-tron/build/libs/FullNode.jar

config.conf

java-tron/framework/src/main/resources/config.conf

start.sh

java-tron/start.sh

准备好以上文件后,准备启动FullNode.jar,并查看日志

sh start.sh

FullNode启动

产块日志,到这个阶段大概卡了30秒左右

产块日志

所有启动前和启动后的文件

所有节点文件

手动启动

手动启动服务,就是jar包启动,先排除JVM相关的优化参数,看看哪些是必须的参数。
至于JVM的优化参数,可以参考启动脚本当中官方给出的调优参数。

-c: config配置文件路径
-d: 指定数据库存放路径

java -jar FullNode.jar -c config.conf


docker 方式启动

在系统中先保证 docker 正常使用。

取拉项目代码

1
2
git clone https://github.com/tronprotocol/java-tron.git
cd java-tron

构建本地镜象

1
docker build -t tronprotocol/java-tron .

docker构建

查看本地镜象

1
docker images

查看docker_images

启动镜象

1
docker run -it -d -p 8090:8090 -p 8091:8091 -p 18888:18888 -p 50051:50051 --restart always tronprotocol/java-tron

运行java-tron的docker镜象

查看镜象运行情况,动行成功,状态 STATUS 是 Up 17 hours,这是因为我启动之后过了17个小时才回来查看状态。

1
2
CONTAINER ID   IMAGE                    COMMAND                  CREATED        STATUS        PORTS                                                                                  NAMES
f181fab2948f tronprotocol/java-tron "./bin/docker-entryp…" 17 hours ago Up 17 hours 0.0.0.0:8090-8091->8090-8091/tcp, 0.0.0.0:18888->18888/tcp, 0.0.0.0:50051->50051/tcp optimistic_khayyam

查看下日志,容器ID是: f181fab2948fnumber=26981 这个是当前处理的块高,跑了17个小时才处理到这里。

docker exec -it f181fab2948f tail -f /java-tron/logs/tron.log

查看java-tron_docker运行日志

停止容器

docker container kill f181fab2948f

停止java-tron的docker镜象

如果不使用了可以把容器和镜象完全删除,容器运行会产生很多的数据占磁盘空间。