Re: 从 1 开始搭建 LikeCoin Chain 的主网络或测试网络节点续

Likecoin Chain 的 liked 换成单个二进制文件了,所以更新一下后半部分。

上一篇文章直到通过 SSH 连接到服务器的部分都是通用的。对于希望从 Docker 版切换过来的节点,可以参考咱之前介绍 Cosmosvisor 那篇文章

准备工作

官方文档和咱这里都以基于 dpkg 包管理器的 GNU/Linux 发行版为例,如果汝更习惯其它的发行版(例如咱其实用的是 Arch),那么咱相信汝自己也可以举一反三。
以及汝也应该能分的清楚下面每行开头的符号哪些是注释,哪些用来代替汝终端的提示符。

## 安装必要的依赖。
# apt install curl git make sudo 
## 取得 liked 的源代码。
$ cd ~
$ git clone https://github.com/likecoin/likecoin-chain.git --branch release/v2.x --single-branch
## 记得把 <My Validator> 换成汝想给自己的节点起的名字。
$ export MONIKER='<My Validator>'

接下来下载创世区块和引导节点的数据,根据汝打算是在主网络还是测试网络会有不同:

## 主网络
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'
## 测试网络
export GENESIS_URL='https://raw.githubusercontent.com/likecoin/testnets/master/likecoin-public-testnet-5/genesis.json'
export LIKED_SEED_NODES='7a38dfc59eb43b27cf2cc87b46a43e76aeaaf012@20.205.224.107:26656,11c0d57ae2b37122bd8e7de82a1b92c87bf3d45a@20.24.152.136:26656'

复制文件和生成 Systemd 单元:

$ cd ~/likecoin-chain
## 下载当前版本的 liked 并复制到当前用户的主目录。
$ make -C deploy setup-node
## 根据当前路径生成 Systemd 单元,中间会用到 sudo 命令,记得输入自己的密码。
$ make -C deploy initialize-systemctl

接下来应该可以启动 liked 服务了,从创世区块同步大概会花上一点时间。

# systemctl start liked

可以通过 curl 访问节点的 RPC 服务来获得运行状态,假如同步完成的话,result.sync_info.catching_up 会是 false ,例如:

$ curl -s localhost:26657/status
...
    "sync_info": {
      "latest_block_hash": "C557BDBF6575F0C1088930515E1F6FA640C8FC57CFF0BCAB1003612057CE6C3E",
      "latest_app_hash": "49E2D09CAC0A241799243FEE1E6627BE9FD869275CB711D66F0EA5C6CE11E322",
      "latest_block_height": "4155235",
      "latest_block_time": "2022-06-06T08:14:26.291157601Z",
      "earliest_block_hash": "9DEFBA987C2D0ACBD6B9E3A8311651F0043F3847A49D56C5AA047CDC247AE2E7",
      "earliest_app_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
      "earliest_block_height": "1",
      "earliest_block_time": "2021-08-18T13:30:00Z",
      "catching_up": false
    },

要查看 liked 的日志的话,可以用 journalctl 命令。更多的使用方法可以参考它的手册页: https://www.freedesktop.org/software/systemd/man/journalctl.html

## journalctl 默认会显示所有服务的日志。可以用 -u 参数来指定查看哪个服务的日志。
## -n 参数可以限制输出的行数,-r 可以反转日志输出的顺序(让最新的排在最前面)
## 如果想持续输出新的日志的话,加上 -f 参数就可以了。
## 根据不同发行版的策略,汝可能需要以 root 用户运行才能看到日志。
$ journalctl -u liked.service -n 100 -r

通过 State Sync 同步区块

从创世区块同步可能会需要很多时间,所以 Likecoin Chain 还提供一种直接从某个已知区块开始同步的方法,就是 State Sync 啦。

要使用 State Sync 的话,需要从创世区块的状态开始,如果汝之前已经有正在进行的同步的话,可以通过这条命令复位到初始状态。

$ ~/liked unsafe-reset-all

接下来是从现有的节点获得一个已知区块高度和它的散列值。

