Cover photo

Chainflip:可能是最详细的validator节点搭建教程

项目介绍

Chainflip 是一种去中心化、无需信任的协议,可实现不同区块链之间的跨链交换。

我们消除了任何类型的用户障碍或繁重的权衡,因此无需以前的加密知识,只需点击几下即可交换您的代币。

项目融资

  • 600W美元 由 Framework Ventures 领投。

  • 1000W美元 由 Framework Ventures、Blockchain Capital 和 Pantera Capital 领投。

测试网节点介绍

详细的官方介绍可以查看官方推文线程,我这里简单说下:

1、这是个长期运行的测试网,如果要运行验证节点,要做好长期运行的准备,并且目前不是激励性测试网。

2、运行测试网验证器,最好是具备一些Linux系统的基础知识。

3、虽然说不是激励性测试网,但官方twitter说了,虽然不会立即受到激励,但我们会在未来为大家提供许多惊喜,以奖励大家的参与。

Validator(验证器)搭建教程

在教程开始之前非常感谢小师妹的提醒,要不我就可能错过了。

第一步:准备工作

1.1 服务器要求

  • 操作系统:Ubuntu 20.04 - 请仅使用此操作系统

  • CPU:4 GHz | 4+ 核心,专用更好

  • 内存:8GB

  • 磁盘:50 GB(这可能会随着时间的推移而增加)

  • 带宽:推荐 1GBps 连接,每月 100 GB 组合上行/下行带宽

该机器必须 24/7 全天候可用,因此建议您仅在具有稳定可靠的互联网连接的机器上尝试此操作,例如 VPS 或专用服务器。

1.2 服务器必须开放以下端口

  • 30333 (TCP)

  • 8078 (TCP)

1.3 必须准备两个以太坊钱包(请一定要用新的钱包地址,因为需要用到钱包私钥)

  • Stake wallet : 用来质押的钱包 (也需要测试网 Goerli ETH,数量够发起交易就行,需要用此钱包地址到官方discord中领水)

  • Validator wallet : 操作验证器的钱包 (钱包内请提前准备至少0.1 Goerli ETH的测试币)

1.4 Alchemy Goerli测试网的RPC链接

这一块就不详细的介绍了,网上有很多教程,这里附上申请RPC的官方教程。最终我们需要的是HTTPS和WEBSOCKETS的链接地址。注意:key别泄露了。

https和wss链接信息
https和wss链接信息

第二步:开始搭建

正式开始之前,先说明下,我的教程和官方有些不太一样,主要是我没有创建验证器专用的账号,我是直接在root用户下进行安装的。当然为了安全来说,创建专用账户会好些,但都是相对的。不啰嗦了,正式开始。

2.1 获取Validator软件

sudo mkdir -p /etc/apt/keyrings \
&& curl -fsSL repo.chainflip.io/keys/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/chainflip.gpg
post image

2.2 添加源信息

echo "deb [signed-by=/etc/apt/keyrings/chainflip.gpg] https://repo.chainflip.io/perseverance/ focal main" | sudo tee /etc/apt/sources.list.d/chainflip.list
post image

2.3 更新系统,并安装Validator软件

sudo apt-get update \
&& sudo apt-get install -y chainflip-cli chainflip-node chainflip-engine
post image

这一步更新可能会慢些,耐心等待完成。

第三步:配置和生成验证器密钥

3.1 创建密钥保存的目录,并进入此目录

sudo mkdir /etc/chainflip/keys \
&& cd /etc/chainflip/keys

3.2 还记的在1.3步骤中提前准备的两个钱包地址吗?现在就需要用到Validator wallet的私钥了,将验证器钱包的私钥导出,并运行下面的命令(注意将“你的验证器钱包私钥”替换为自己的钱包私钥)。注意:如果私钥前面有0x,请删除0x。

YOUR_VALIDATOR_WALLET_PRIVATE_KEY=你的验证器钱包私钥 \
&& echo -n "YOUR_VALIDATOR_WALLET_PRIVATE_KEY" |  sudo tee /etc/chainflip/keys/ethereum_key_file

3.3 生成验证器Key

chainflip-node key generate
post image
  • Secret phrase:验证器的助记词(不要泄露)

  • Secret seed:验证器私钥(不要泄露)

  • Public key (SS58):验证器公钥(stake时需要此地址)

3.3.1 将验证器私钥写入到文件,需要把下面命令中的YOUR_CHAINFLIP_SECRET_SEED替换为3.3步骤中Secret seed显示的内容(包含0x)。

SECRET_SEED=YOUR_CHAINFLIP_SECRET_SEED \
&& echo -n "${SECRET_SEED:2}" | sudo tee /etc/chainflip/keys/signing_key_file

3.4 生成节点密钥

sudo chainflip-node key generate-node-key --file /etc/chainflip/keys/node_key_file

已经过以上步骤后,你应该能在/etc/chainflip/keys目录中看到如下三个文件。(请不要向任何人共享这些文件,绝对私密文件。)

