NEO 私有链搭建 (Docker)

前段时间在对接 NEO,自己搭建了一个 NEO 的私有链测试,NEO 相对来说文档还是比较齐全的。但是,为了资金安全,我们的私钥是自己保存的。所以不能使用 NEO 提供的需要传入私钥的交易接口。所以只能自己序列化,使用 sendrawtransaction 向链上发送交易。但是 NEO 没有对这一块的文档支持。最后参考其他项目完成的序列化这一块的。话归正题,还是来说说私有链的搭建过程吧。

准备

这个阶段,需要安装 dockerdocker-compose,因为我使用的是 NEO 的一个社区提供的 docker 镜像搭建的。

私有链搭建

手动构建镜像

使用 COZ 提供的脚本构建

可以拉取 https://github.com/CityOfZion/neo-privatenet-docker 这个项目。执行项目中包含的 docker_build.sh 这个脚本会在本地手动构建出一个 docker-privatenet 的镜像,这个镜像中会模拟运行 4 个节点。分别是 20333 20334 20335 20336 几个端口

1
git clone https://github.com/CityOfZion/neo-privatenet-docker.git
2
cd neo-privatenet-docker
3
./docker_build.sh

使用 Dockerfile 构建

在项目中有 Dockerfile,使用这个 Dockerfile 也可以在本地构建出镜像。

1
docker-compose up -d

使用这个命令会自动构建出镜像并且启动。

拉取 dockerhub 的镜像

当然 COZ 也把他们构建好的镜像上传到了 Docker 镜像库。可以直接使用:

1
docker pull cityofzion/neo-privatenet
2
docker run --rm -d --name neo-privatenet -p 20333-20336:20333-20336/tcp -p 30333-30336:30333-30336/tcp cityofzion/neo-privatenet

同样也可以在本地构建并启动一个私有链镜像。

NEO-GUI

通过上面的步骤就可以在本地 docker 中看到运行的镜像。下面就可以来配置 NEO-GUI 官方钱包了。

下载 NEO-GUI

这里就比较奇怪了,NEO-GUI 是一个只有 Windows 版本的钱包。我用的是 Linux,所以在本地使用 VirtualBox 搭建了一个虚拟机跑的。比较麻烦,希望 NEO 团队还是考虑一下出一个 NEO-GUI 的 qt 版本吧。但是也还能用。可以去这里下载 NEO-GUI https://github.com/neo-project/neo-gui-2.x/releases,下载完成直接解压到本地就可以了。

配置 NEO-GUI

protocol.json
config.json
将这两个文件的内容覆盖到 NEO-GUI 解压的根目录下对应的文件。
配置完成之后启动即可。

获取币

这里,COZ 给提供了一个私钥,这个私钥中有 1亿 NEO,GAS 会自动生成,所以不用担心。

1
KxDgvEKzgSBPPfuVfw67oPQBSjidEiqTHURKSDL1R7yGaGYAeYnr

导入私钥

新建一个钱包,然后在 NEO-GUI 中右键 -> 导入 -> 导入 WIF。这样就可以看到会有 1亿 个 NEO 币。

添加附加插件

NEO 文档中有说到,一些 RPC 接口需要添加附加插件才可以使用,否则请求过去会报错。

下载插件

在这个地址中下载对应版本的插件:https://github.com/neo-project/neo-modules/releases
这些插件不是全部必须的,你可以根据你需要使用的功能下载对应的插件,然后将这些插件解压到运行私有链的 Docker 镜像中的 neo-cli 中的 Plugins 中

添加到镜像

将插件复制到 neo-privatenet 镜像中。

1
docker cp ./Plugins/* neo-privatenet:/plugin

然后进入镜像

1
docekr exec -it neo-privatenet /bin/bash

复制插件到每一个节点的 Plugins 目录中。

1
rm -rf /opt/node1/neo-cli/Plugins/*
2
rm -rf /opt/node2/neo-cli/Plugins/*
3
rm -rf /opt/node3/neo-cli/Plugins/*
4
rm -rf /opt/node4/neo-cli/Plugins/*
5
cp -r /plugin/* /opt/node1/neo-cli/Plugins/
6
cp -r /plugin/* /opt/node2/neo-cli/Plugins/
7
cp -r /plugin/* /opt/node3/neo-cli/Plugins/
8
cp -r /plugin/* /opt/node4/neo-cli/Plugins/

重启镜像

配置完成之后就可以重启所有节点,重新加载插件。4个节点都是使用 screen 运行的,使用 screen -ls 可以看到 4 个节点的运行状态。

1
screen -r -d node1
2
screen -r -d node2
3
screen -r -d node3
4
screen -r -d node4

分别使用上面命令进入每一个节点中,然后用 CTRL + c 停止节点运行。
最后再执行 /opt/run.sh 重新启动所有节点。

到这里就私有链就部署完成了。当然如果有需要 neo-scan 也可以去 CityOfZion 的 github 参考安装。