上周是五一假期,为了更好地测试每周博客合约的各项功能,我选择战略性偷懒,成功被惩罚了 10 USDT 并平分给了三个监督者。Anyway,合约测试通过,可喜可贺!
上一篇文章完成了 EVM 与 Cosmos 的集成,并且成功在服务器进行多节点部署形成区块链网络。这篇文章我们会对这个区块链做一个简单测试,将上两周的内容整合上 Docker,并提供一个已经封装好的 Starter 工程:在这个 Starter 工程中,我们只需要通过少数命令就能通过 Docker 启动一个多节点的 Cosmos + EVM 区块链!
本节内容最终代码:https://github.com/0xja-eth/cosmos-evm-starter
回顾一下上篇文章的内容(第一篇:Cosmos + EVM 区块链搭建(二) ),我们启动一个区块链,分为以下几个阶段:
- 链安装阶段(Installation Phase):在每个节点上做好启动准备,比如完成仓库的拉取和 install
我们在上一篇文章已经将每个阶段对应执行的代码都给出来了,在这里做一个汇总:
链准备阶段
链协调阶段
链初始化阶段
链启动阶段
所有节点调用
所有节点调用
主节点调用
验证者节点调用
主节点调用
所有节点调用
此外,上一篇文章中还有好几处需要手动操作的步骤,比如节点 ID 的获取以及 config.toml 里 persistent_peers 字段的录入。为了更好地整合上 Docker 进行自动化部署,我们最好也尽可能地将其代码化:
获取节点 ID(node.sh)
#!/bin/bash
# Usage: ./node.shHOME_DIR
HOMEDIR="${HOME_DIR:-~/.evmd}"
CONFIG_TOML=$HOMEDIR/config/config.toml
if [ ! -f "$CONFIG_TOML" ]; then
echo "[node.sh] Error: Config file not found: $CONFIG_TOML"
exit 1
fi
NODE_ID=$(evmd tendermint show-node-id --home "$HOMEDIR")
if [ $? -ne 0 ]; then
echo "[node.sh] Failed to get node id."
exit 2
fi
echo "$NODE_ID"