0x00 前言

上周是五一假期,为了更好地测试每周博客合约的各项功能,我选择战略性偷懒,成功被惩罚了 10 USDT 并平分给了三个监督者。Anyway,合约测试通过,可喜可贺!

上一篇文章完成了 EVM 与 Cosmos 的集成,并且成功在服务器进行多节点部署形成区块链网络。这篇文章我们会对这个区块链做一个简单测试,将上两周的内容整合上 Docker,并提供一个已经封装好的 Starter 工程:在这个 Starter 工程中,我们只需要通过少数命令就能通过 Docker 启动一个多节点的 Cosmos + EVM 区块链!

0x01 实现路径

  1. 在本地启动单体 Cosmos 区块链节点(已完成)
  2. 在本地和服务器上启动多个 Cosmos 区块链节点并组网(已完成)
  3. 将 Cosmos 与 EVM 集成,并在本地运行测试(已完成)
  4. 使用集成后的区块链完成上述步骤 1 和 2(已完成)
  5. 整合上 Docker(本篇内容)
  6. 测试区块链功能——部署代币和DEX(本篇内容)

0x02 整合上 Docker

本节内容最终代码:https://github.com/0xja-eth/cosmos-evm-starter

准备各个阶段执行的脚本

回顾一下上篇文章的内容(第一篇:Cosmos + EVM 区块链搭建(二) ),我们启动一个区块链,分为以下几个阶段:

  1. 链安装阶段(Installation Phase):在每个节点上做好启动准备,比如完成仓库的拉取和 install
  1. 链初始化阶段(Initialization Phase):选定一个节点作为主节点,该节点确定创世文件,并定义好代币分配
  2. 链协调阶段(Coordination Phase):其他节点加入网络,生成质押交易(gentx),并且配置好节点间连接
  3. 链启动阶段(Launch Phase):启动每个节点,区块链正式运行

我们在上一篇文章已经将每个阶段对应执行的代码都给出来了,在这里做一个汇总:

链准备阶段

链协调阶段

链初始化阶段

链启动阶段

所有节点调用

所有节点调用

所有节点调用

所有节点调用

主节点调用

主节点调用

验证者节点调用

验证者节点调用

主节点调用

主节点调用

所有节点调用

所有节点调用

此外,上一篇文章中还有好几处需要手动操作的步骤,比如节点 ID 的获取以及 config.tomlpersistent_peers 字段的录入。为了更好地整合上 Docker 进行自动化部署,我们最好也尽可能地将其代码化: