1,通道的结构

通道是Fabric中非常重要的概念(类似微信群?),它实质是由排序节点划分和管理的私有原子广播通道,目的是对通道的信息进行隔离,使得通道外的实体无法访问通道内的信息,从而实现交易的隐私性。

目前通道分为系统通道(System Channel)和应用通道(Application Channel)。排序节点通过系统通道来管理应用通道,用户的交易信息通过应用通道传递。对一般用户来说,通道是指应用通道。系统通道与应用通道的关系如下图:

在文章https://www.cnblogs.com/xdyixia/p/11765820.html创始块的生成步骤中,就有 系统的创始块和 Channel的创始块两部分。

通道由排序服务节点负责管理,同时该节点还负责排序通道中的交易。在通道中一般包含有若干成员(组织),若两个网络实体的身份证书能够追溯到同一个根CA,则认为这两个实体属于同一组织。此外,通道中的每个组织都会有一个或以上的“锚节点”,它负责与其他组织交换共享账本的数据。

(这里概念有点多,注意各个名词的关系)

创建通道的时候定义了成员,只有通过成员MSP验证的实体,才能够加入到通道并访问通道数据。一个验证例子如下:

Org1 是通道 mychannel 的成员之一,与 Org1 绑定的 MSP 标识为 Org1MSP,其代表的 CA 称为 CA1;若实体的 MSP 满足以下条件则认为实体有权限访问 mychannel 的数据:

实体的MSP标识(ID)为 Org1MSP; 实体身份证书的信任链源头为 CA1。 实体只要满足通道中任意成员的 MSP 校验,则认为该实体有权限访问通道中的数据。

************************************************************************

MSP:成员服务提供者 Member service provider

MSP只是一个接口,Fabric-CA是MSP接口的一种实现

MSP抽象提供:具体的身份格式,用户证书验证,用户证书撤销,签名生成和验证,把所有密码学机制与协议都抽象了出来。

Fabric-CA 用于生成证书和密钥,以真正的初始化MSP。 Fabric-CA是用于身份管理的MSP接口的默认实现。

https://blog.csdn.net/maixia24/article/details/79761367

https://www.jianshu.com/p/dd19fc125356?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

************************************************************************

2,通道的配置

通道的配置信息都被打包到一个区块中,并存放在通道的共享账本中。该区块除了配置信息外不包含其他交易信息,称之为通道的配置区块(Configuration Block)。通道可以使用配置区块来更新配置,因此在账本中每新添加一个配置区块,通道就按照最新配置区块的定义来修改配置。通道账本的首个区块一定是配置区块,也称为初始区块(Genesis Block)。

3,使用configtxgen工具生成通道的配置

configtxgen是Fabric提供的工具,用于生成通道所需要的配置文件。configtxgen工具以一个yaml文件作为输入,一般称为 configtx.yaml,该文件定义了将要创建通道的配置信息,该文件通常包括以下部分:

1)Profiles: 包含了通道的配置模板,通过configtxgen工具的参数 -profile 来指定使用哪个模板。

2)Organizations: 定义了组织(成员)以及与之相应的 MSP。

3)Orderer: 定义系统通道的相关配置,如排序节点地址、共识算法。

4)Application: 定义应用通道相关配置,被 profile 引用。

以下面的配置文件configtx.yml为例,解释如何通过 configtxgen 创建通道的初始区块。 configtx.yml 清单如下:

上面的 profile 定义了系统通道和应用通道两种不同类型的通道。

系统通道必须定义 Orderer 和 Consortiums 两部分,应用通道必须定义 Application 和 Consortium 两部分。

定义好 yaml 文件后,需要把 configtxgen 工具以及 msp 目录都拷贝到yaml文件的所在的目录下,configtxgen 默认会读取当前目录的 configtx.yaml 作为输入:

1)创建排序节点的初始区块:

configtxgen -profile Genesis -outputBlock genesis.block

