FISCOBCOS~联盟链部署

续前文,开始进行区块链部署。

部署前准备

首先清楚联盟链,是需要多家机构组成联盟,因此在部署上稍微有区别。其中 FISCO BCOS 支持多群组概念,也就是意思说,多个组织组成多个联盟,而且联盟中可以允许共同的组织节点。

FISCO BCOS 部署需要 Linux 平台,建议使用 CentOS 7 平台,同时安装可能的依赖软件 OpenSSLPython 等。

安装部署工具

如果未安装部署工具,请先安装部署工具。

部署工具有两种安装方法,第一从其他组织拷贝,其次是在线安装。

从其他组织拷贝的工具,需要安装 Python的 configparser 包。

在线安装的方法需要使用 git 工具下载:

git clone https://github.com/FISCO-BCOS/generator.git

该工具为 Python 需要安装相应的依赖,执行项目的命令安装。

cd generator
bash ./scripts/install.sh

完成之后就可以下载部署工具了。

./generator --download_fisco ./meta

由于工具可用自动进行一些证书的生成,因此使用组织自己的 cert.cnf 替换 generator/scripts 目录下的同名文件。

新建节点

一般情况下,一个组织创建节点意味要加入新的群组了,因此二者是对应的。

首先将之前CA下发的证书以及自己组织的私钥存放在 meta 目录下,一般情况下文件如下:

ca.crt agency.crt agency.key

然后修改 meta/node_deployment.ini 格式如下,主要根据实际修改

[group]
group_id=1

[node0]
; Host IP for the communication among peers.
; Please use your ssh login IP.
p2p_ip=127.0.0.1
; Listening IP for the communication between SDK clients.
; This IP is the same as p2p_ip for the physical host.
; But for virtual host e.g., VPS servers, it is usually different from p2p_ip.
; You can check accessible addresses of your network card.
; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/
; for more instructions.
rpc_ip=127.0.0.1
p2p_listen_port=30300
channel_listen_port=20200
jsonrpc_listen_port=8545

[node1]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
p2p_listen_port=30301
channel_listen_port=20201
jsonrpc_listen_port=8546

根据实际配置,实际几个节点就配置几个。注意此处的P2P IP地址,需要其他节点可访问的地址。

配置完成之后就可以生成节点证书了,

./generator --generate_all_certificates ./agency_node_info

会在目录下生成类似下面的文件

cert_127.0.0.1_30300.crt cert_127.0.0.1_30301.crt peers.txt

至此必须的信息已经产生了,需要统一操作,在此协商某个组织担任群组的领导组织,该组织负责协调和生成群组信息。

所有其他群组将刚产生的 agency_node_info 目录下的文件统一提交给这个协商出来的领导组织来负责统一处理。

群组领导者操作

将获取到的 peers.txt 文件(含自己的)合并,形成 peers_all.txt

将收集到的 crt 文件统一存放到 meta 目录下。

修改 conf/group_genesis.ini 文件,把所有节点信息填入,群组ID根据实际规划填写

[group]
group_id=1

[nodes]
node0=127.0.0.1:30300
node1=127.0.0.1:30301
node2=127.0.0.1:30302
node3=127.0.0.1:30303

然后执行下面的命令生成群组文件

./generator --create_group_genesis ./group

会在 group 目录下生成群组文件 group.1.genesis (1是群组号,根据实际可能不同)

现在将 group.1.genesispeers_all.txt 下发给所有群组内的组织。

所有组织的操作(含组织领导)

各个组织将 group.1.genesispeers_all.txt 放到 meta下,然后复制一份 peers_all.txtpeers_others.txt 并将本组织的节点从中删除,然后执行生成节点

./generator --build_install_package ./meta/other_peers.txt ./node

然后就在 node 目录生成了可运行的节点以及配置,并且提供了启动所有的功能,执行

bash node/start_all.sh

新增组织的操作

