拉力赛节点安装源码安装方式
1、准备工作
1.1 配置要求
-
系统:ubuntu18.04
-
内核:4C
-
内存:8G
-
磁盘:至少100G
-
需在具有sudo权限的非root用户下进行操作
1.2 根据Ubuntu编译环境要求
- Git:2.19.1及以上
# 添加源
tom@localhost:~$sudo add-apt-repository ppa:git-core/ppa
# 更新源
tom@localhost:~$sudo apt-get update
# 安装git
tom@localhost:~$sudo apt-get -y install git
# 检查版本是否满足要求
tom@localhost:~$git --version
- 编译器:gcc(4.9.2+)、g++(5.0+)
# apt安装
tom@localhost:~$sudo apt-get -y install gcc g++
# 检查版本是否符合要求
tom@localhost:~$gcc --version
tom@localhost:~$g++ --version
- go语言开发包:go(1.7+,建议使用1.12版本,go的1.10版本可能会不兼容)
# 自行下载安装包
tom@localhost:~$sudo tar -xzf go1.12.17.linux-amd64.tar.gz -C /usr/local
tom@localhost:~$sudo ln -s /usr/local/go/bin/* /usr/bin/
# 检查版本是否符合要求
tom@localhost:~$go version
- cmake: (3.0+)
# apt安装
tom@localhost:~$sudo apt-get -y install cmake
# 检查版本是否符合要求
tom@localhost:~$cmake --version
1.3 配置时间同步(验证节点的时间必须保持一致因此需要和时间服务器实时同步)
# 安装ntp,并且开启开机自启动(需多次输入密码)
tom@localhost:~$sudo apt-get -y install ntp && systemctl enable ntp
# 查验ntp状态
tom@localhost:~$sudo systemctl status ntp
tom@localhost:~$ntpq -p
2、源码编译安装platon
2.1 获取源码
tom@localhost:~$git clone -b release-0.9.0 https://github.com/PlatONnetwork/PlatON-Go.git --recursive
2.2 编译及验证是否为自己想要接入链的版本
# 可能会遇到缺失bls库编译失败的情况,需要先执行命令:sudo apt install libgmp-dev;sudo apt install libssl-dev
tom@localhost:~$cd PlatON-Go;
find ./build -name "*.sh" -exec chmod u+x {} \;
make all;
# 查看platon版本,确认commit ID与链的commit ID一致即可
tom@localhost:~/PlatON-Go$ ./build/bin/platon version
PlatON
Version: 0.9.0-unstable
Git Commit: ce37b55419fd17bcf022aa74d1b8b441bbbebb13
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.12.17
Operating System: linux
GOPATH=
GOROOT=/usr/local/go
# 编译完成之后在PlatON-Go/build/bin目录下会生成platon等一系列可执行文件,可根据需求将可执行文件拷贝到自己工作目录运行即可。
3、节点启动
3.1 生成节点密钥和共识密钥文件
# 创建一个工作目录
tom@localhost:~$mkdir -p platon-node
# 将源码编译生成的可执行文件platon、keytool拷贝到工作目录下来备用
tom@localhost:~$ cd PlatON-Go/build/bin/
tom@localhost:~/PlatON-Go/build/bin$ cp platon ~/platon-node/
tom@localhost:~/PlatON-Go/build/bin$ cp keytool ~/platon-node/
# 进入工作目录platon-node
tom@localhost:~$ cd platon-node/
# 创建一个data目录用来生成钱包文件,和节点运行数据。
tom@localhost:~/platon-node$mkdir -p data
#生成节点公私钥(需要用到源码编译的keytool工具,之前有拷贝到工作目录下)
tom@localhost:~/platon-node$ ./keytool genkeypair | tee >(grep "PrivateKey" | awk '{print $2}' > ./data/nodekey) >(grep "PublicKey" | awk '{print $3}' > ./data/nodeid) #生成节点公私钥
tom@localhost:~/platon-node$ ./keytool genblskeypair | tee >(grep "PrivateKey" | awk '{print $2}' > ./data/blskey) >(grep "PublicKey" | awk '{print $3}' > ./data/blspub) #生成bls公私钥
#执行完两条命令之后,会在工作目录下的data目录生成节点公私钥和bls公私钥,请保管好
tom@localhost:~/platon-node/data$ ls
blskey blspub keystore nodeid nodekey
-
nodeid为节点公钥(ID)文件,保存节点的公钥。用来标识节点身份,可公开。
-
nodekey节点私钥文件,保存节点的私钥。不能公开且需要做好备份。
-
blspub节点BLS公钥文件,保存节点的bls公钥。用于共识协议的快速验证签名,可公开。
-
blskey节点BLS私钥文件,保存节点bls私钥。不能公开且需要做好备份。
3.2 启动节点
# 启动
tom@localhost:~/platon-node$nohup ./platon --identity platon --datadir ./data --port 16789 --testnet --rpcport 6789 --rpcapi "db,platon,net,web3,admin,personal" --rpc --nodekey ./data/nodekey --cbft.blskey ./data/blskey --verbosity 3 --rpcaddr 0.0.0.0 --syncmode "full" > platon.log &
# 当platon启动成功后,正常情况下会通过节点发现协议自动和距离自己最近的节点建立连接,连接成功后会启动区块同步,所以判断加入网络是否成功可以通过查看节点的peers同时确认当前节点块高是否增长来判断。
# 通过HTTP的方式进入platon控制台。
tom@localhost:~/platon-node$ ./platon attach http://localhost:6789
> platon.blockNumber # 查询块高同步情况
51248
# 也可以通过日志查看日志中块高同步情况
tom@localhost:~/platon-node$tail -f platon.log | grep number
4、配置nginx
- 安全考虑,不建议节点 rpc 端口对外直接开放(节点服务器默认Ubuntu 18.04)。可以考虑使用 Nginx 进行反向代理,并通过用户鉴权和 HTTPS 加强 Nginx 端口的安全性。
# 拉取脚本文件nginx_conf.sh
tom@localhost:~/platon-node$wget http://47.91.153.183/opensource/scripts/nginx_conf.sh
# 给脚本文件加上可执行权限并运行
tom@localhost:~/platon-node$chmod +x nginx_conf.sh && ./nginx_conf.sh # 牢记用户名和密码,后续的MTool配置验证接地那信息需要填写
------------
[sudo] password for tom: # 输入当前系统账户的sudo密码
Enter your name:tom # 输入用户名
Enter your password:123456 # 输入密码
------------
# 当脚本运行完毕后收到提示ngnix conf succeed 就表示表示配置nginx成功了
ngnix conf succeed
5、配置mtool-client,并生成质押钱包和收益钱包参与验证节点出块
# 拉取mtool工具包mtool-client.zip
tom@localhost:~/platon-node$wget http://47.91.153.183/mtool/0.8.0.0/mtool-client.zip
# 安装unzip,并解压至mtool文件夹中
tom@localhost:~/platon-node$sudo apt-get install unzip
tom@localhost:~/platon-node$unzip mtool-client.zip && cd mtool-client
# 下载mtool安装脚本到mtool-client目录下,并执行安装
tom@localhost:~/platon-node$ cd mtool-client-0.8.0.0/
tom@localhost:~/platon-node/mtool-client-0.8.0.0$ wget http://47.91.153.183/opensource/scripts/mtool_install.sh # 下载
tom@localhost:~/platon-node/mtool-client-0.8.0.0$ chmod +x mtool_install.sh && ./mtool_install.sh # 添加权限并执行
# 当出现Install mtool succeed的字样就表示安装成功了。
# 使新增环境变量生效。
tom@localhost:~/platon-node/mtool-client-0.8.0.0$source ~/.bashrc
# 验证环境变量是否生效
tom@localhost:~/platon-node/mtool-client-0.8.0.0$which mtool-client java
/usr/bin/mtool-client
/home/tom/platon-node/jdk1.8.0_221/bin/java
# 生成质押钱包和收益钱包
tom@localhost:~/platon-node/mtool-client-0.8.0.0$ mtool-client account new staking #生成质押钱包,质押钱包用于质押 token,质押成功后才能成为备选节点候选人。
Enter a passphrase to encrypt your key to disk:123456
Repeat the passphrase: 123456 # 输入密码两次,将密钥加密至磁盘,牢记!
tom@localhost:~/platon-node/mtool-client-0.8.0.0$ mtool-client account new reward #生成收益钱包, 用于收取区块奖励和Staking奖励,Staking奖励统一发放给验证节点,由验证节点自行分配。
Enter a passphrase to encrypt your key to disk:
Repeat the passphrase: # 输入密码两次,将密钥加密至磁盘,牢记!
# 查验钱包是否生成成功
tom@localhost:~/platon-node/mtool-client-0.8.0.0$ cd keystore/
tom@localhost:~/platon-node/mtool-client-0.8.0.0/keystore$ ll
total 20
drwxr-xr-x 2 tom tom 4096 Feb 22 06:39 ./
drwxr-xr-x 6 tom tom 4096 Feb 22 06:19 ../
-rw-r--r-- 1 tom tom 8 Feb 11 15:33 IGNORE.me
-rw-rw-r-- 1 tom tom 490 Feb 22 06:39 reward.json # 收益钱包
-rw-rw-r-- 1 tom tom 490 Feb 22 06:39 staking.json # 质押钱包
6、配置验证节点信息
- 切记要在非ront用户下操作,root用户部署的节点,用nginx脚本会有问题,curl命令从nginx服务器下载不了属主是root用户的文件。
# 拉取脚本validator_conf.sh。
tom@localhost:~/platon-node$ wget http://47.91.153.183/opensource/scripts/validator_conf.sh
tom@localhost:~/platon-node$ ip add #记住自己的IP地址
tom@localhost:~/platon-node$ chmod +x validator_conf.sh && ./validator_conf.sh # 添加权限并执行脚本。
Please enter the platon node IP address:10.10.8.4 # 自己的IP
Please enter the platon chain id:101 # 本次拉力赛的链ID
Please enter the delegatedRewardRate(0~10000):1000 # 比例分红自己定
Enter your name:tom # 配置PlatON节点nginx时输入的用户名
Enter your password:123456 # 配置PlatON节点nginx时输入的密码
Enter your platon node name:tom # 想要的PlatON节点的名称
Enter your platon node description:abc # 对PlatON节点的描述
# 当提示get validator_config.json success时就表示脚本执行成功了
7、质押成为验证节点
-
如果共识节点部署完成,并且已经同步区块成功我们的节点与链块高达到一致时,你就可以使用MTool进行质押操作。质押最低门槛为100万LAT。
-
本次拉力赛PlatScan官网浏览器:https://platscan.test.platon.network/
-
质押
# 查询钱包地址
tom@localhost:~/platon-node$ cd mtool-client-0.8.0.0/
tom@localhost:~/platon-node/mtool-client-0.8.0.0$ mtool-client account list
reward:------------------------------------------;
staking:-----------------------------------------;
# 查询钱包余额,也可以在PlatScan官网浏览器上,输入质押钱包地址查询钱包交易记录以及余额。
tom@localhost:~/platon-node/mtool-client-0.8.0.0$ mtool-client account balance -a 质押钱包地址 --config 根据自身系统结构目录补充完整/validator/validator_config.json # 通过地址在命令行查询
Balanceof: ------------------------------------------
LAT:0
# 质押操作
tom@localhost:~/platon-node$ mtool-client staking --amount 1000000 --keystore 根据自身系统结构目录补充完整/keystore/staking.json --config 根据自身系统结构目录补充完整/validator/validator_config.json # 质押1000000,输入命令后需输入自身设置的质押钱包密码。看到SUCCESS则表示成功。
# 增加质押操作
tom@localhost:~/platon-node$ mtool-client increasestaking --amount 5000000 --keystore 根据自身系统结构目录补充完整/keystore/staking.json --config 根据自身系统结构目录补充完整/validator/validator_config.json
# 解质押操作(收取手续费)
tom@localhost:~/platon-node$ mtool-client unstaking --keystore 根据自身系统结构目录补充完整/keystore/staking.json --config 根据自身系统结构目录补充完整/validator/validator_config.json