专栏名称: 厦门哈希科技
哈希科技创立于2017年5月,是专业的区块链技术服务商,专注于区块链技术的研发,基于区块链底层技术,提供智能合约定制开发服务,并可实现对应区块链应用的落地。
目录
相关文章推荐
书单来了  ·  有朋自远方来 ·  昨天  
蓝钻故事  ·  当80后站上美国权利之巅 ·  22 小时前  
蓝钻故事  ·  20年过去,她终于又火了… ·  3 天前  
51好读  ›  专栏  ›  厦门哈希科技

哈希科技区块链系列教程(第七篇)

厦门哈希科技  · 公众号  ·  · 2019-07-22 09:03

正文

区块链系列教程(7)

手动部署Fisco Bcos 区块链并完成新增群组,在原有群组中新增机构

哈希科技作为一家区块链技术服务商,有责任也有义务为推广区块链贡献一份力量。计划连续推出区块链教程,欢迎大家交流。

哈希科技拥有全面的区块链能力,支持Hyperledger Fabric、Ethereum、FISCO BCOS及腾讯Trust SQL等主流框架。

FISCO BCOS是微众银行、腾讯等联合推出的,安全可控、适用于金融行业且开源的区块链底层平台。哈希科技与微众区块链团队进行过深度对接合作,也得到了微众团队童鞋们的鼎力支持和帮助,在此一并感谢!

本教程作者为哈希科技CTO林滨,这是一位才华在线颜值担当的90后有为青年,推荐大家关注。

目标

1、新增群组搭建完整联盟链

2、根据群组新增机构

3、新增群组,将原有机构加入

一、准备

java 环境

详细可以参考前面几章的操作。

二、正式操作

官方参考文档:

https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/tutorial/enterprise_quick_start.html#ac2

画了一张图,大致说明操作。

1、创世机构生成链证书,dir_chain_ca 文件复制给各个机构

2、在各个机构的的generator 目录下 执行命令生成个各自的机构证书

以下三个命令 要在各自的操作界面操作

机构A:./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA机构B:./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB

备注:生成机构证书 都需要有链证书等做基础

3、链证书、机构证书、机构私钥至机构对应机构的meta目录下

上图为创世区块的meta 文件夹,里面还收集了其他节点的证书。

普通机构,只有自己的节点证书、还有其他群组的peers.txt 的文件,以及群组配置文件、链证书、自己的机构证书等。

4、修改各个机构的node_deployment.ini文件

p2p_ip 和rpc_ip 修改为 内网地址

前提:内网端口等要打开

5、生成各个机构的节点证书和p2p 连接信息文件

机构A:./generator --generate_all_certificates ./agencyA_node_info机构B:./generator --generate_all_certificates ./agencyB_node_info

需要用的上面node_deployment.ini,及机构meta文件夹下的机构证书与私钥

6、各自机构peers.txt 互相传递

机构生成节点时需要指定其他节点的节点P2P连接地址,因此,A机构需将节点P2P连接地址文件发给其他机构,同样的其他机构都要把peers[自定义].txt copy 给除自己外的机构/meta 文件夹下

7、创世区块修改群组

修改:./conf/group_genesis.ini

配置group_id,以及p2p_ip,rpc_ip

8、此步会根据机构A的meta文件夹下配置的节点证书,生成group_genesis.ini配置的群组创世区块

./generator --create_group_genesis ./group

生成好之后,会出现一个group 文件夹

将./group/group.1.genesis 文件copy 个每个机构 的meta 下面

9、生成所属节点

./generator --build_install_package ./meta/peers.txt ./nodeA
./generator --build_install_package ./meta/peers.txt ./nodeB
./generator --build_install_package ./meta/peers.txt ./nodeC

说明:上面命令 peers.txt 是可以自定义名称的,初始化时候我将他们统一放到peers.txt ,不过后续拓展新的节点和新机构,我有单独拆分为:比如机构A中有机构B的peersB.txt 配置文件。

10、启动节点

bash ./nodeA/start_all.sh

如果出现端口占用,这么解决

(1)根据端口查找进程

sudo lsof -i:[port]

(2)根据PID杀掉进程

sudo kill [PID]

重新启动

bash ./nodeA/start_all.sh

查看:

进程:ps -ef | grep fisco查看节点:tail -f ./node*/node*/log/log* | grep +++

出现+++ 为节点正常共识


生成新的机构

(1) 生成机构证书

(2)copy 机构证书到meta 目录,并将 /agency*_node_info/cert*.crt 放到对应的创世区块的机构/meta/ 同时包括p2p连接peers.txt

(3) 修改 node_deployment.ini 文件

下载控制台

bash 

如果下载忙 ctrl+C 重新下载,多实验几次,有的时候比较快

修改console 内部的conf ,ca证书、节点证书和私钥 一个xml 配置项

官方说法:

将节点sdk目录下的ca.crt、node.crt和node.key文件拷贝到conf目录下。

