【干货干货】hyperledger fabric 之动态添加组织/修改配置 (Fabric-java-sdk) 下
我们接着上一节来讲;
在熟悉动态增加组织或修改配置的步骤后,我们就可以使用java的api来完成动态增加组织或修改配置了;
废话不多说,直接上干货;
1,预制条件
org3的证书以及组织3的MSP详情信息,需要提前准备(如果不清楚的,可以回头看一下上一章)
fabric-java-sdk 1.2 我这里使用的是1.2版本,更高版本基本相同,没有什么大变化
2,启动configtxlator工具的rest服务
准备configtxlator工具,你可以通过源码编译或在网上自己下载
执行 ./configtxlator start命令,默认端口是7059

3,创建通道链接

4, 获取通道配置字节码
byte[] mychannelConfig = channel.getChannelConfigurationBytes();
这一步对应的是peer channel fetch config命令生成后的pb文件
5,将字节码转化为json

通过configtxlator 工具提供的decode方法,解码的消息类型为 common.Config
6,读取org3.json内容

7,将组织3的内容和channel当前的配置信息合并
当前配置信息的结构体如下图,我们可以使用JSONObject来代替cli客户端的jq工具来操作json内容


8,将合并后的json文件,编码成字节码

将json文件提交给configtxlator 工具提供的encode方法,解码的消息类型为 common.Config

这一段逻辑就相当于是将修改后的json,转化为pb文件的逻辑
9,在第4步中,我们获取过通道的字节码,而这里我们有修改后的字节码,只要对这两个做一次对比;就可以获取到需要修改的部分内容;

依旧使用configtxlator工具,而这时候需要调用的是计算接口:compute,消息类型为:update-from-configs

10,构建修改配置,向orderer发送变更交易了;
这里大家可能有个疑惑,不是要需要其他组织签名的吗?是不是少了一步?
当前需要签名,而这也是使用api的一个好处,他帮我们做了好多事情;先看一下下面的这段代码,有几点注意点:

注意点:
a),通道的updateChannelConfiguration方法,第二个参数是无边界的数组;

b)这个参数,就是各个组织的修改提供的签名人。上面是动态增加组织的,如果是修改配置的话;比如修改区块大小信息,那么这里主要传一个orderer的用户就可以;
c)是不是什么用户都可以进行提交修改?当然不是,必须是admin;
d)此方法,是没由返回值的,所以只能通过异常捕获,或使用断言的方法,来判断你的修改是否成功了;
11,判断是否修改成功

主要再获取一下最新的通道配置,检查一下你新增的组织是否在这个json对象中即可;
12,其他步骤,就不在追溯了,后面要做的就是,组织jion、安装/升级合约.这样组织3才会更新数据。否则会被orderer拒绝访问同步。在orderer端,你会看到需要Org1MSP/Org2MSP,但获取到是Org3MSP的异常;
我使用是是couchdb,数据已经同步。ok完成动态新增组织;动态修改配置,其实是一个步骤。就不在追溯了;

