简述
tron 有三种节点类型:
- SuperNode:负责生产区块。tron链是DPOS共识,只有27个SR能够产块。
- FullNode: 节点负责广播区块,不进行产块,网络中的FullNode转发区块、广播区块。
- SolidityNode: 该节点类型已经合并为其它两种节点类型,不会单独运行或部署,所以不再单独部署。
环境准备
保证以下环境正常使用
- JDK 1.8
- 注意不能高于或低于
1.8
版本,否则会有问题
- 注意不能高于或低于
- FullNode.jar
启动节点
项目的启动方式:
- 官方脚本启动
- 手动指定参数启动
- docker 启动
脚本方式
这种方式最简单,不过一般使用区块链的开发者都需要debug代码,所以一般在部署的时候使用脚本启动。
需要用到的文件,都可以从 java-tron
这个项目中获得。
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编译后,把主要的关键文件拿出来:
- 配置文件 config.conf
- 主程序 FullNode.jar
- 启动脚本 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
产块日志,到这个阶段大概卡了30秒左右
所有启动前和启动后的文件
手动启动
手动启动服务,就是jar包启动,先排除JVM相关的优化参数,看看哪些是必须的参数。 至于JVM的优化参数,可以参考启动脚本当中官方给出的调优参数。
-c: config配置文件路径 -d: 指定数据库存放路径
java -jar FullNode.jar -c config.conf
docker 方式启动
在系统中先保证 docker 正常使用。
取拉项目代码
代码语言:javascript复制git clone https://github.com/tronprotocol/java-tron.git
cd java-tron
构建本地镜象
代码语言:javascript复制docker build -t tronprotocol/java-tron .
查看本地镜象
代码语言:javascript复制docker images
启动镜象
代码语言:javascript复制docker run -it -d -p 8090:8090 -p 8091:8091 -p 18888:18888 -p 50051:50051 --restart always tronprotocol/java-tron
查看镜象运行情况,动行成功,状态 STATUS 是 Up 17 hours,这是因为我启动之后过了17个小时才回来查看状态。
代码语言:javascript复制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是: f181fab2948f
,number=26981
这个是当前处理的块高,跑了17个小时才处理到这里。
docker exec -it f181fab2948f tail -f /java-tron/logs/tron.log
停止容器
docker container kill f181fab2948f
如果不使用了可以把容器和镜象完全删除,容器运行会产生很多的数据占磁盘空间。