PlatON 主网1.5.0版本 - 节点升级操作指南

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版本部署新节点

  1. 请严格按照 官方文档 部署安装一个新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!

  2. 等待新节点同步完成(预估时长:4~20小时)。

    通过对比当前新节点的区块高度和浏览器的最新区块高度,确保区块同步已完成。

    • 查看节点同步区块进度

      platon attach http://localhost:6789 -exec 'platon.syncing'
      
    • 查看节点区块高度

      platon attach http://localhost:6789 -exec 'platon.blockNumber'
      
    • 查看浏览器区块高度

    注意:如果是新加入PlatON验证节点,请务必等1.5.0升级提案升级通过后再质押进入。

3. 新节点生成快照

快照会在新节点同步完成后自动生成,无需额外配置。

  1. 查看快照生成进度需要将日志级别设置为1或以上。

    # 查看节点启动信息,该参数--verbosit <为1或者以上>
    ps aux |grep platon
    
  2. 查看快照生成情况(预估时长:4~130小时

    快照生成完成后,日志会出现如下关键字 “Journalled disk layer”+ xxxx +“complete=true”。

    # 快照生成过程中,Journalled disk layer日志会多次出现,只有complete=true才表示生成完成!
    # 查询快照是否完成:
    grep 'complete=true' platon.log 
    

4. 迁移验证节点

重要提示:必须等待快照生成完成后执行本步骤!

首先,通过区块链浏览器查看待升级验证节点是否已经被选为验证人(共识中)。如果节点已经当选,请等待节点处于非"共识中"状态后再进行操作!

  1. 停止老验证节点

    # 查看进程号
    $ 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 <进程号>
    
    
  2. 替换节点文件

    待升级的验证节点停止运行后,将待升级的验证节点的nodeidnodekeyblskeyblspub文件拷贝到新节点服务器,完成节点文件替换。

    若是按照官方文档部署,这些文件都在~/platon-node/data/目录下。

  3. 重启升级后的验证节点

    以下命令仅供参考,根据各自的管理方式,重启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 &
    
    
  4. 检查新验证节点运行状态

    为确保升级后的验证节点正常运行,请检查节点是否已正确迁移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\".....}]

# 当从上述获得的列表查询到自己的节点,及时进行告警提醒!同时建议增加区块同步监控,及时发现区块同步落后的异常情况!

团队在做事,hold on!