## result.block.header.height 是这个区块的高度,result.block_id.hash 是它的散列值,把它们复制出来备用。
## 以及测试网络的话,地址换成 https://likecoin-public-testnet-5.oursky.dev/rpc/block 。
$ curl -s https://fotan-node-1.like.co:443/rpc/block
{
  "jsonrpc": "2.0",
  "id": -1,
  "result": {
    "block_id": {
      "hash": "8155856C659552BFC49559B60912B2C3449DED909DF79416027FCB6D1646DACF",
      "parts": {
        "total": 1,
        "hash": "B42B990968E1F1FDD79BA9EA12970C8353A329AEFF14490C6398D8D15F3445C1"
      }
    },
    "block": {
      "header": {
        "version": {
          "block": "11"
        },
        "chain_id": "likecoin-mainnet-2",
        "height": "4155310",
        "time": "2022-06-06T08:21:50.476104478Z",
        "last_block_id": {
          "hash": "5EFFFD00D3C683AE2008BCC009539AFF4AFB6279EF89D90E23E01431089C01BF",
          "parts": {
            "total": 1,
            "hash": "1C0EF4CB27A762217B8CF986DB26FBC45D96743DE0237609DE391BEA8A273D2C"
          }
        }

调整 ~/.liked/config/config.toml 这个配置文件,主要是 [statesync] 这一节。

[statesync]
enable = true
# State Sync 要求从两个不同的已知节点获取已知区块的状态。
# 这是主网络可用的两个已知节点。
rpc_servers = "https://fotan-node-1.like.co:443/rpc/,https://fotan-node-2.like.co:443/rpc/"
# 这是测试网络的两个已知节点。
rpc_servers = "https://likecoin-public-testnet-5.oursky.dev:443/rpc/,https://likecoin-public-testnet-5-node2.oursky.dev:443/rpc/"
# 这是汝上一步获得的已知的区块高度。
trust_height = <known height>
# 这是汝上一步获得的已知高度的散列值。
trust_hash = "<known hash>"
trust_period = "168h0m0s"
discovery_time = "15s"
temp_dir = ""
chunk_request_timeout = "60s"
chunk_fetchers = "4"

接下来应该可以启动 liked 服务了。

调整配置文件

如果需要,汝可以调整 liked 的配置文件(~/.liked/config/config.toml~/.liked/config/app.toml)来符合汝的需要。这两个文件中已经有详细的注释可以参考了。

例如为了防止短时间内大量的恶意操作提高负载,有必要修改 ~/.liked/config/app.toml 里面 minimum-gas-prices 的值来设置最小的 Gas Price。

## 对于测试网络的话,最小的货币单位是 nanoekil 。(正好就是 like 反过来)
minimum-gas-prices = "1000nanolike"

修改完配置文件以后记得重新启动 liked 服务来应用新的设置。

# systemctl restart liked

创建操作者钱包

## KEY_NAME 是这个钱包在密钥环中的名称,以后会用得上。
$ export KEY_NAME='my-validator'
## 在密钥环中创建钱包,这里会要求输入两次用来保护密钥环的密码。
$ ~/liked keys add $KEY_NAME --keyring-backend file

创建完成以后会显示这个钱包的地址,公钥和助记词。

Enter keyring passphrase:
Re-enter keyring passphrase:
​
- name: validator
 type: local
 address: like1668dckejgjv63zj57zju65lufzuuhzue3hnrfd
 pubkey: likepub1addwnpepqw2rq99wt9xjhlcre9g4uuayur2s5d8zu6wakxdwxfa0d23u4djxj7zcxuj
 mnemonic: ""
 threshold: 0
 pubkeys: []
​
​
**Important** write this mnemonic phrase in a safe place.
It is the only way to recover your account if you ever forget your password.
giggly sludge posing culture domain playmaker afternoon probe surfer subscript aptitude rename scale uncut parasitic basics railroad glacial gerbil eternal

⚠️ 当然了,这个只是拿来示范用的,汝自己要记得把下面的助记词复制下来,不要告诉任何人!

⚠️ 当然了,这个只是拿来示范用的,汝自己要记得把下面的助记词复制下来,不要告诉任何人!

⚠️ 当然了,这个只是拿来示范用的,汝自己要记得把下面的助记词复制下来,不要告诉任何人!

(重要的话要讲三遍,笑)

如果以后需要查询钱包的地址的话,可以使用 liked keys show 命令:

## 默认显示的是 like1 开头的钱包地址,添加 --bech val 参数以后,可以显示 likevalop 开头的操作者地址。
## 以及会要求汝输入密钥环的密码。
$ ~/liked keys show $KEY_NAME --keyring-backend file

成为验证人

因为成为验证人需要首先有自我委托,所以记得向这个钱包里转入一定数量的 Likecoin,可以用上面的命令找到钱包的地址。

接下来用这一大行命令创建验证人,记得根据汝自己的情况修改那些参数:

$ ~/liked tx staking create-validator \
# 汝的起始自我委托量。
--amount=500000000000nanolike \
--pubkey=$(~/liked tendermint show-validator) \
# 汝验证人节点的名称
--moniker=$MONIKER \
# 起始佣金率,最大佣金率和佣金率每日调整上限。
# 注意最大佣金率和佣金率每日调整上限在创建完以后就不能更改了。
--commission-rate="0.10" \
--commission-max-rate="0.50" \
--commission-max-change-rate="0.05" \
# 最少的自我委托量
--min-self-delegation="500000000000" \
# 哪条链,如果是测试网络的话就是 "likecoin-public-testnet-5"
--chain-id="likecoin-mainnet-2" \
# 密钥环中钱包的名称
--from=$KEY_NAME \
--keyring-backend=file \
# Gas Price (不会真的叫燃气费吧),记得要和汝上面设置的 minimum-gas-prices 的值一样或者大点。
--gas-prices 10nanolike

然后输入密码并签名,如果一切顺利的话, ~/liked query tendermint-validator-set | grep “$(~/liked tendermint show-address)” 这条命令应该就能找到汝新创建的验证人节点了。不然在 BigDipper 或者 dao.like.co 上应该也看得到。

发表评论

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