IBAX区块链平台 区块链网络部署
本章节演示如何部署自己的区块链网络。
部署示例
以三个节点为示例部署区块链网络。
三个网络节点:
- 节点1是区块链网络中的第一个节点,它可以生成新区块并从连接到它的客户端发送交易;
- 节点2是另一个荣誉节点,它可以生成新区块并从连接到它的客户端发送交易;
- 节点3是一个守护节点,它不能生成新区块,但可以从连接到它的客户端发送交易。
三个节点部署以下配置:
节点使用的示例地址和端口如下表所述:
| | |
节点 | 组件 | IP和端口 |
1 | PostgreSQL | 127.0.0.1:5432 |
1 | Centrifugo | 192.168.1.1:8000 |
1 | go-ibax (TCP服务) | 192.168.1.1:7078 |
1 | go-ibax (API服务) | 192.168.1.1:7079 |
2 | PostgreSQL | 127.0.0.1:5432 |
2 | Centrifugo | 192.168.1.2:8000 |
2 | go-ibax (TCP服务) | 192.168.1.2:7078 |
2 | go-ibax (API服务) | 192.168.1.2:7079 |
3 | PostgreSQL | 127.0.0.1:5432 |
3 | Centrifugo | 192.168.1.3:8000 |
3 | go-ibax (TCP服务) | 192.168.1.3:7078 |
3 | go-ibax (API服务) | 192.168.1.3:7079 |
部署阶段
您自己的区块链网络必须分几个阶段部署:
服务端部署
- 部署第一个节点
- 部署其他节点
前端部署
区块链网络配置
- 创建创始人的帐户
- 导入应用、角色和模版
- 将第一个节点添加到节点列表中
添加其他验证节点
- 将成员添加到共识角色
- 创建节点所有者帐户
- 添加节点所有者为Validators角色并通过投票添加新验证节点
服务端部署
部署第一个节点
第一个节点是一个特殊节点,因为它必须用于启动区块链网络。区块链的第一个区块由第一个节点生成,所有其他节点从中下载区块链。第一个节点的所有者为平台创始人。
依赖关系和环境设置{#dependencies-and-environment-settings}
sudo
Debian 9的所有命令必须以非root用户身份运行。但是某些系统命令需要执行超级用户权限。默认情况下,Debian 9上没有安装sudo,您必须先安装它。
- 成为超级用户。
- 升级您的系统。
- 安装sudo。
- 将您的用户添加到sudo组。
- 重启后,更改生效。
Go 语言
按照 官方文档 (opens new window) 的说明按照Go。
- 从 Golang官方网站 (opens new window)或通过命令行下载最新的稳定版Go(> 1.10.x):
- 将安装包解压缩到
/usr/local
.
- 添加
/usr/local/go/bin
到PATH环境变量 (位于 /etc/profile
或$HOME/.profile
)。
- 要使更改生效,请执行
source
该文件,例如:
- 删除临时文件:
PostgreSQL
- 安装PostgreSQL(> v.10)和psql:
Centrifugo
- 从 GitHub (opens new window)或通过命令行下载Centrifugo 1.8.0版本:
- 删除临时文件:
目录结构
对于Debian 9 系统,建议将区块链平台使用的所有软件存储在单独的目录中。
在这里使用 /opt/backenddir
目录,但您可以使用任何目录。在这种情况下,请相应地更改所有命令和配置文件。
- 为区块链平台创建一个目录:
- 使您的用户成为该目录的所有者:
- 为Centrifugo、go-ibax 和节点数据创建子目录。所有节点数据都存储在名为
nodeX
的目录中,其中 X
为节点号。根据要部署的节点,node1
为节点1,node2
为节点2,以此类推。
创建数据库
- 将用户密码postgres更改为默认密码123456。您可以设置自己的密码,但必须在节点配置文件 config.toml中进行更改。
- 创建节点当前状态数据库,例如 chaindb:
- 创建Centrifugo配置文件:
您可以设置自己的 secret,但是您还必须在节点配置文件 config.toml 中更改它。
安装 go-ibax
- 从GitHub下载 https://github.com/ibax-io/go-ibax (opens new window):
- 将 go-ibax 二进制文件复制到
/opt/backenddir/go-ibax
目录。如果您使用的是默认的Go工作区 (opens new window) 则二进制文件位于 $HOME/go/bin
目录:
- 创建节点1配置文件:
- 生成节点1的密钥,包括节点公私钥和账户公私钥:
- 生成第一个区块:
- 初始化数据库:
启动第一个节点服务端
要启动第一个节点服务端,您必须启动两个服务:
如果您没有将这些文件创建services (opens new window) ,那么您可以从不同控制台的目录中执行二进制文件。
- 运行centrifugo:
- 运行 go-ibax:
部署其他节点
所有其他节点(节点2和节点3)的部署与第一个节点类似,但有三个不同之处:
- 您不需要生成第一个区块。但是它必须从节点1复制到当前节点数据目录;
- 该节点必须通过配置
--nodesAddr
选项从节点1下载区块; - 该节点必须使用自己的地址和端口。
节点2
按照以下一系列操作:
依赖关系和环境设置
创建数据库
Centrifugo
安装 go-ibax
创建节点2配置文件:
复制第一个区块文件到节点2,例如,您可以通过 scp
在节点2执行该操作:
生成节点2的密钥,包括节点公私钥和账户公私钥:
初始化数据库:
运行centrifugo:
运行 go-ibax:
结果,节点从第一个节点下载区块。该节点不是验证节点,因此无法生成新区块。节点2将后面添加到验证节点列表中。
节点3
按照以下一系列操作:
依赖关系和环境设置
创建数据库
Centrifugo
安装 go-ibax
创建节点3配置文件:
复制第一个区块文件到节点3,例如,您可以通过 scp
在节点3执行该操作:
生成节点3的密钥,包括节点公私钥和账户公私钥:
初始化数据库:
运行centrifugo:
运行 go-ibax:
结果,节点从第一个节点下载区块。该节点不是验证节点,因此无法生成新区块。客户端可以连接到该节点,它可以将交易发送到网络。
前端部署
只有在Debian 9(Stretch)64位官方发行版 (opens new window) 上安装 GNOMEGUI,Govis客户端才能由 yarn
包管理器构建。
软件先决条件
Node.js
- 从 Node.js官方网站 (opens new window)或通过命令行下载Node.js LTS版本8.11 :
- 安装Node.js:
Yarn
- 从 yarn的Github仓库 (opens new window)或通过命令行下载Yarn版本1.7.0 :
- 安装Yarn:
构建 Weaver 应用程序
- 通过git从 https://github.com/ibax-io/ibax-front (opens new window) 下载 Weaver 的最新版本:
- 通过Yarn安装 Weaver 依赖项:
添加区块链网络配置
- 创建包含有关节点连接信息的 settings.json 文件:
- 在任何文本编辑器中编辑 settings.json 文件,并以此格式添加所需的设置:
三个节点的 settings.json 文件示例:
构建 Weaver 桌面版应用程序
- 使用yarn构建桌面版:
- 桌面版将打包成AppImage后缀格式:
构建之后,您的应用程序就可以使用了,但是其连接配置 将无法更改。如果这些设置需要更改,则必须构建新版本的应用程序。
构建 Weaver Web应用程序
- 构建Web应用程序:
构建之后,可再发行文件将放置到 build目录中。您可以使用您选择的任何Web服务器进行部署,settings.json文件也必须放在该目录。请注意,如果连接设置发生更改,则无需再次构建应用程序。而是编辑settings.json 文件并重新启动Web服务器。
- 出于开发或测试目的,您可以构建Yarn的Web服务器:
之后,您的 Weaver Web应用程序将在以下位置可用: http://localhost:5000
。
创建创始人的帐户
为第一个节点所有者创建一个帐户。该帐户是新区块链平台的创始人,并具有管理员访问权限。
运行 Weaver;
使用以下数据导入现有帐户:
- 节点所有者私钥的备份加载位于
/opt/backenddir/node1/PrivateKey
文件中。
登录该账户后,由于此时尚未创建角色,因此请选择 Without role 选项。
导入应用、角色和模版
此时,区块链平台处于空白状态。您可以通过添加支持基本生态系统功能的角色、模版和应用程序框架来配置它。
- 克隆应用程序存储库;
在 Weaver 中导航到 Developer > 导入;
按此顺序导入应用:
A./opt/backenddir/dapps/system.json
B./opt/backenddir/dapps/conditions.json
C./opt/backenddir/dapps/basic.json
D./opt/backenddir/dapps/lang_res.json
导航到 Developer > 角色,然后单击 安装默认角色;
通过右上角的配置文件菜单退出系统;
以 Developer 角色登录系统;
导航到 Home > 投票 > 模版列表,然后单击 安装默认模版。
将第一个节点添加到节点列表中
导航到 Developer > 平台参数,然后单击 first_nodes 参数;
指定第一个区块链网络节点的参数。
- public_key - 节点公钥位于
/opt/backenddir/node1/NodePublicKey
文件;
添加其他荣誉节点
将成员添加到共识角色
默认情况下,只有共识角色(Consensus)的成员才能参与添加其他 荣誉节点所需的投票。这意味着在添加新的 荣誉节点之前,必须为该角色指定生态系统的成员。
在本章节中,创始人的帐户被指定为共识角色的唯一成员。在生产环境中,必须将该角色分配给平台执行治理的成员。
- 导航到 Home > 角色 ,然后单击共识角色(Consensus);
- 单击 分配 将创始人的帐户分配给该角色。
创建其他节点所有者帐户
运行 Weaver;
使用以下数据导入现有帐户:
- 节点所有者私钥的备份加载位于
/opt/backenddir/node2/PrivateKey
文件中。
登录该账户后,由于此时尚未创建角色,因此请选择 Without role 选项;
导航到 Home > 个人信息,然后单击个人信息名称;
添加帐户详细信息(个人信息名称,说明等)。
添加节点所有者为Validators角色
新节点所有者操作:
A. 导航到 Home > 验证者;
B. 单击 创建请求 并填写验证者候选人的申请表;
C. 单击 发送请求。
创始人操作:
A. 以共识角色(Consensus)登录;
B. 导航到 Home > 验证者;
C. 根据候选人的请求点击"播放"图标开始投票;
D. 导航到 Home > 投票,然后单击 更新投票状态;
E. 单击投票名称并为节点所有者投票。
结果,新节点所有者的帐户被分配给 Validator 角色,并且新节点也被添加到荣誉节点列表中。