鉴于笔者之前各大博客教程都有不少人提问,早期创建一个技术交流群,里面技术体系可能比较杂,想了解相关区块链开发,技术提问,请加QQ群:538327407html
一、新增群组搭建完整联盟链java
二、根据群组新增机构node
三、新增群组,将原有机构加入git
java 环境github
详细能够参考前面几章的操做。web
官方参考文档:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/tutorial/enterprise_quick_start.html#ac2spring
画了一张图,大体说明操做。bash
如下三个命令 要在各自的操做界面操做网络
机构A:./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA 机构B:./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB
备注:生成机构证书 都须要有链证书等作基础app
上图为创世区块的meta 文件夹,里面还收集了其余节点的证书。
普通机构,只有本身的节点证书、还有其余群组的peers.txt 的文件,以及群组配置文件、链证书、本身的机构证书等。
p2p_ip 和rpc_ip 修改成 内网地址
前提:内网端口等要打开
机构A:./generator --generate_all_certificates ./agencyA_node_info 机构B:./generator --generate_all_certificates ./agencyB_node_info
须要用的上面node_deployment.ini,及机构meta文件夹下的机构证书与私钥
机构生成节点时须要指定其余节点的节点P2P链接地址,所以,A机构需将节点P2P链接地址文件发给其余机构,一样的其余机构都要把peers[自定义].txt copy 给除本身外的机构/meta 文件夹下
修改:./conf/group_genesis.ini
配置group_id,以及p2p_ip,rpc_ip
./generator --create_group_genesis ./group
生成好以后,会出现一个group 文件夹
将./group/group.1.genesis 文件copy 个每一个机构 的meta 下面
./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 配置文件。
bash ./nodeA/start_all.sh
若是出现端口占用,这么解决
sudo lsof -i:[port]
sudo kill [PID]
从新启动
bash ./nodeA/start_all.sh
查看:
进程:ps -ef | grep fisco
查看节点:tail -f ./node*/node*/log/log* | grep +++
出现+++ 为节点正常共识
bash <(curl -s https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/download_console.sh)
若是下载忙 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
下载
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中
一、下载源程序,将机构A的链证书文件夹(./dir_agency_ca),发送机构C的项目根目录下
二、生成机构C证书:
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyC
三、发送链证书、机构证书、机构私钥,示例是经过文件拷贝的方式,
放到机构C的工做目录的meta目录下
四、修改 node_deployment.ini,主要修改 p2p_ip和rpc_ip
五、生成机构C节点证书,执行以下命令:
./generator --generate_all_certificates ./agencyC_node_info
六、将C的节点peers.txt copy 给A,同时将A的copy 给C
七、agencyC_node_info 相关 cert*.crt copy 给机构A(创世区块所在机构)./meta/
八、将群组group.1.genesis 文件分配copy 给机构C 的meta ,生成机构C所属节点
并执行命令:
./generator --build_install_package ./meta/peers.txt ./nodeC
启动机构C的节点:
bash ./nodeC/start_all.sh
九、机构C执行,为机构C节点添加群组1创世区块后需从启节点
./generator --add_group ./meta/group.1.genesis ~/generator/nodeC
十、机构A中进入控制台,添加新的节点
添加机构C节点链接文件peers至已有节点,此步将peersC.txt
的节点P2P链接地址添加至./nodeA下的全部节点内:
./generator --add_peers ./meta/peersC.txt ./nodeA
备注:默认同一个群组的其余机构都要如此操做,如今仍是静态的配置,新增的节点配上全部已有的节点就行,两个节点的链接只用配一边就已经能够链接了,文档里推荐的全部所有配上,是为了更稳妥,把两边都配上。
主要经过控制台 addSealer 命令: 后面的节点id 是新加入机构C的两个节点,经过机构C中meta 文件夹下的节点文件夹中的node.nodeid 文件获取
如上操做,添加新节点成功
十一、重启节点
bash ~/generator/nodeD/stop_all.sh
bash ~/generator/nodeD/start_all.sh
十二、在机构C的控制台中,加入群组A的配置,就能够了
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" 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"> <bean id="encryptType" class="org.fisco.bcos.web3j.crypto.EncryptType"> <constructor-arg value="0"/> <!-- 0:standard 1:guomi --> </bean> <bean id="groupChannelConnectionsConfig" class="org.fisco.bcos.channel.handler.GroupChannelConnectionsConfig"> <property name="allChannelConnections"> <list> <bean id="group1" class="org.fisco.bcos.channel.handler.ChannelConnections"> <property name="groupId" value="1" /> <property name="connectionsStr"> <list> <value>172.27.16.5:20200</value> <value>172.27.16.5:20201</value> </list> </property> </bean> </list> </property> </bean> <bean id="channelService" class="org.fisco.bcos.channel.client.Service" depends-on="groupChannelConnectionsConfig"> <property name="groupId" value="1" /> <property name="agencyName" value="fisco" /> <property name="allChannelConnections" ref="groupChannelConnectionsConfig"></property> </bean> </beans>
在机构C控制台进行共识测试,各个控制台的输出共识结果相同
补充:若是是外网状况的部署
一、创世区块的结构group 配置以下
二、其余节点配置以下
依照上述操做,能够实现不一样网络环境下,完成实际联盟链部署。