将conf目录下的applicationContext-sample.xml文件重命名为applicationContext.xml文件。

配置applicationContext.xml文件,其中添加注释的内容根据区块链节点配置做相应修改。

提示:相关IP改为内网ip

则applicationContext.xml配置不用修改。

一个机构 内部节点 每个节点 证书都不一样,

控制台可以使用swith 2 等操作切换,不需要手动修改 配置

参考:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/sdk/sdk.html#spring

新建群组(将原有机构A加入--》到机构C为创世区块的群组2中)

前提条件:完成基础安装

下载

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

安装

此操作要求用户具有sudo权限。

cd generator && bash ./scripts/install.sh

检查是否安装成功,若成功,输出 usage: generator xxx

./generator -h

拉取节点二进制

拉取最新fisco-bcos二进制文件到meta中

./generator --download_fisco ./meta

检查二进制版本

若成功,输出 FISCO-BCOS Version : x.x.x-x

./meta/fisco-bcos -v

将机构A 中./dir_chain_ca/目录copy 到项目中

(1)修改新机构的 group_genesis.ini 文件, group_id 等改为新的群组,其他的也做相应修改

(2)机构C本身的node_deployment.ini 配置好,就配置了 group_id 改为 对应的群组

(3)机构C生成节点证书及P2P连接信息文件 ,执行如下命令:

./generator --generate_all_certificates ./agencyC_node_info

(4) 将机构A  /agencyA_node_info/cert*.crt 放到 机构C的meta 目录下

(5) 对应的peers.txt 也copy 过去,并改名为peers[自己定义].txt,

(6)对应的peers.txt 复制给机构A的meta 下面的peers.txt 中

(7)生成group_genesis.ini配置的群组创世区块。执行如下命令:

 ./generator --create_group_genesis ./group

(8)group.2.genesis copy 给机构A 的meta 文件下

(9)机构C生成所属节点,执行如下命令:

 ./generator --build_install_package ./meta/peersA.txt ./nodeC

(10)启动节点 bash ./nodeC/start_all.sh

(11)下载console ,把之前其他机构console 拿过来,修改console 目录下conf

官方说法:

将meta/node_172.27.16.5_3030 等类似 目录下的ca.crt、node.crt和node.key文件拷贝到conf目录下。

将conf目录下的applicationContext-sample.xml文件重命名为applicationContext.xml文件。

配置applicationContext.xml文件,其中添加注释的内容根据区块链节点配置做相应修改。

则applicationContext.xml配置不用修改。

(12) 使用switch 2 等切换控制台,前提是要给控制台配置好配置

在原有的群组里面新增机构(注意要在同一个内网,或者网络是可以联通的情况下)

ps:本事例和官方操作不同,官方是在机构A和机构C已经建立群组2的基础上,将机构C加入群组1,笔者是在机构A和机构B组合群组1情况下,新增一个独立机构,并完全加入到群组1中

1、下载源程序,将机构A的链证书文件夹(./dir_agency_ca),发送机构C的项目根目录下

2、生成机构C证书:

./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyC

3、发送链证书、机构证书、机构私钥,示例是通过文件拷贝的方式, 放到机构C的工作目录的meta目录下

4、修改 node_deployment.ini,主要修改 p2p_ip和rpc_ip

5、生成机构C节点证书,执行如下命令:

./generator --generate_all_certificates ./agencyC_node_info

6、将C的节点peers.txt copy 给A,同时将A的copy 给C

7、agencyC_node_info 相关 cert*.crt copy 给机构A(创世区块所在机构)./meta/

8、将群组group.1.genesis 文件分配copy 给机构C 的meta ,生成机构C所属节点

并执行命令:

./generator --build_install_package ./meta/peers.txt ./nodeC

启动机构C的节点:

bash ./nodeC/start_all.sh

9、机构C执行,为机构C节点添加群组1创世区块后需从启节点

./generator --add_group ./meta/group.1.genesis ~/generator/nodeC

10、机构A中进入控制台,添加新的节点

添加机构C节点连接文件peers至已有节点,此步将peersC.txt的节点P2P连接地址添加至./nodeA下的所有节点内:

./generator --add_peers ./meta/peersC.txt ./nodeA

备注:默认同一个群组的其他机构都要如此操作,现在还是静态的配置,新增的节点配上所有已有的节点就行,两个节点的连接只用配一边就已经可以连接了,文档里推荐的所有全部配上,是为了更稳妥,把两边都配上。

主要通过控制台 addSealer 命令:后面的节点id 是新加入机构C的两个节点,通过机构C中meta 文件夹下的节点文件夹中的node.nodeid 文件获取

如上操作,添加新节点成功

11、重启节点

bash ~/generator/nodeD/stop_all.shbash ~/generator/nodeD/start_all.sh

12、在机构C的控制台中,加入群组A的配置,就可以了


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">






请到「今天看啥」查看全文