PlatON 主网1.5.0版本 - 节点升级操作指南
版本信息
ChainID: 210425
Version: 1.5.0
Git Commit: 7b22c9351d5ff63a9ac8d143e75f9044914077f7
二进制下载
ubuntu18.04系统: https://download.platon.network/platon/platon/1.5.0/platon
ubuntu20.04系统: https://download.platon.network/platon/platon/ubuntu20.04/1.5.0/platon
ubuntu22.04系统: https://download.platon.network/platon/platon/ubuntu22.04/1.5.0/platon
升级操作步骤
1. 升级准备
由于本次升级需要生成节点快照,为避免快照生成过程影响节点共识导致被处罚,升级需要通过迁移的方式来实施。
因此,需要准备一台用于迁移的 Ubuntu22.04 服务器(需符合PlatON验证节点配置要求)。
硬件升级重要提醒:
PlatON 1.5.0 版本提升了对硬件计算性能的要求,节点必须满足PlatON验证节点配置要求(4核16G及以上),且必须选择具备CPU高稳定性和可靠性的云服务商(小众云服务商可靠性存在很大风险),并做好节点运行监控,及时处理异常风险。
强烈建议节点增加“零出块观察节点列表监控”(参见下文),一旦节点进入该列表说明节点处于不稳定状态,请务必在1-2小时内进行解决。
温馨提示:
- 如果有多个节点需要升级,可将升级后被替换下来的服务器作为新节点,等待快照生成后,重复第2~5步骤。
- platon-mtool工具的迁移对节点无影响,升级期间可随时迁移。
- 注意不要同时启动相同nodekey,blskey的节点,避免双签!
2. 使用1.5.0版本部署新节点
-
请严格按照 官方文档 部署安装一个新PlatON节点。
对于迁移方式的升级,不需要执行"成为验证节点"的步骤。迁移升级完成后,该新部署节点将成为后续长期运行的正式节点。
替换二进制下载链接:
ubuntu18.04系统: https://download.platon.network/platon/platon/1.5.0/platon
ubuntu20.04系统: https://download.platon.network/platon/platon/ubuntu20.04/1.5.0/platon
ubuntu22.04系统: https://download.platon.network/platon/platon/ubuntu22.04/1.5.0/platon
重要提醒:
PlatON 1.5.0 版本相对旧版本CPU开销有所增加,为避免节点因资源不够出现漏出块被罚情况强烈建议在1.5.0版本进程启动参数中增加参数 '–db.nogc’以降低CPU开销,只有主机CPU4核3.5MHz以上配置才考虑开启gc!
-
等待新节点同步完成(预估时长:4~20小时)。
通过对比当前新节点的区块高度和浏览器的最新区块高度,确保区块同步已完成。
-
查看节点同步区块进度
platon attach http://localhost:6789 -exec 'platon.syncing'
-
查看节点区块高度
platon attach http://localhost:6789 -exec 'platon.blockNumber'
-
查看浏览器区块高度
注意:如果是新加入PlatON验证节点,请务必等1.5.0升级提案升级通过后再质押进入。
-
3. 新节点生成快照
快照会在新节点同步完成后自动生成,无需额外配置。
-
查看快照生成进度需要将日志级别设置为1或以上。
# 查看节点启动信息,该参数--verbosit <为1或者以上> ps aux |grep platon
-
查看快照生成情况(预估时长:4~130小时)
快照生成完成后,日志会出现如下关键字 “Journalled disk layer”+ xxxx +“complete=true”。
# 快照生成过程中,Journalled disk layer日志会多次出现,只有complete=true才表示生成完成! # 查询快照是否完成: grep 'complete=true' platon.log
4. 迁移验证节点
重要提示:必须等待快照生成完成后执行本步骤!
首先,通过区块链浏览器查看待升级验证节点是否已经被选为验证人(共识中)。如果节点已经当选,请等待节点处于非"共识中"状态后再进行操作!
-
停止老验证节点
# 查看进程号 $ ps aux |grep platon root 13476 39.1 49.7 9174616 3925796 ? Sl Feb07 1140:19 /usr/bin/platon --identity .... # 查看nodekey(以便与升级后的节点对比) $ platon attach http://127.0.0.1:6789 -exec 'admin.nodeInfo.enode' |awk -F[/@] '{print $3}' # 查看blsPubKey(以便与升级后的节点对比) $ platon attach http://127.0.0.1:6789 -exec 'admin.nodeInfo.blsPubKey' # 停止platon节点,如kill 13476,上述示例中进程号为13476,实际操作时根据实际情况取值;执行kill命令后,可再使用上述ps命令查看进程是否正确退出,若正常退出再执行后续启动命令 $ kill <进程号>
-
替换节点文件
待升级的验证节点停止运行后,将待升级的验证节点的
nodeid
、nodekey
、blskey
、blspub
文件拷贝到新节点服务器,完成节点文件替换。若是按照官方文档部署,这些文件都在~/platon-node/data/目录下。
-
重启升级后的验证节点
以下命令仅供参考,根据各自的管理方式,重启platon进程。
# 查看进程号 $ ps aux |grep platon root 13476 39.1 49.7 9174616 3925796 ? Sl Feb07 1140:19 /usr/bin/platon --identity .... # 停止platon节点,如kill 13476,上述示例中进程号为13476,实际操作时根据实际情况取值;执行kill命令后,可再使用上述ps命令查看进程是否正确退出,若正常退出再执行后续启动命令 $ kill <进程号> # 启动platon节点 $ nohup platon --identity platon-node --datadir ./data --nodekey ./data/nodekey --cbft.blskey ./data/blskey --http --http.addr 127.0.0.1 --http.port 6789 --http.api "platon,net,web3,admin,personal,debug" --port 16789 --verbosity 1 --syncmode "fast" --db.nogc >> ./data/platon.log 2>&1 &
-
检查新验证节点运行状态
为确保升级后的验证节点正常运行,请检查节点是否已正确迁移nodekey和blspubkey,节点是否正常同步区块。
# 查看nodekey是否和原来验证节点的一致 $ platon attach http://127.0.0.1:6789 -exec 'admin.nodeInfo.enode' |awk -F[/@] '{print $3}' # 查看blsPubKey是否和原来验证节点的一致 $ platon attach http://127.0.0.1:6789 -exec 'admin.nodeInfo.blsPubKey' # 连续执行以下命令,查看块高是否正常同步 $ platon attach http://localhost:6789 -exec 'platon.blockNumber'
5. platon_mtool工具迁移
参考官网文档MTool在线教程,完成platon_mtool安装。将老验证节点的keystore和validator目录迁移到新安装的platon_mtool目录下即可。
6. 升级提案处理
已质押的节点,请通过区块链浏览器查看当前节点是否是以下状态:
- 出块中
- 共识中
- 活跃中
如果当前节点为上述3中状态的一种,请参考以下命令进行投票,提案id为<0x2e612db8a6f44331c776a459b6ca12c4bb418e2bef6dfcab6357cddd272a8e4a>:
# 升级提案投票命令示例
#没定义 $PLATON_MTOOLDIR 时,需要根据实际部署情况补全绝对路径
$ platon_mtool vote_versionproposal --proposalid 0x2e612db8a6f44331c776a459b6ca12c4bb418e2bef6dfcab6357cddd272a8e4a --keystore $PLATON_MTOOLDIR/keystore/staking.json --config $PLATON_MTOOLDIR/validator/validator_config.json
如果节点状态为“候选中”,则需要做版本声明,请参考以下命令进行版本声明。
#版本声明示例
#没定义 $PLATON_MTOOLDIR 时,需要根据实际部署情况补全绝对路径
$ platon_mtool declare_version --keystore $PLATON_MTOOLDIR/keystore/staking.json --config $PLATON_MTOOLDIR/validator/validator_config.json
注:未质押过的节点(即非验证节点),无需操作。
升级问题反馈
如需帮助,可通过以下渠道反馈。
- Telegram
- 邮箱 validator@platon.network
附录
零出块观察节点列表监控:
# 前提条件需要开启debug模块(注意会重启节点,请确认节点处于非共识中状态)
$ nohup platon --identity platon-node --datadir ./data --nodekey ./data/nodekey --cbft.blskey ./data/blskey --http --http.addr 127.0.0.1 --http.port 6789 --http.api "platon,net,web3,admin,personal,debug" --port 16789 --verbosity 1 --syncmode "fast" --db.nogc >> ./data/platon.log 2>&1 &
# 查看零出块累计的周期数
$ platon attach http://localhost:6789 -exec 'debug.getWaitSlashingNodeList()'
# 当节点出现在本列表中,且持续20个共识周期(大概2个半小时后)就会被处罚;期间恢复出块则不处罚。返回example:[{\"NodeId\":\"f0ac4b8937d067c590aa6259a4e17015655b39f7c7cd48d66a329affdaad6a3ddbb1ea7bb70c86605ee52e636ce2b0af85c287fbfba326f43dfb56eb10cc4798\",\"Round\":264079,\"CountBit\":1},{{\"NodeId\"......},... ,{{\"NodeId\".....}]
# 当从上述获得的列表查询到自己的节点,及时进行告警提醒!同时建议增加区块同步监控,及时发现区块同步落后的异常情况!