为下一代 LikeCoin Chain 升级做好准备 – 与 Cosmosvisor 集成

千里之行始于足下?

顺便就是新版的验证人节点搭建教程了。(并不是,下次再说吧。)

LikeCoin Chain 在去年十月升级到代号为 Fotan (火炭)的新版本后,马上又要迎来另一次升级了。这次升级的主要内容大概有三个:

  • 引入 Cosmos 新增的 Cosmosvisor 模组,可以简化未来的升级流程。

因为第一次升级好像拖得有点久?(其实当天聚在一起升级的验证人们是很快啦,但是交易所之类的外部设施更新工具链可能需要更久的时间的样子。)

于是这次升级的第一步就是 Cosmos 新增的 Cosmosvisor 模组,这是基于 Cosmos 开发的链都适用的一个小型进程管理器,用来帮忙在版本升级时在不同的文件之间切换。

当新的版本升级提案通过以后,验证人们只要在指定的区块之前把新版本的二进制文件放到合适的目录内(也可以让 Cosmosvisor 在之前自动从指定的地方下载),到达目标的区块高度以后,Cosmosvisor 会自动切换成新版的文件并完成迁移工作。说不定可以减少升级造成的中断?

有关 Cosmosvisor 的详细信息可以参考 Cosmos SDK 的文档: https://docs.cosmos.network/v0.44/run-node/cosmovisor.html

  • 升级 Cosmos SDK 版本,引入新的 “like1” 钱包地址(同时和目前现行的 “cosmos1” 地址兼容)

有关开发新地址前缀的动机和效果之类的细节可以参考 LikeCoin DAO 的「LikeCoin 新地址格式 – “like1” 的故事」社群报。

  • 还有新的 NFT 功能?

所以新的测试网也搭建起来了呢,叫做 likecoin-public-testnet-4 ,原来的 testnet-3 也寿终正寝了。新测试网的区块浏览器( dao.like.co 同款)在这里: https://likecoin-public-testnet-4.netlify.app/

接下来的几个星期里呢,开发者和验证人们就要在新的测试网上一步一步测试新版的功能了。而咱作为比较关注新版本的家伙呢,自然也在新的测试网上建好了验证人节点。以及把目前在主链上运行的节点切换到和测试网上相同的二进制版本了。(就是不用跑在 Docker 容器里了嘛)

迁移至二进制版本

如果汝也是验证人,在像咱一样开始迁移之前:

  • 首先确认汝现在的验证人节点没有使用 ~/.liked (主目录下的 .liked 目录)作为存储数据的路径。因为新版的初始化脚本需要用到这个目录,如果是的话,在开始迁移前记得移动走,不然会被覆盖掉!
    • 咱下面的例子中就是 ~/likecoin-chain/.liked 了。(显然上层目录就是有 docker-compose.yml 的仓库)
  • 为了避免出现二次签名,在开始之前先用 docker-compose down 停掉汝现在正在运行的节点。好在应该不会不在线太久而 Jailed。

首先,在停下来节点以后更新一下仓库的源代码,然后切换到支持 Cosmosvisor 的 1.x 分支。

git fetch
git checkout release/v1.x

安装需要的依赖项,其实就是 make 啦。

apt update
apt install make

接下来生成初始的 .liked 目录,对于从原有节点迁移的时候来说呢,咱们只是为了获得新版的目录结构。所以还是记得确认汝之前没有使用 ~/.liked (主目录下的 .liked 目录)作为存储数据的路径。

# 记得把 MONIKER 后面的内容换成汝的验证人的名称。
export MONIKER=''
export GENESIS_URL='https://raw.githubusercontent.com/likecoin/mainnet/master/genesis.json'
export LIKED_SEED_NODES='913bd0f4bea4ef512ffba39ab90eae84c1420862@34.82.131.35:26656,e44a2165ac573f84151671b092aa4936ac305e2a@nnkken.dev:26656'
cd ~/likecoin-chain
make -C deploy setup-node

接下来把刚刚生成的 .liked 目录移动到别的地方备用,再把汝之前的目录移动过来。

mv ~/.liked ~/.liked.template
# 假如汝和咱一样把 likecoin-chain 仓库放在了主目录的话。
mv ~/likecoin-chain/.liked ~/.liked
cp -r ~/.liked.template/cosmovisor ~/.liked/cosmovisor

这个时候汝 ~/.liked 目录下面应该有下面四个目录:

config
cosmovisor
data
keyring-file

如果汝像咱一样在目录外面发现了别的文件的话(例如 .addressvalidator.infokeyhash 什么的),把它们放到 keyring-file 目录里:

mv *.address keyhash *.info keyring-file/

安装 Systemd 单元文件,然后启动节点,这个过程中可能会要求汝输入汝的用户的密码:

cd ~/likecoin-chain
make -C deploy initialize-systemctl
make -C deploy start-node

如果一切正常的话,可以和以前一样查询 RPC API 获得节点的状态:

curl -s localhost:26657/status

更新一下常用操作

# 如果是参考之前的文档搭建起来的验证人节点的话,密钥环的名称应该是“validator”,
# 汝也可以查看 ~/.liked/keyring-file 里的 .info 文件来确认。
export KEY_NAME="validator"
# 以及也许需要自己调节 --fees 参数。
# 投票
~/liked tx gov vote <这里是哪一号议案> <意见,yes no abstrain 还是 veto> \
 --chain-id='likecoin-mainnet-2' \
 --from=$KEY_NAME \
 --keyring-backend=file
# 提取委托回报和佣金
~/liked tx distribution withdraw-rewards \
  <这里是汝的验证人地址,cosmosvoloper 那个> \
  --commission \
  --chain-id='likecoin-mainnet-2' \
  --from=$KEY_NAME \
  --keyring-backend=file
# 修改验证人信息
~/liked tx staking edit-validator \
--moniker="New Name" \
--website="https://example.com" \
--details="Description of my validator" \
--commission-rate="0.05" \
--chain-id="likecoin-mainnet-2" \
--from=$KEY_NAME \
--keyring-backend=file \
--gas-prices 10nanolike
# 出狱……
~/liked tx slashing unjail \
--chain-id='likecoin-mainnet-2' \
--from=$KEY_NAME \
--keyring-backend=file

发表评论

您的电子邮箱地址不会被公开。