前几天,Evmos节点升级,其中一个主要的更新是缩短出块的速度。从之前的大概6秒每块,缩短到大概2秒每块
由于大幅缩短了出块速度,之前跑Evmos验证人的服务器显然跟不上出块的速度,频繁的丢块。一丢块,就跟不上同步速度,导致连续的丢块
尝试调整不同的节点设置,都不能解决连续丢块的问题,所以决定更换服务器,换一个NVMe SSD的服务器,因为之前的服务器丢块很大原因是硬盘读写速度跟不上同步速度。
迁移过程还算顺利。迁移Evmos验证人节点后,丢块的次数大大降低了。
这里写一下迁移Evmos验证人节点的过程:
安装GO 1.17
sudo rm -rf /usr/local/go;
curl https://dl.google.com/go/go1.17.linux-amd64.tar.gz | sudo tar -C/usr/local -zxvf - ;
cat <<'EOF' >>$HOME/.profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
EOF
source $HOME/.profile
#安装完成后运行以下命令查看版本
go version
安装其他必要的环境
sudo apt-get update -y && sudo apt-get upgrade -y;
sudo apt-get install build-essential -y;
下载源代码并编译
git clone https://github.com/tharsis/evmos
cd evmos && git checkout tags/v6.0.1
make install
安装完成后可以运行 evmosd version --long 检查是否安装成功
evmosd version --long
name: evmos
server_name: evmosd
version: 6.0.1
初始节点
evmosd init <moniker> --chain-id=evmos_9001-2
*<moniker>
改成你要设置的名字
导入钱包
evmosd keys add <your key name> --recover
*<yourKeyName>
改成你要设置的钱包名
下载genesis.json
curl https://archive.evmos.org/mainnet/genesis.json> ~/.evmosd/config/genesis.json
检查Genesis文件是否正确
cd ~/.evmosd/config
echo "4aa13da5eb4b9705ae8a7c3e09d1c36b92d08247dad2a6ed1844d031fcfe296c genesis.json" | sha256sum -c
修改app.toml
nano ~/.evmosd/config/app.toml
修改以下设置:
minimum-gas-prices = "25000000000aevmos"
pruning = "custom"
pruning-keep-recent = "100"
pruning-keep-every = "0"
pruning-interval = "10"
snapshot-interval = 0
修改config.toml
nano ~/.evmosd/config/config.toml
修改以下设置:
indexer = "null"
安装lz4
sudo apt update
sudo apt install snapd -y
sudo snap install lz4
下载节点备份
从https://polkachu.com/tendermint_snapshots/evmos 上下载备份
下载+解压文件命令:
curl -o - -L https://snapshots1.polkachu.com/snapshots/evmos/evmos_1141681.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.evmosd
运行节点(使用Cosmovisor)
下载并设置Cosmovisor
git clone https://github.com/cosmos/cosmos-sdk
cd cosmos-sdk
git checkout v0.44.6
make cosmovisor
cp cosmovisor/cosmovisor $GOPATH/bin/cosmovisor
cd $HOME
mkdir -p ~/.evmosd
mkdir -p ~/.evmosd/cosmovisor
mkdir -p ~/.evmosd/cosmovisor/genesis
mkdir -p ~/.evmosd/cosmovisor/genesis/bin
mkdir -p ~/.evmosd/cosmovisor/upgrades
echo "# Setup Cosmovisor" >> ~/.profile
echo "export DAEMON_NAME=evmosd" >> ~/.profile
echo "export DAEMON_HOME=$HOME/.evmosd" >> ~/.profile
echo 'export PATH="$DAEMON_HOME/cosmovisor/current/bin:$PATH"' >> ~/.profile
source ~/.profile
cp $GOPATH/bin/evmosd ~/.evmosd/cosmovisor/genesis/bin
创建背后运行服务
sudo tee /etc/systemd/system/evmosd.service > /dev/null <<EOF
[Unit]
Description=Evmos Daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) start
Restart=always
RestartSec=3
LimitNOFILE=infinity
Environment="DAEMON_HOME=$HOME/.evmosd"
Environment="DAEMON_NAME=evmosd"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
[Install]
WantedBy=multi-user.target
EOF
创建好后,更新,开启节点服务
sudo -S systemctl daemon-reload
sudo -S systemctl enable evmosd
sudo -S systemctl start evmosd
上面的命令运行好后,你的节点就开启了
用下面命令查看服务:
查看服务状态
systemctl status evmosd
查看服务日志
journalctl -u evmosd -f
等节点同步成功后,把旧节点停止,然后迁移验证人文件到新的服务器
迁移验证人文件
迁移验证人节点需要的文件是:
- ~/.evmosd/config/priv_validator_key.json
- ~/.evmosd/config/node_key.json
把上面2个文件搬到新的服务器
重启Evmos节点
systemctl restart evmosd
重启前请确定旧的节点已经停止,不然同时2个节点一起跑会导致双签