【手册】PlatON网络1.2.0版本升级操作手册|[Manual] Operation Manual of PlatON’s Upgrade to Version 1.2.0

中文

版本信息

ChainID: 100

Version: 1.2.0

Git Commit: 66ed8345ea1eaa07202d4c1ae7fb305034e79d51

二进制下载: https://download.platon.network/platon/platon/1.2.0/platon

1、升级步骤说明

​ 若PlatON节点是1.1.1、1.1.2或1.1.3版本,请跳到第3点直接进行更新操作。

  • 1.1.1的版本信息

    $ platon version
    Version: 1.1.1-unstable
    Git Commit: 9960b7fd8128a047bc552b76ab7a0f557d0fb7dd
    
  • 1.1.2的版本信息

    $ platon version
    Version: 1.1.2-unstable
    Git Commit: f0ee9f487c4abee9de032f40641f7f7a6e69bdce
    
  • 1.1.3的版本信息

    $ platon version
    Version: 1.1.3-unstable
    Git Commit: 3bc1b02d313387a3e94ca99af4d27c2db4c70a7b
    

2、升级注意事项

这是节点从1.1.0直接升级到1.2.0的注意事项。

2.1 CPU、内存和磁盘问题

因升级过程中部分历史数据会做迁移至Freezer数据库,cpu会有所增加,数据迁移完成恢复正常;升级重启后,少数会有内存增加的情况,数据迁移完成后恢复正常;升级后存储也会有部分提升(大约将增加约8G)。详细查看Github releases

  • 升级内存

    8G内存的节点在升级重启的过程中小概率会出现内存增加,导致OOM,为了避免这种情况,建议使用swap分区,若有条件也可以选择将机器物理内存升级到16GB。

    增加swap分区

    wget https://download.platon.network/platon/scripts/platon_swap.sh
    chmod +x platon_swap.sh
    ./platon_swap.sh 
    

    注意

    1. 文档提供的platon_swap.sh 脚本做以下处理:当swap分区不存在,则创建8G的swap分区;当swap分区小于7G,会增加swap分区到8G;当swap分区大于7G,则不创建swap分区。
    2. 若不升级主机内存进行节点升级,出现OOM的情况,导致机器无法连接上;重启主机机器后,可恢复启动进程
  • 扩容磁盘

    升级过程中,磁盘容量有所增加约8G,若磁盘可用容量不足,建议扩容磁盘容量。

2.2 不兼容性问题

本次节点升级后,不能使用1.1.0的版本和升级后的数据进行启动,建议升级前,先下载官方提供的最新版本(1.2.0)节点数据,存放在节点主机上,若节点升级后不能启动,直接使用1.2.0的版本和最新版本节点数据来启动。

  • fast模式备份数据,解压后数据大小是17G的,块高是27710718,当节点启动失败,使用该数据替换data/platon目录

    wget https://download.platon.network/platon/nodedata/1.2.0-fast-data.tar.gz
    tar -xf 1.2.0-fast-data.tar.gz
    

3、更新指南(先更新,暂不重启)

