私链搭建
Tron 私链搭建全流程
测试环境:
操作系统:macOs Mojave 10.14.2 8G 256G SSD
JDK 1.8 (建议使用Oracle jdk版本)
前期准备:
1.JDK 1.8 (建议使用Oracle jdk版本)
2.获取至少两对tron网络格式的私钥与地址(获取地址https://tronscan.org/#/wallet/new或者tronweb)
address_A ,private_A;
address_B,private_B;
address_C,private_C;
注:wallet/new生成的是keystore文件,文件名是用地址命名。
3.至少部署一个SuperNode用于出块;
4.部署任意数量的FullNode节点用于同步区块、广播交易;
注:本示例中只搭建了一个SR节点和一个fullnode节点。
部署指南
1.通过编译或realse获取FullNode.jar, Soliditynode.jar。
a.通过下载源码编译
1). 创建代码目录
mkdir -p /project/tron/2). 下载java tron源码
cd /project/tron/
git clone -b master https://github.com/tronprotocol/java-tron.git3). 编译java-tron项目
cd ./java-tron
./gradlew buildb.通过release直接获取最新版本jar包
https://github.com/tronprotocol/java-tron/releases
- 配置文件
a.获取超级节点配置文件
1). 下载private_net_config.conf 文件
https://github.com/tronprotocol/tron-deployment/blob/master/private_net_config.conf
2). 修改配置文件中localwitness。
3). 修改配置文件中genesis.block.witnesses为localwitness中私钥对应的地址
4). 修改p2p.version为除了11111之外的任意正整数
5). 第1个SR设置needSyncCheck为false,其他可以设置为true
6). 修改node.discovery.enable为true。
7). 根据需要将生成的账户地址写入genesis.block.assets中
7). 命名配置文件为supernode.conf
b.获取全节点配置文件
1). 下载private_net_config.conf 文件, https://github.com/tronprotocol/tron-deployment/blob/master/private_net_config.conf
2). 修改配置文件中seed.node ip.list为SR的ip地址和端口。(本示例中 127.0.0.1:16666)
3). 设置p2p.version与超级节点的p2p.version一致。
4). 设置genesis.block 与超级节点中的genesis.block配置一致。
5). 设置needSyncCheck为true
6). 设置node.discovery.enable 为true
7). 命名配置文件为fullnode.conf
3.部署节点
a.部署超级节点
nohup java -Xmx6g -XX:+HeapDumpOnOutOfMemoryError -jar FullNode.jar --witness -c supernode.confb.部署全节点
nohup java -Xmx6g -XX:+HeapDumpOnOutOfMemoryError -jar FullNode.jar -c fullnode.conf节点启动后,java-tron.jar的同级目录上将生成 logs 和 output-directory 两个文件夹
logs : 节点日志文件
output-directory : 节点数据存储目录
命令行参数说明:
--witness: 启动witness功能,i.e.: --witness。
--log-config: 指定日志配置文件路径,i.e.: --log-config logback.xml。
-c: 指定配置文件路径,i.e.: -c config.conf。
日志文件使用:
可以修改模块的level等级来控制日志的输出,默认每个模块的level级别为INFO,比如,只打印网络模块warn以上级别的信息,可以如下修改
注:
1).如果SR跟fullnode同一host,建议给SR和fullnode建立单独文件夹,方便根据日志排查问题。
2).无法排除非本人以外的超级节点加入,具体可根据自己需求,进行网络隔离等相关操作。
4.提议proposal
为了跟主网环境一致,需要保持私链中的提议与主网提议一致。需要注意的是,部分提议有先后顺序,建议根据主网的proposal_id进行一次提议。
a. 使用wallet/proposalcreate接口创建提案,签名并广播
b. 使用wallet/proposalapprove接口批准提案,签名并广播
具体接口使用请参考文档:HTTP文档
注:提议生效默认时间是72小时。
如需快速通过提议,需要提议修改超级代表调整时间间隔,目前默认的是6小时。
{
"key": 0,
"value": 300000 // 5分钟,单位ms
}目前主网所有提议以及提议相关信息:
https://api.trongrid.io/wallet/getchainparameters
https://api.trongrid.io/wallet/listproposals
https://tronprotocol.github.io/documentation-zh/mechanism&algorithm/sr/
主网通过的proposals整理如下:
1."proposal_id": 1
{
"key": 9,
"value": 1
}
2."proposal_id": 3
{
"key": 10,
"value": 1
}
3."proposal_id": 4
{
"key": 11,
"value": 20
}
4."proposal_id": 7
{
"key": 17,
"value": 250000000000
}
5."proposal_id": 9
{
"key": 11,
"value": 10
}
6."proposal_id": 13
{
"key": 19,
"value": 100000000000
}
7."proposal_id": 14
{
"key": 15,
"value": 1
}
8."proposal_id": 15
{
"key": 18,
"value": 1
}
9."proposal_id": 16
{
"key": 16,
"value": 1
}
10."proposal_id": 17
{
"key": 20,
"value": 1
}
11."proposal_id": 18
{
"key": 26,
"value": 1
}
12."proposal_id": 22
{
"key": 30,
"value": 1
}
13."proposal_id": 27
{
"key": 5,
"value": 16000000
},
{
"key": 31,
"value": 160000000
}
14."proposal_id": 29
{
"key": 32,
"value": 1
}Updated 9 months ago