post image

第四步:创建配置文件

4.1 创建配置文件目录及文件

sudo mkdir -p /etc/chainflip/config \
&& sudo touch /etc/chainflip/config/Default.toml

4.2 执行下面的命令,在执行之前,需要先将IP_ADDRESS_OF_YOUR_NODE字段修改为自己的服务器公网IP,将1.4步骤中申请的RPC链接分别替换WSS_ENDPOINT_FROM_ETHEREUM_CLIENT和HTTPS_ENDPOINT_FROM_ETHEREUM_CLIENT字段,其他内容不需要修改,然后执行即可。

cat>/etc/chainflip/config/Default.toml<<EOF
#Default configurations for the CFE
[node_p2p]
node_key_file = "/etc/chainflip/keys/node_key_file"
ip_address="IP_ADDRESS_OF_YOUR_NODE"
port = "8078"

[state_chain]
ws_endpoint = "ws://127.0.0.1:9944"
signing_key_file = "/etc/chainflip/keys/signing_key_file"

[eth]
#Ethereum RPC endpoints (websocket and http for redundancy).
ws_node_endpoint = "WSS_ENDPOINT_FROM_ETHEREUM_CLIENT"
http_node_endpoint = "HTTPS_ENDPOINT_FROM_ETHEREUM_CLIENT"

#Ethereum private key file path. This file should contain a hex-encoded private key.
private_key_file = "/etc/chainflip/keys/ethereum_key_file"

[signing]
db_file = "/etc/chainflip/data.db"
EOF

完成后的样子大概如下图所示

post image

第五步:启动节点

5.1 启动验证节点

sudo systemctl start chainflip-node

5.1.1 查看验证节点状态(active (running) 代表运行正常)

sudo systemctl status chainflip-node
post image

5.1.2 设置chainflip-node开机启动

sudo systemctl enable chainflip-node

5.1.3 查看同步日志,整个同步速度还是很快的基本上半个小时左右就能同步完成了。

tail -f /var/log/chainflip-node.log
post image
  • Syncing:代表正在同步

  • target:当前网络高度

  • best:当前同步进度

  • finalized:当前已同步完成

  • Idle: 代表当前节点已经同步完成

退出查看日志按键盘ctrl/control + c即可。

5.2 启动chainflip-engine

重要说明:要运行此步骤必须要等待节点同步完成才可以,不然会报错。

重要说明:要运行此步骤必须要等待节点同步完成才可以,不然会报错。

重要说明:要运行此步骤必须要等待节点同步完成才可以,不然会报错。

sudo systemctl start chainflip-engine

5.2.1 查看chainflip-engine状态(active (running) 代表运行正常)

sudo systemctl status chainflip-engine
post image

5.2.2 设置chainflip-engine开机启动

sudo systemctl enable chainflip-engine

5.2.3 查看chainflip-engine日志

tail -f /var/log/chainflip-engine.log

日志会显示我们当前还没有质押的警告,这个我们接下来操作质押。

第六步:质押

6.1 在质押之前,我们需要先到官方discord中领水,进入discord中后先在join-testnet频道点击按钮才能显示出来faucet频道。

post image

6.2 在faucet频道,发送 !drip stake钱包地址即可领取官方发的测试币TFLIP。stake钱包就是我们在1.3步骤中提前准备的钱包。

6.3 打开官方stake网站,使用我们的stake钱包链接网站。然后点击Add node按钮,在弹出的输入框中填写我们的验证器公钥(就是3.3步骤中生成的SS58类型的公钥),填写质押的数量,最后点击下方按钮即可。这里需要两次操作approval和stakes因为我操作过了, 所以只显示了stakes。

post image

6.4 当我们在网站上质押完成后,可以在My nodes页面查看验证器信息。你现在查看到的状态可能和我显示的不一样,这是因为在网站上质押之后,还需要到服务器上设置验证器的其他信息。

post image

第七步:在服务器上上设置验证器的其他信息

7.1 注册验证器密钥

sudo chainflip-cli \
      --config-path /etc/chainflip/config/Default.toml \
      register-account-role Validator

7.2 激活验证器

sudo chainflip-cli \
    --config-path /etc/chainflip/config/Default.toml \
    activate

7.3 开启rotate

sudo chainflip-cli \
    --config-path /etc/chainflip/config/Default.toml rotate

7.4 可选,设置验证器的名字,将下面命令中的my-name修改为其他任何你想显示的名字

sudo chainflip-cli \
    --config-path /etc/chainflip/config/Default.toml \
    vanity-name my-name

7.5 当运行完上面的命令后,还需要重启下chainflip-engine,稍等片刻后,再到stake网站上查看验证器状态就会发生变化了。

sudo systemctl restart chainflip-engine

最后

整个教程基本到这里就结束了,如果你在运行过程中有什么问题,请到官方Discord中询问。

如果觉得教程还不错,请多多点赞关注转发哈。

文章引用