第七章 手动部署Fisco Bcos 区块链并完成新增群组,在原有群组中新增机构
鉴于笔者以前各大博客教程都有很多人提问,早期建立一个技术交流群,里面技术体系可能比较杂,想了解相关区块链开发,技术提问,请加QQ群:538327407
目标
1、新增群组搭建完整联盟链
2、根据群组新增机构
3、新增群组,将原有机构加入
一、前提准备:
java 环境
详细可以参考前面几章的操作。
二、正式操作
画了一张图,大致说明操作。
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 <(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
新建群组(将原有机构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..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.sh
bash ~/generator/nodeD/start_all.sh
12、在机构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控制台进行共识测试,各个控制台的输出共识结果相同
补充:如果是外网情况的部署
1、创世区块的结构group 配置如下
2、其他节点配置如下
依照上述操作,可以实现不同网络环境下,完成实际联盟链部署。
读后感觉不错,有收获可以微信请作者喝杯咖啡,读后有疑问请加微信,拉群研讨,注明来意
第七章 手动部署Fisco Bcos 区块链并完成新增群组,在原有群组中新增机构的更多相关文章
- Fisco bcos 区块链-分布式部署
Fisco bcos 区块链-分布式部署 前置条件:mysql配置成功. 节点搭建 cat > ipconf << EOF 127.0.0.1:1 agencyA 1 127.0.0 ...
- 人民网基于FISCO BCOS区块链技术推出“人民版权”平台
FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...
- 第五章 FISCO BCOS 区块链浏览器的部署
想了解相关区块链开发,技术提问,请加QQ群:538327407 前提 前面我们已经通过底层部署.sdk调测.自定义智能合约编写与部署.联合单元测试调测,已经初步对FISCO BCOS的区块链底层和实际 ...
- 基于ubuntu16.04部署IBM开源区块链项目-弹珠资产管理(Marbles)
前言 本教程基本上是对Marbles项目的翻译过程. 如果英文比较好的话,建议根据官方操作说明,一步步进行环境部署.当然你也可以参考本教程在自己的主机上部署该项目. Marbles 介绍 关于 Mar ...
- 36小时极客嘉年华!FISCO BCOS黑客马拉松报名启动
FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...
- 第一章 区块链系列 联盟链FISCO BCOS 底层搭建
想了解相关区块链开发,技术提问,请加QQ群:538327407 FISCO BCOS 基础安装教程:https://fisco-bcos-documentation.readthedocs.io/zh ...
- 联盟链FISCO BCOS权限控制一览
FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...
- 用Java为Hyperledger Fabric(超级账本)开发区块链智能合约链代码之部署与运行示例代码
部署并运行 Java 链代码示例 您已经定义并启动了本地区块链网络,而且已构建 Java shim 客户端 JAR 并安装到本地 Maven 存储库中,现在已准备好在之前下载的 Hyperledger ...
- Testlink1.9.17使用方法(第七章 测试用例集管理)
第七章 测试用例集管理 QQ交流群:585499566 测试用例准备好以后,可以对测试用例集进行相关的操作. 一. 添加测试用例到测试计划中 在主页的“当前测试计划”下拉列表里-->选择一个测试 ...
随机推荐
- Python 的神奇方法指南
简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling). 你可以把它当作一 ...
- hdu 2037 这个夏天不AC (java)
问题: 这个题为项贪心算法.我们的想法是在第一时间每个周期根据结束排序(按结束越早穿越,更多的程序), 然后从第一个节目开始.假设下一个节目的开始时间大于一个节目的开始时间,是进行程序,依次递推. 输 ...
- 大约PCA算法学习总结
文章来源:http://blog.csdn.net/xizhibei ============================= PCA,也就是说,PrincipalComponents Analys ...
- 【msdn wpf forum翻译】如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点?
原文:[msdn wpf forum翻译]如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点? 原文链接:http://social.msdn.microsoft.com/Fo ...
- mvn 命令在command prompt无法识别
Download maven from this website: https://maven.apache.org/download.cgi 解压binary包后放到一个位置,比如C:\apache ...
- 【Gerrit】Add a Member
add user email:XXXX@163.com username:XXXX( songfei) Add Step: System Server:1. ssh 服务器用户 ...
- Win10《芒果TV》商店版2016-2017春节大礼,每日前100名用户免费领取7天VIP
告别2016,喜迎2017,鸡年大吉,春节期间,每天登录Win10<芒果TV>商店版的前100位用户可领取一张芒果TV会员7天体验卡,先到先得. 芒果TV会员权益: 1.全站免广告 2.自 ...
- 零元学Expression Blend 4 - Chapter 2 入门界面简介
原文:零元学Expression Blend 4 - Chapter 2 入门界面简介 在这篇教学我将会介绍Expression Blend 4的基本界面,虽然有些网站已经有做了介绍,为了整个教学的完 ...
- vmstat命令浅析
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...
- AStyle 2.02版本 AStyle(全称Artistic Style)是一个C、C++、C#和Java源代码缩进、格式化和美化工具
http://download.csdn.net/detail/akof1314/3323725