搭建开发环境

前面理论介绍已经比较充足了,下面进入动手阶段。首先来搭建量子智能合约的开发环境。主要工作就是安装量子链官方提供的 docker 镜像,镜像里面包含 Linux 操作系统,生成区块和部署合约的工具。然后就在开发环境下,创建一条区块链,每次创建区块的过程,就是记账过程,所以可以获得一些量子币作为奖励,当然这些量子币的流通范围就是我自己的这个开发环境之内。在我部署合约的时候,注意是部署到我自己这个 docker 开发环境中的时候,也一样是需要这些量子币的,这是对真实部署过程的全仿真模拟。

安装 docker 软件包

动手的第一步是安装 docker 。 到 docker 商店下载适合自己的 docker 应用版本。

下载并安装 docker 之后,图形界面中把 docker 启动起来,这样后续才能在命令行中使用 docker 命令。

下载量子链容器镜像

下面来下载量子链官方提供的最新的容器镜像。里面有我们需要的 Linux 系统, qtumd 也就是提供量子链各项功能的服务进程, 以及 Dapp 开发的相关工具。

docker pull hayeah/qtumportal

在命令行中执行 docker pull ,开始下载,后面这一串是 docker 镜像地址,hayeah 是开发者名,qtumportal 是这个镜像的名字。

几分钟后下载就完成了。

启动开发环境

下一步就可以来启动开发环境。

对于开发和测试,运行一个本地区块链是最方便的,因为在自己的电脑上进行各种操作都是不用真的花费量子币的。

创建一个新目录 qtum,之后的操作我们都在这个目录下面进行。

docker run -it --rm \
  --name myapp \
  -v `pwd`:/dapp \
  -p 9899:9899 \
  -p 9888:9888 \
  -p 3889:3889 \
  hayeah/qtumportal

启动环境需要长长的一串命令。简单介绍一下上面命令中的必须要明白的几个参数:

  • --name 后面指定的是这个 docker 的容器名,有了这个容器名,就可以连接到这里跑起来的这个镜像了
  • -v 把当前目录,也就是把我当前 Mac 系统 qtum 这个目录,映射为容器中的 Linux 系统的 /dapp 目录,这个相当于设置了一个共享文件夹,后续操作中会用。
  • -p 参数后面设置了几个端口,这样就把 docker 中的端口暴露给宿主机,也就是 Mac 系统了。例如这里,docker 中的 9899 中启动了一个 Web 服务,这样我在 Mac 中也可以用浏览器访问到了。这个后面也会实际用到。

因为这个启动命令比较长,所以我们把这一长串命令粘贴到 start.sh 的脚本中。

sh start.sh

这样每次启动容器镜像的时候就方便多了,只需要执行一下脚本即可。执行之后,可以在终端中看到一些输出信息,在 qtum 目录下也会多出一个新的目录 .qtum/,用来保存区块链数据。

停止容器镜像运行,可以使用组合键 ctrl+c

操作 qtum

环境启动起来了,如何进入这个环境操作 qtum 呢?

docker ps

首先来保证一下 docker 是否处于正常运行状态,使用 docker ps 命令。正常情况下,输出中可以看到 STATUS 也就是状态这一项,是 ON 也就是启动状态。

docker exec -it myapp sh

可以通过 docker exec 来登录到 docker 容器中的系统 shell,这里用到了之前提到的 myapp 也就是容器名。

命令执行成功后,可以看到命令行的命令提示符变成了 /dapp 了,表示已经进入了开发环境中的 Linux 系统了。

可以使用 qcli 命令和 qtumd,也就是量子链主进程进行交互。

qcli getinfo

获取一些区块链状态的基本信息。可以看到输出了一些当前区块链的信息。

生成新区块

开发环境的区块链最初是空的,正如在 qcli getinfo 命令的输出结果中看到的,目前还没有区块:

"blocks": 0

然后生成 600 个区块:

qcli generate 600

这样就可以生成600个区块,量子链的前500个区块中是没有记账奖励的。这里我们生成了600个,最后的100个中,每个区块会奖励记账人员,也就是我,2万个量子币。

再次执行 qcli getinfo,可以看到区块的数量已经变成了600了。

qcli getbalance

执行 getbalance 也就是读取余额的命令,可以看到我现在有2百万了量子币了。

总结

好,这节的内容先到这里,我们搭建了环境,生成了区块链,也获得了2百万了量子币,这些都为开发合约做好了准备。