备注:
当前这一章中提到了configtxlator工具,但并没有过多的对其进行详细说明,后面我们话一章时间对他做一个说明;
【干货干货】hyperledger fabric 之动态添加组织/修改配置 (Fabric-java-sdk) 下的更多相关文章
- 菜鸟系列Fabric——Fabric 动态添加组织(7)
Fabric 网络动态添加组织 1.环境准备 如果存在fabric网络环境可不执行,若不存在可以安装下列进行准备 下载fabric-sample,fabric https://github.com/h ...
- Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)
首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye GitChat 写博客 小程序 消息 登录注册 关闭 quartz_Cron表达式一分钟教程 09-05 ...
- javascript里面的数组,json对象,动态添加,修改,删除示例
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Quartz动态添加、修改和删除定时任务
任务调度开源框架Quartz动态添加.修改和删除定时任务 Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz框架包含了调度器监听.作业和触 ...
- Quartz 2.2 动态添加、修改和删除定时任务
QuartzManager.Java 动态添加.修改和删除定时任务管理类 import org.quartz.CronScheduleBuilder; import org.quartz.CronTr ...
- 转: javascript动态添加、修改、删除对象的属性和方法
在其他语言中,对象一旦生成,就不可更改了,要为一个对象添加修改成员必须要在对应的类中修改,并重新实例化,而且程序必须经过重新编译.JavaScript 中却非如此,它提供了灵活的机制来修改对象的行为, ...
- Quartz 2.3 动态添加、修改和删除定时任务
下面直接上代码: <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>qu ...
- javascript动态添加、修改、删除对象的属性与方法
在其他语言中,对象一旦生成,就不可更改了,要为一个对象添加修改成员必须要在对应的类中修改,并重新实例化,而且程序必须经过重新编译.JavaScript 中却非如此,它提供了灵活的机制来修改对象的行为, ...
- HyperLedger Fabric 1.4 生产环境动态添加组织及节点
网易云课堂视频在线教学,地址:https://study.163.com/course/introduction/1209401942.htm 1.1 操作概述 在“kafka生产环境部署” ...
随机推荐
- Node EE方案 -- Rockerjs在微店的建设与发展
本文是根据2019.4.13日参加 "Node-Party"论坛使用的PPT,加上笔者新的思考与沉淀而来.在此再次感谢贝贝网前端部门和芋头君以及相关与会人员的支持! -- 微店杨力 ...
- jQuery仪表盘指示器动画插件 6种仪表样式
土豆网同步更新:http://www.tudou.com/plcover/VHNh6ZopQ4E/ 使用HTML 创建Mac OS App 视频教程. 官方QQ群: (1)App实践出真知 434 ...
- c# 9png实现(图片缩放)
跟据9png的实现原理自己写了个生成图片的函数,9png的原理是将图片切成9块如下 其中1.3.7.9不进行缩放,2,4,5,6,8进行缩放,这样就防止了放大后导致边界出现锯齿的问题 在实现过程中主要 ...
- R3 HOOK OpenProcess 的问题
unit HookAPI; //Download by http://www.codefans.net interface uses Windows, Classes; function Locate ...
- 在不开启事件循环的线程中使用QTimer(QThread::run函数自带事件循环,在构造函数里创建线程,是一种很有意思的线程用法) good
引入 QTimer是Qt自带的定时器类,QTimer运行时是依赖于事件循环的,简单来说,在一个不开启事件循环(未调用exec() )的线程中,QTimer是无法使用的.通过分析Qt源码可发现,调用QT ...
- 八大排序算法 JAVA实现 亲自测试 可用!
今天很高兴 终于系统的实现了八大排序算法!不说了 直接上代码 !代码都是自己敲的, 亲测可用没有问题! 另:说一下什么是八大排序算法: 插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排 ...
- Python之二叉树Binarytree
二叉树是树的简化版,除根节点之外的所有节点都有一个父节点,任意节点都可以最多有一个左子节点和右子节点. 二叉树的遍历是非常重要的算法,主要分为深度优先遍历和广度优先遍历. 其中深度优先遍历按照访问根节 ...
- 一次性搞清楚线上CPU100%,频繁FullGC排查套路
“ 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及 Full GC 次数过多的问题. 当然,这些问题最终导致的直观现象就是系统运行缓慢,并且有大量的报警. 本文主要针对系统 ...
- 精通并发与 Netty (一)如何使用
精通并发与 Netty Netty 是一个异步的,事件驱动的网络通信框架,用于高性能的基于协议的客户端和服务端的开发. 异步指的是会立即返回,并不知道到底发送过去没有,成功没有,一般都会使用监听器来监 ...
- vuex分模块2
深入理解Vuex 模块化(module) 转载 2017-09-26 作者:ClassName 我要评论 本篇文章主要介绍了Vuex 模块化(module),小编觉得挺不错的,现在分享给大 ...