zoukankan      html  css  js  c++  java
  • 【干货干货】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)此方法,是没由返回值的,所以只能通过异常捕获,或使用断言的方法,来判断你的修改是否成功了;

          备注:channel,在提交修改的sendUpdateChannel方法中,动态帮我们组装了echo '{"payload":{"header":{"channel_header":... 这个段逻辑。这也解释了上述的那个问题。

            

        11,判断是否修改成功

         

           主要再获取一下最新的通道配置,检查一下你新增的组织是否在这个json对象中即可;

        12,其他步骤,就不在追溯了,后面要做的就是,组织jion、安装/升级合约.这样组织3才会更新数据。否则会被orderer拒绝访问同步。在orderer端,你会看到需要Org1MSP/Org2MSP,但获取到是Org3MSP的异常;

        我使用是是couchdb,数据已经同步。ok完成动态新增组织;动态修改配置,其实是一个步骤。就不在追溯了;

        

         备注:

         当前这一章中提到了configtxlator工具,但并没有过多的对其进行详细说明,后面我们花一章时间对他做一个说明;

                   

  • 相关阅读:
    抓取猫眼电影top100的正则、bs4、pyquery、xpath实现方法
    Win实用好用软件清单推荐
    Manjaro安装配置美化字体模糊发虚解决记录
    爬取杭电oj所有题目
    Python爬取微博热搜以及链接
    20191225_Python构造函数知识以及相关注意事项
    java_细节_windows7下记事本保存为utf-8格式的问题
    基础_划分子网
    爬虫_爬取有道每日一句
    算法_基础_伪代码定义以及遵循的规则
  • 原文地址:https://www.cnblogs.com/zjlong/p/11226930.html
Copyright © 2011-2022 走看看