PlatON之源码方式安装及加入链

拉力赛节点安装源码安装方式

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

6 个赞

请问按以上步骤做了,就可以领取奖励了吗?

你好,我节点运行起来了,但是始终连不上peer是怎么回事,一直是以下日志。
Consensus dialed task list after ListTask operation task queue=

您好,是不是日志没有贴全?

您好,请先在节点上执行命令:platon attach http://localhost:6789 -exec platon.blockNumber,
多执行几次,观察区块高度是不是在增长,并通过PlatScan(https://platscan.test.platon.network/block)查看当前链的最高块高, 对比节点的区块高度是否是已经是最高区块高度.

我attach过了,我有一些geth的经验的,blockNumber一直为0,sync也是false。最主要的是日志永远是上面我贴出来的,我跑了一天了,看了网络链接,远程16789永远都是SYN_SENT, admin.peers永远是空

您的16789允许其他节点访问吗

允许的,我已经解决了

查看一下您节点的创始区块hash是多少,看是不是这个:
0x9f919fb481755ad1060db3fe897131fbd79f58df4f29495f7083c3baa1add7dd.浏览器链接:https://platscan.test.platon.network/block-detail?height=0

是这个,我已经解决问题了,方便加一下微信吗,我的微信号是istaking

可以的哈,已经加您了

您好,请问是怎么解决的?我正在安装,也遇到了这个问题,Ubuntu 18.04,这个是我的安装脚本 https://github.com/Xiechengqi/scripts/blob/master/install/Platon/platon-node/install.sh

我知道了。Platon testnet 于 2021 年 1 月关闭了,我使用 --testnet ,一直报找不到 p2p 节点,而且创世区块 hash 也和浏览器的不一样,但是按照官网的开发网络节点部署文档,手动加入创世节点,也无法同步,问题也是创世区块的 hash 不区块浏览器里面的不一样。这个问题无解

我的节点现在运行报错,请问有人知道怎么处理
ERROR[07-29|19:48:04.075] ReadMsg from peer error, connection is closed
ERROR[07-29|19:48:04.075] read peer message error id=4f16106d86cc4ebf conn=dyndial err=EOF
ERROR[07-29|19:48:04.075] PlatON message handling failed

有些节点不开放连接,所以会有报错,只要区块同步和scan保持一致就ok。

请参考alaya/platon开发网相关章节,alaya刚升级到0.16,文档可能这两天才会更新,最好等更新后尝试接入