这里有必要说一下,如果区块链已经运营了,而需要新增某个组织进入,此时该组织按照上面所有组织的操作进行,不同之处在于执行完成之后,需要领导节点的配合。操作如下(有本节点和领导节点的配合操作,请注意):

  • 新组织查看 node/node_x.x.x.x_xxx/conf/node.nodeid 将获取的节点ID提交给领导组织,大概128字节长。

  • 领导组织获取节点ID之后,通过控制台注册

    addSealer {nodeid}

控制台操作稍微附录介绍

节点扩容与退出

节点扩容

扩容节点的方案是生成节点,然后在其他节点加入P2P网络,之后在链上注册。

首先下载节点生成脚本

curl -LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_node_cert.sh && chmod u+x gen_node_cert.sh

然后执行生成新节点命令,假设生成到 node_new 目录

./gen_node_cert.sh -c ./meta -o node_new

然后将生成的节点目录拷贝到 node 目录下重命名(按其他节点命名规则)

然后将群组内其他节点的 config.ini start.sh stop.sh 等文件拷贝到新节点目录下

然后修改 config.ini 根据本节点实际情况填写

再拷贝群组内其他节点的 group.X.genesis group.X.ini 文件到 conf 目录,不修改

然后执行节点目录内的 start.sh 即可启动节点。

注意:因为新节点接入,建议群组内其他节点的P2P 列表添加新节点并重启。

接下来该新节点参照前述内容进行链上注册。

节点退出

节点退出与节点扩容操作相反,大致需要以下几步

  • 首先在有权限的控制台上将该节点设置为游离节点

  • 然后在群组内其他节点将该节点P2P信息删除

  • 然后重启群组内节点,如果某个节点没有配置过该P2P,可不用重启

黑白名单

默认未做设置的话,没有任何限制,当启用任意黑名单或白名单,功能就启用了。

在配置文件的 config.ini 中有黑白名单配置,其中

  • certificate_blacklist 是黑名单
  • certificate_whitelist 是白名单配置

其中黑名单优先(黑白名单都有的节点,黑名单生效)

附录

控制台下载

./generator --download_console ./ --cdn

下载完成之后,修改 console/conf/applicationContext.xml 内节点信息,并将节点的证书和CA证书等拷贝到目录,进入控制台需要权限,命令如下

cd console
sh start.sh 1 -pem xxxx.pem

PKCS账号使用 -p12 参数。账号见账号生成,同时请注意账号权限。

账号生成

区块链使用的是公私钥认证的方式,因此所有的操作都基于此。

针对账号创建,由于 OpenSSL 的操作较为繁琐,此处有集成的脚本实现

curl -LO https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/get_account.sh && chmod u+x get_account.sh && bash get_account.sh -h

直接执行shell可以默认生成PEM格式的公钥私钥和地址,见输出内容。

如果需要带密码的PKCS12格式,使用下面的命令

bash ./get_account.sh -p

请务必保存好私钥。

最近的文章

精确控制海康摄像头PTZ

项目中需要定时抓取摄像头不同角度的视频图像,也就是要精确控制海康摄像头PTZ旋转指定的角度,比如像我们的需求应该是90°,旋转完成之后刷屏,然后继续旋转。这种需求第一个想到的就是控制预置点,这个也是一个非常不错的方法,因为可以对真实情况进行调整,但是由于摄像头数据太大,一个个调整不太现实。 PTZ旋 …

技术 继续阅读
更早的文章

FISCOBCOS~自建CA及实现认证

最近在调试区块链,开始调研了很多区块链平台,包括百度京东的,最终还是觉得微众银行的FISCO BCOS最好用。至于各个平台的差异,大家可自行百度对比。顺便说一句,FISCO BCOS(以下称FB)的社区还不错,官方支持nice! 关于FISCO BCOS自建区块链,基本比较合适的方式是联盟链。因为使 …

技术 继续阅读