• -------------------------------------------------------------
  • ====================================

12-HyperLedger-Fabric原理-MSP详解(三)-Channel配置MSP

区块链 dewbay 4年前 (2020-01-06) 3332次浏览 已收录 0个评论 扫描二维码

接着《HyperLedger-Fabric 原理-MSP 详解(二)-Peer&Orderer 配置 MSP》 ,这篇文章主要讲如何对Channel进行MSP配置。全文按照如下结构展开:

12-HyperLedger-Fabric原理-MSP详解(三)-Channel配置MSP
全文结构

一、简介

configtx.yaml 包含网络的定义,并给出了网络组件的拓扑结构还指出每个网络实体的加密材料的存储位置。用来编写配置系统通道初始区块文件,新建应用通道配置文件,锚节点配置更新交易文件等。

configtxgen是一个自动生成工具,能够根据配置文件 configtx.yaml 来生成配置区块和配置交易。在通过 configtxgen 工具的帮助下引导通道时,可以利用 mspconfig 文件夹中包含MSP的验证参数来配置通道MSP 。至于MSP相关文件的路径,可以在 configtx.yaml 文件中来设置。

在系统初创的时候,出现在网络中所有MSP的验证元素(即各种证书,配置)都必须已经存在,并被包含到系统 channel 的创世纪块(genesis block)中。

回忆一下,MSP验证元素有 MSP 身份标识(MSP identifier),root CAs,intermediate CAs,admin CAs,OU List,CRLs。

在 orderer 进行体系解析时,系统的创世纪块被用于 orderer,据此 orderer 被允许去认证 channel 的创建请求。如果创世纪块包含了两个相同身份标识的 MSP,orderer 将拒绝此块,自然的,整个网络的引导建立也会失败。

对于应用通道,其验证的各个组成部分(也就是各种证书和签名,即管理该channel 的 MSP,必须存在于 channel 的创世纪块中。在 channel 创建一个或多个 peer 加入该 channel 之前,保证包含在该 channel 的创世纪块(或者是最新的配置块)中的 MSP 配置信息的正确性是应用的责任。

我们可以使用 configtxgen 工具来引导启动一个 channel。主要步骤如下:

第一步:通过将 MSP 的验证元素放置到 MSP 专用的配置目录。

第二步:在 configtx.yaml 文件中设置相应的选项,最后使用 configtxgen 工具配置该 channel 的 MSP。

从上面的分析可知,由于我们在上一篇文章中,已经生成了 msp 相关的证书和公私钥,所以,进行Channel配置的时候,我们需要先在 configtx.yaml 文件中设置相应的选项,指定相关证书和密钥的路径,然后使用工具生成创世区块和通道相关信息,使得创世区块和通道相关信息中包含 msp 需要的所有验证信息,以便Channel进行身份和签名的认证。


二、在 configtx.yaml 文件中配置 MSP

configtx.yaml 配置文件一般包括四个部分:Profiles、Organizations、Orderer 和 Application。

  • Profiles:一系列通道配置模板,包括 Orderer 系统通道模板和应用通道类型模板;
  • Organizations:一系列组织结构定义,被其他部分引用;
  • Orderer:Orderer 系统通道相关配置,包括 Orderer 服务配置和参与 Ordering 服务的可用组织信息;
  • Application:应用通道相关配置,主要包括参与应用网络的可用组织信息。

由于在Channel MSP 配置中,msp 相关配置在 Organization 中,而 Organization 部分会被 Profiles 部分引用使用。所以,这里仅仅对这两部分进行讲解。

Profiles

定义了一系列的 Profile,每个 Profile 代表了某种应用场景下的通道配置模板,包括 Orderer 系统通道模板或应用通道模板,有时候也混合放到一起。

Orderer 系统通道模板必须包括 Orderer、Consortiums 信息:

一般建议将 Profile 分为Orderer 系统通道配置应用通道配置两种。

分别进行编写,如下所示:

12-HyperLedger-Fabric原理-MSP详解(三)-Channel配置MSP
configtx.yaml 中的 profiles 部分

Orderer 系统通道模板必须包括 Orderer、Consortiums 信息:

· Orderer:指定 Orderer 系统通道自身的配置信息。包括 Ordering 服务配置(包括类型、地址、批处理限制、Kafka 信息、最大应用通道数目等),参与到此 Orderer 的组织信息。网络启动时,必须首先创建 Orderer 系统通道;
· Consortiums:Orderer 所服务的联盟列表。每个联盟中组织彼此使用相同的通道创建策略,可以彼此创建应用通道。

应用通道模板中必须包括 Application、Consortium 信息:

· Application:指定属于某应用通道的信息,主要包括属于通道的组织信息;
· Consortium:该应用通道所关联联盟的名称。

Organizations

这一部分主要定义一系列的组织结构,根据服务对象类型的不同,包括 Orderer 组织和普通的应用组织。

Orderer 类型组织包括名称、ID、MSP 文件路径、管理员策略等,应用类型组织还会配置锚点 Peer 信息。这些组织都会被 Profiles 部分引用使用。

12-HyperLedger-Fabric原理-MSP详解(三)-Channel配置MSP
configtx.yaml 文件 Organization 部分

在这一部分中,我们可以定义 Org1 和 Org2 的 MSPID 和 MSPDir 这两个字段,这些字段中可以配置 msp 相关文件的路径。


三、使用 configtxgen 生成创世区块和应用通道配置

《HyperLedger 实战-手动搭建一个 Fabric 网络》 一文中,我们使用的就是利用 configtx.yaml 文件中的 Profiles 中的 TwoOrgsOrdererGenesis 来生成创世区块

cd examples/e2e_cli/
../../build/bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

生成的系统 channel 的创世纪块中包含出现在网络中所有 MSP 的验证元素。

我们利用 configtx.yaml 文件中的 Profiles 中的 TwoOrgsChannel使用生成应用通道配置:

../../build/bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel

Channel 配置区块,用来新建 Channel 应用通道,指定通道成员以及访问策略等等。

经过上面的步骤,我们将生成的相关文件,放在了 channel-artifacts 文件夹中。其目录结构如下:

12-HyperLedger-Fabric原理-MSP详解(三)-Channel配置MSP
通道相关配置文件

四、总结

在这一篇文章中, 我们实现了对 Channel 的 MSP 配置。

首先,编写匹配文件 crypro-config.yaml,在该文件中定义 MSP 相关文件的路径,包括 mspId 以及 MSPDIR。

然后,我们利用 configtxgen 工具,根据 crypro-config.yaml 配置文件,来生成系统通道的创世区块和应用通道的应用通道配置。

至此,我们完成了对 Channel 的 MSP 配置。

 

 

转自知乎 苏小乐 :https://www.zhihu.com/people/shan-de-ding-zhu/activities


露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:12-HyperLedger-Fabric原理-MSP详解(三)-Channel配置MSP
喜欢 (3)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址