前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fabric进阶(一)—— 修改组织和通道的名称

Fabric进阶(一)—— 修改组织和通道的名称

作者头像
zhayujie
发布2020-04-29 10:14:56
1.7K0
发布2020-04-29 10:14:56
举报
文章被收录于专栏:ZYJ的技术专栏ZYJ的技术专栏

组织(Org)和通道(Channel)的名称是fabric网络比较重要的两个配置参数,在fabric提供的示例中都已经设置好了这两个参数,一般组织名为"Org1"和"Org2",通道名为"mychannel"。而在实际应用开发中通常需要自定义组织和通道的名称,这里以最接近实际应用的balance-transfer为例说明如何自定义设置组织和通道名称。 

前言

Fabric网络在启动前会通过二进制工具cryptogenconfigtxgen生成成员的证书目录排序创世区块以及通道配置交易,组织和通道名称会在此时被写入配置信息中去。

所以如果想自定义设置这两个参数,需要重新生成这些配置信息,以及修改其他有关的配置文件以及应用程序代码。

balance-transfer是fabric-samples中的一个示例,基于fabric Node SDK实现了一个较为完整的应用程序,这里选择的是v1.0.0版本。

一、获取工具cryptogen和configtxgen

下载cryptogenconfigtxgen这两个工具的方法在first-network示例中已经介绍,除了这种从网络直接下载的方法,还可以在fabric项目中手动编译获得。

工具生成于fabric/build/bin目录下,移动至.../fabric-samples/balance-transfer/artifacts/channel目录下供后续使用。

二、修改cryptogen.yaml和configtx.yaml配置文件

这两个文件存放在bartifacts/channel目录下的,作用是配合上述工具生成网络初始化的配置信息。

改动很简单,将文件中的"Org1"和"Org2"分别替换成想要设置的组织名称即可。

三、生成证书目录,创世区块和通道配置交易

artifacts/channel目录下执行以下命令生成配置信息。

注:如果需要修改通道名称,只需要在此步的--channelID参数后指定channel名称(默认是mychannel),然后修改balance-transfer目录下的config.json文件,替换channelName参数即可完成通道名称的修改。

完成后会在channel目录下生成新组织名的crypto-config目录,genesis.block以及newchannel.tx

四、修改网络配置文件network-config.json

该文件路径为app/network-config.json,文件中主要设置了网络各节点的ip和port信息,以及所属的组织。

同样,需要把这个文件中所有与组织名称有关的参数进行替换,注意不要遗漏了其中相关证书路径的修改。

五、修改CA服务器配置文件

这个文件的改动过程比较复杂,因为它是在CA节点启动时在内部自动生成的,想要修改只能够先将内容复制到外部进行改动,再映射到内部达到覆盖的效果。

该文件位于CA节点的文件系统中,需要在启动CA节点后进入容器内部:

打开该文件找到affiliations部分如下:

发现这里把组织名称固定了,如果不修改,则会在用户注册时报错。首先需要在宿主机的artifacts目录下新建一个fabric-ca-server-config.yaml文件,然后将节点内部通过cat打印的整个文件内容复制上去,并且将affiliations部分的组织名修改成想要设置的名称。

这样,新的ca配置文件就在容器外部生成了,在下一步骤会将其映射到容器内部,这样可以覆盖自动生成的配置文件,从而达到修改的目的。

六、修改容器配置文件docker-compose.yaml

1.首先将docker-compose.yaml中所有需要修改的组织名称进行批量替换。

2.将CA节点配置的environment部分的CA KEYFILETLS KEYFILE值最后的私钥文件名(以_sk结尾)改成crypto-config/peerOrganizations/orgname.example.com/ca目录下的私钥文件名称,其中orgname是设置的新组织名称。

这一步是因为我们重新生成了msp目录crypto-config,所以私钥路径也发生了改变,不重新设置的话CA节点会因为找不到对应文件而启动失败。

3.设置CA服务器配置文件。将上一步重新生成的CA配置文件映射到容器内部,需要在volumes部分添加一行:

七、修改应用程序代码

1.修改app/helper.js

helper.js最开始的一段全局代码中有如下语句:

ORGS对象是从network-config.json中读取的所有组织信息,键分别为"orderer", "org1"和"org2"(未修改前),这一段循环的意思是对orderer除外的其他组织进行操作,但是很显然这里的if语句默认针对的是org1和org2,而我们修改了组织名称之后直接就失效了。

所以应该将if语句改为

2.修改启动及测试脚本

最后需要把启动脚本runApp.sh和testApp.sh中和组织名、通道名有关的变量进行修改,改完后分别启动这两个脚本就可以完成新网络的启动及测试,这时候就可以发现组织和通道的名称已经改成了我们自定义设置的内容啦!

脚本一键配置

没想到修改两个小小的参数竟然需要如此多繁琐的步骤,牵扯到这么多的配置文件,属实有点抽象。关于这个问题我写了一个能够一键执行完成以上操作的脚本,地址为https://github.com/zhayujie/fabric-tools。执行如下命令就可以设置整个项目的组织和通道名称:

主要的操作是去自动生成证书等初始配置,以及对需要修改的配置文件进行批量替换。目前这个脚本只适用于单机单组织,稍作修改就可以应用于多机和多组织场景下。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 一、获取工具cryptogen和configtxgen
      • 二、修改cryptogen.yaml和configtx.yaml配置文件
        • 三、生成证书目录,创世区块和通道配置交易
          • 四、修改网络配置文件network-config.json
            • 五、修改CA服务器配置文件
              • 六、修改容器配置文件docker-compose.yaml
                • 七、修改应用程序代码
                  • 脚本一键配置
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档