​ 以下步骤以 Ubuntu18.04 系统为例,更新操作分为两种方式:直接使用二进制、源码编译,选其中一种方式更新即可;请严格按照以下步骤操作升级,如有需要帮助请联系客服。

  • 直接用二进制

    # 备份二进制
    $ [[ -x /usr/bin/platon ]] && sudo mv /usr/bin/platon /usr/bin/platon_`platon version | grep '^Version:' | awk -F "[ ,:,-]" '{print $3}'`
    # 下载最新的二进制文件
    $ wget https://download.platon.network/platon/platon/1.2.0/platon
    # 使用新的版本
    $ chmod +x platon
    $ sudo mv platon /usr/bin/platon
    # 查看版本
    $ platon version
    Version: 1.2.0-unstable
    Git Commit: 66ed8345ea1eaa07202d4c1ae7fb305034e79d51
    
  • 源码编译(针对之前已成功编译过的环境,全新编译请参考官网源码安装

    # 备份二进制
    $ [[ -x /usr/bin/platon ]] && sudo mv /usr/bin/platon /usr/bin/platon_`platon version | grep '^Version:' | awk -F "[ ,:,-]" '{print $3}'`
    # 编译二进制
    $ git clone https://github.com/PlatONnetwork/PlatON-Go.git --recursive
    $ cd PlatON-Go/
    $ git fetch --all
    $ git checkout -b platon-1.2.0  66ed8345ea1eaa07202d4c1ae7fb305034e79d51
    # 安装依赖和编译,如果出现missing go.sum entry for module,使用go mod tidy移除未使用和添加缺失的依赖
    $ go mod download && make all
    # 使用新的版本
    $ chmod +x build/bin/platon
    $ sudo mv build/bin/platon /usr/bin/platon
    # 查看版本
    $ platon version
    Version: 1.2.0-unstable
    Git Commit: 66ed8345ea1eaa07202d4c1ae7fb305034e79d51
    

4、择机重启进程

如果当前节点质押过,首先通过区块链浏览器查看节点是否已经被选为验证人(共识中)
如果已经当选,请等待节点退出验证人(共识中转为活跃中)后再进行重启操作。

以下命令仅做参考,根据各自的管理方式,重启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 --port 16789  --rpcport 6789 --rpcapi "db,platon,net,web3,admin,personal" --rpc --nodekey ./data/nodekey --cbft.blskey ./data/blskey --verbosity 1 --rpcaddr 127.0.0.1 --syncmode "fast" > ./data/platon.log 2>&1 &

# 重启后进入控制台检查节点版本是否生效:v1.2.0-unstable-66ed8345-20220331
$ platon attach http://localhost:6789
Welcome to the PlatON JavaScript console!

instance: PlatONnetwork/10.1.1.60/v1.2.0-unstable-66ed8345-20220331/linux-amd64/go1.16.8

5、提案处理

  • 质押过的节点,请通过区块链浏览器查看当前节点是否是以下状态:
  1. 出块中
  2. 共识中
  3. 活跃中

如果当前节点为上述3中状态的一种,请参考以下命令进行投票,提案id为<0xbca95edeb71463650f69136fbc05ff69e6250679693ddfbb88ce99a403b04030>:

# 升级提案投票命令示例
$ platon_mtool vote_versionproposal --proposalid 0xbca95edeb71463650f69136fbc05ff69e6250679693ddfbb88ce99a403b04030 --keystore $PLATON_MTOOLDIR/keystore/staking.json --config $PLATON_MTOOLDIR/validator/validator_config.json

如果节点状态为“候选中”,则需要做版本声明,请参考以下命令进行版本声明。

#版本声明示例
$ platon_mtool declare_version --keystore $PLATON_MTOOLDIR/keystore/staking.json --config $PLATON_MTOOLDIR/validator/validator_config.json
  • 未质押过的节点,跳过本步骤。
  • 没定义$PLATON_MTOOLDIR的,需要根据实际部署情况补全绝对路径。

6、反馈

platon升级失败的,可通过以下渠道反馈。

  1. 微信 Colinan
  2. 微信 验证节点群
  3. 邮箱 validator@platon.network

English

Version Info

ChainID: 100

Version: 1.2.0

Git Commit: 66ed8345ea1eaa07202d4c1ae7fb305034e79d51

Binary Document: https://download.platon.network/platon/platon/1.2.0/platon

1. Upgrade Instructions

​ If you are using the version 1.1.1, 1.1.2 or 1.1.3, please skip to Step 3 for the upgrade.

  • Version 1.1.1 info

    $ platon version
    Version: 1.1.1-unstable
    Git Commit: 9960b7fd8128a047bc552b76ab7a0f557d0fb7dd
    
  • Version 1.1.2 info

    $ platon version
    Version: 1.1.2-unstable
    Git Commit: f0ee9f487c4abee9de032f40641f7f7a6e69bdce
    
  • Version 1.1.3 info

    $ platon version
    Version: 1.1.3-unstable
    Git Commit: 3bc1b02d313387a3e94ca99af4d27c2db4c70a7b
    

2. Upgrade Notice

The following notices are for the upgrade from 1.1.0 to 1.2.0.

2.1 About CPU, RAM and Disk

During the upgrade, part of the historical data will be migrated to the Freezer database. This will take up more CPU utility, which will return to normal upon completed data migration. When your device is rebooted after the upgrade, in rare cases, you may experience increased RAM use, which will also normalize once the data is migrated. The upgrade will also occupy more storage (which will take up approximately 8GB additional storage space). For more details, please refer to Github releases.

  • RAM upgrade

    During the upgrade and rebooting process, there is a small chance that validators using 8GB RAMs will suffer OOM due to the increased RAM use. To avoid the potential OOM problem, we recommend creating a swap partition or upgrading to 16GB RAM (if possible).

    Add a swap partition

    wget https://download.platon.network/platon/scripts/platon_swap.sh
    chmod +x platon_swap.sh
    ./platon_swap.sh 
    

    Notice:

    1. The platon_swap.sh script provided in the document will carry out the following process: Where there is no swap partition, the script will create an 8GB swap partition; where the swap partition is smaller than 7GB, the script will expand it to 8GB; where the swap partition is larger than 7GB, the script will remain inactive.
    2. Validators who carried out the upgrade without expanding their RAM could experience OOM, which will result in connection failures. For such users, the activation process will resume once their device is rebooted.
  • Disk expansion

    The upgrade will take up approximately 8GB additional disk space; where the storage is insufficient, we recommend expanding the disk capacity.

2.2 Incompatibility

After the present validator upgrade, you can no longer use the version 1.1.0 and the upgraded data for activation. Validators are advised to download the latest version (1.2.0) of validator data we provided and have it stored on your validator PC before the upgrade. In case of failed activation after the upgrade, you will need to use the version 1.2.0 and the latest version of data for activation.

  • The fast model backup data is 17GB big, at the block height of 27,710,718. In case of failed activation, the backup data will be used to replace the data/platon directory.

    wget https://download.platon.network/platon/nodedata/1.2.0-fast-data.tar.gz
    tar -xf 1.2.0-fast-data.tar.gz
    

3. Upgrade Instructions (upgrade without rebooting)

​ The following instructions are based on the Ubuntu18.04 system. You could complete the upgrade directly through the binary document or source code compiling. Please carry out the upgrade in strict accordance with the following procedures. If you need any help, feel free to reach out to us through our customer service.

  • Directly activate the binary document

    # Make a binary backup
    $ [[ -x /usr/bin/platon ]] && sudo mv /usr/bin/platon /usr/bin/platon_`platon version | grep '^Version:' | awk -F "[ ,:,-]" '{print $3}'`
    # Download the latest binary document
    $ wget https://download.platon.network/platon/platon/1.2.0/platon
    # Use the latest version
    $ chmod +x platon
    $ sudo mv platon /usr/bin/platon
    # Check the version
    $ platon version
    Version: 1.2.0-unstable
    Git Commit: 66ed8345ea1eaa07202d4c1ae7fb305034e79d51
    
  • Source code compiling (The following is intended for previously complied environments. For new compiling, please refer to our official website.)

    # Make a binary backup
    $ [[ -x /usr/bin/platon ]] && sudo mv /usr/bin/platon /usr/bin/platon_`platon version | grep '^Version:' | awk -F "[ ,:,-]" '{print $3}'`
    # Compile the binary document
    $ git clone https://github.com/PlatONnetwork/PlatON-Go.git --recursive
    $ cd PlatON-Go/
    $ git fetch --all
    $ git checkout -b platon-1.2.0  66ed8345ea1eaa07202d4c1ae7fb305034e79d51
    # Install the dependency library and compiler. In case of missing go.sum entry for module, please use go mod tidy to remove unused dependencies and add the missing ones.
    $ go mod download && make all
    # Use the latest version
    $ chmod +x build/bin/platon
    $ sudo mv build/bin/platon /usr/bin/platon
    # Check the version
    $ platon version
    Version: 1.2.0-unstable
    Git Commit: 66ed8345ea1eaa07202d4c1ae7fb305034e79d51
    

**4. **When to Reboot the PlatON Process

If the present node has staked before, please check whether it has been selected as a validator (Verifying) on the PlaON Blockchain Explorer.

If so, please reboot the process after the node exits from the validator model (switch from Verifying to Active)

The command below is for reference only. Validators should reboot the platon process according to their own management approach.

# Check the process number
$ ps aux |grep platon
root   13476 39.1 49.7 9174616 3925796 ?     Sl   Feb07 1140:19 /usr/bin/platon  --identity ....

# Stop the platon node, such as kill 13476. In the above example, the process number is 13476. In reality, the value is taken according to the actual situation. After executing the kill command, you can use the above ps command to check whether the process exits correctly. If so, then you can execute the subsequent rebooting command
$ kill <process number>

# Reboot the platon node
$ nohup platon --identity platon-node --datadir ./data --port 16789  --rpcport 6789 --rpcapi "db,platon,net,web3,admin,personal" --rpc --nodekey ./data/nodekey --cbft.blskey ./data/blskey --verbosity 1 --rpcaddr 127.0.0.1 --syncmode "fast" > ./data/platon.log 2>&1 &

# After rebooting, enter the console to check whether the node version takes effect: v1.2.0-unstable-66ed8345-20220331
$ platon attach http://localhost:6789
Welcome to the PlatON JavaScript console!

instance: PlatONnetwork/10.1.1.60/v1.2.0-unstable-66ed8345-20220331/linux-amd64/go1.16.8

5. Proposal Processing

  • For nodes that have staked, please check whether the current node is in the following states through the blockchain explorer:
  1. Generating blocks
  2. Verifying
  3. Active

If the current node is in one of the above three states, please refer to the following command to vote, and the proposal id is <0xbca95edeb71463650f69136fbc05ff69e6250679693ddfbb88ce99a403b04030>:

# Example command of voting on the upgrade proposal
$ platon_mtool vote_versionproposal --proposalid 0xbca95edeb71463650f69136fbc05ff69e6250679693ddfbb88ce99a403b04030 --keystore $PLATON_MTOOLDIR/keystore/staking.json --config $PLATON_MTOOLDIR/validator/validator_config.json

If the node state is “Candidate”, a version statement is required. Please refer to the following command to issue a version statement.

#Example of version statement
$ platon_mtool declare_version --keystore $PLATON_MTOOLDIR/keystore/staking.json --config $PLATON_MTOOLDIR/validator/validator_config.json
  • For nodes that have not staked, skip this step.
  • If $PLATON_MTOOLDIR is not defined, the absolute path needs to be completed as needed in actual deployment.

6. Feedback

If your platon upgrade failed, please provide us feedback in the following channels.

  1. WeChat: Colinan
  2. WeChat group of validators
  3. Email: validator@platon.network
1 个赞