该命令通过 profile 参数来指定生成 yaml 文件中 Profile.Genesis 的配置,通过 -outputBlock 参数来将区块写入 genesis.block 文件。

2)创建应用通道 mychannel 的初始区块的交易文件 channel.tx:

configtxgen -profile Channel -outputCreateChannelTx channel.tx -channelID mychannel

该命令通过-outputCreateChannelTx参数将生成的交易写入channel.tx文件,通过-channelID来指定创建通道的名称为mychannel。

3)创建配置区块的交易文件Org1MSPanchors.tx以更新mychannel中PeerOrg1的锚节点:

configtxgen -profile Channel -outputAnchorPeersUpdate Org1MSPanchors.tx -channelID mychannel -asOrg PeerOrg1MSP

该命令通过-asOrg来指定使用PeerOrg1MSP身份创建配置区块,并且通过-outputAnchorPeersUpdate参数将配置区块写入到文件Org1MSPanchors.tx中。

类似地,创建配置区块的交易文件 Org2MSPanchors.tx 以更新 mychannel 中 PeerOrg2 的锚节点:

configtxgen -profile Channel -outputAnchorPeersUpdate Org2MSPanchors.tx -channelID mychannel -asOrg PeerOrg2MSP

4,通道相关命令

对通道的管理可通过命令行的方式,与通道相关的命令如下:

peer channel create: 用于创建通道,主要参数有-c, -f, -o分别用于指定通道ID, configtx的路径和orderer的地址。

peer channel fetch:抓取通道中的特定区块,通过-c和-f参数来指定通道ID和orderer地址。

peer channel join:加入通道,通过-b参数指定初始区块。

peer channel list:列出peer加入的通道。

peer channel update :签名并且发送configtx以升级通道配置,需要通过-c, -f, -o参数分别指定通道ID, configtx的路径以及排序节点的地址。

5,动态修改通道配置

在通道创建后,通道相关的配置以区块的形式存在于通道的账本中。如果需要修改通道的配置,可通过生成新的配置区块去更新。修改通道配置的步骤如下:

1) 通过sdk或CLI获得最新的配置区块。

2)编辑配置区块。

3)计算配置更新量。

4)为配置区块添加配置更新量。

5)sdk或CLI签名并发送配置区块。

若新的配置区块通过验证,则通道配置以最新配置区块为准。

https://www.8btc.com/article/283739

《区块链核心技术与应用》

《区块链开发实战 Hyperledger Fabric关键技术与案例分析》

Hyperledger Fabric(3)通道与组织的更多相关文章

  1. Hyperledger Fabric创建通道抛错Error: got unexpected status: FORBIDDEN -- Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied解决方案

    安装Hyperledger Fabric,服务整个都跑起来了,但是抛了一个错,Error: got unexpected status: FORBIDDEN -- Failed to reach im ...

  2. 【干货干货】hyperledger fabric 之动态添加组织/修改配置 (Fabric-java-sdk) 下

    我们接着上一节来讲: 在熟悉动态增加组织或修改配置的步骤后,我们就可以使用java的api来完成动态增加组织或修改配置了: 废话不多说,直接上干货: 1,预制条件 org3的证书以及组织3的MSP详情 ...

  3. Hyperledger Fabric 动态增加组织到网络中

    本文基于Hyperledger Fabric 1.4版本. 官方文档地址:传送门 动态添加一个组织到Fabric网络中也是一个比较重要的功能.官方文档写的已经很详细了,有能力的尽量还是看官方文档,本文 ...

  4. Hyperledger Fabric组织的动态添加和删除

    前言 在Fabric定制联盟链网络工程实践中,我们虚拟了一个工作室的联盟链网络需求,并根据此需求分析了整个网络的架构且已经完成了一个简单 fabric 网络模型.本文将在其基础上,在 mychanne ...

  5. Hyperledger Fabric无系统通道启动及通道的创建和删除

    前言 在Hyperledger Fabric组织的动态添加和删除中,我们已经完成了在运行着的网络中动态添加和删除组织,但目前为止,我们启动 orderer 节点的方式都是通过系统通道的方式,这样自带系 ...

  6. Hyperledger Fabric无排序组织以Raft共识算法启动多个Orderer服务、多组织共同运行维护Orderer服务

    前言 在Hyperledger Fabric无系统通道启动及通道的创建和删除中,我们已经完成了以无系统通道的方式启动 Hyperledger Fabric 网络,并将链码安装到指定通道.但目前为止,实 ...

  7. Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务、TLS组织运行维护Orderer服务

    前言 在实验Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务.多组织共同运行维护Orderer服务中,我们已经完成了让普通组织运行维护 Orderer 服务,但是 ...

  8. Hyperledger Fabric 通道配置文件和容器环境变量详解

    摘要 Fabric 网络启动的过程中需要进行大量配置,新学时对各个配置的作用一无所知,这导致我曾在网络出问题时先对配置文件的内容进行排列组合后再祈祷它能在某个时刻顺利运行,因此掌握 fabric 各个 ...

  9. HyperLedger Fabric 1.4 生产环境动态添加组织及节点

    网易云课堂视频在线教学,地址:https://study.163.com/course/introduction/1209401942.htm 1.1 操作概述      在“kafka生产环境部署” ...

随机推荐

  1. 码云上webide怎么提交

    修改后想提交,它会提示:“暂存文件后才能提交”, 我拿放大镜找遍了整个界面也没找到“暂存”按钮, 原来,文件旁边那个+号就是暂存,好歹鼠标方式去之后给个tip,服了. 点一下这个加号,提交按钮就可用了 ...

  2. 网络通信框架之okHttp

    主页: https://github.com/square/okhttp 特点: * 支持HTTP/2 和 SPDY * 默认支持 GZIP 降低传输内容的大小 * 支持网络请求的缓存 * 当网络出现 ...

  3. springmvc+mybatis多数据源切换

    前文:之前练习SSM时配置的都是单数据源,现在项目需求多数据源,所以自己查阅了以下资料,在controller中手动切换数据源成功,以下的配置细节. 实际上应该在dao层进行注解的方式切换,使用AOP ...

  4. Xman冬令营writeup

    做题一时爽,期末火葬场,一晚上水了三题,跪求期末不挂,老老实实去复习.祝各位表哥冬令营玩的开心. 中二的成长之路 很容易发现图片本身就是个压缩包,里面还有个图片,但是加密了所以需要我们求出压缩包的密码 ...

  5. SAP Query创建

    一.SAP Query创建步骤 1.创建User Group User Group即用户组,可以将所创建的列表使用权限分配给具体用户,Tcode:SQ03 在使用者群組初始界面里输入自定义名称,单击[ ...

  6. linux下抓取tomcat相关内存、线程、文件句柄等快照,用于故障排除。

    以下脚本推荐放在定时任务里,写好cron表达式,在不影响业务系统的情况下dump一些信息分析系统性能瓶颈以及故障排除. 因为每次dump的时候jvm会暂停(几秒到几十秒不等).所以在生产系统使用时慎用 ...

  7. Delphi让控件随着窗口的大小而改变

    Delphi让控件随着窗口的大小而改变方法1:设置Anchors属性,把akLeft,akTop,akRight,akBottom都设为True.方法2:设置Align属性,其值为alClient.

  8. 【转】Apache HBase 问题排查思路

    [From]https://www.itcodemonkey.com/article/9426.html HBCK - HBCK检查什么? (1)HBase Region一致性 集群中所有region ...

  9. 【转】最新版zookeeper配置看这一篇就够了

    [From]https://blog.csdn.net/yydriver/article/details/81107954 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载 ...

  10. ASP.NET Session详解(转)

    ASP.NET Session详解 本文章来自:http://blog.163.com/adam601@126/blog/static/22506317200932824210996/ 当用户在 We ...