(译)超级账本官方文档 基本概念(二) - 成员
如有翻译不当之处烦请指出,我不确定的地方都给出了原文
超级账本是Linux基金会发起的项目,意在提供一套企业级区块链应用框架,便于大家开发基于区块链技术的应用。
Fabric的基本概念
-
MSP
MSP可以列出谁是网络参与者或通道(Channel)成员,并定义网络中的访问权限。MSP的配置会被传播到相应组织的参与者所有参与的所有通道(Channel)中,并维护一个本地的MSP以做本地验证用,而不用每次都去请求远端MSP。 -
将MSP映射到组织
大多数情况下,组织和MSP之间的关系是独占的。某些情况下,一个组织也可能需要多个成员资格组,也就是多个MSP。这种情况下对MSP的命名就显得很重要,通常组织和MSP的命名是这样的:比如我们有个组织ORG1,对应的MSP命名为ORG1-MSP,如果是多个MSP,可以命名为ORG1-MSP-NATIONAL,ORG1-MSP-PERSONAL等,方便查看。 -
本地和通道(Channel)MSP
MSP只出现在两个地方,一个是节点(peer)本地,一个是通道(Channel)中。本地定义的MSP是为了peer,orderers及用户使用,通道(Channel)的MSP是控制所有在通道(Channel)中的节点。用户本地的MSP允许用户侧在其交易中作为通道(Channel)成员来验证自己。相反,通道(Channel)的MSP在通道(Channel)层面定义了参与者的权利。参与通道(Channel)的组织必须为其定义一个MSP,通道(Channel)上的peer和orderers都共享通道(Channel)的MSP,因此能够验证通道参与者的身份。这意味着,如果一个组织想加入某个通道(Channel),则需要将这个组织的MSP加入通道(Channel)配置中,否则这个组织在通道(Channel)中的交易将被拒绝。
image.png
如上图所示,看看区块管理员安装和实例化合约会发生什么。
管理员B连接到peer是通过peer本地MSP验证由RCA1颁发给B的证书来确认B的身份。当B准备在peer上部署合约时,peer上的MSP(ORG1-MSP)会验证B的身份以确认B是否有权限这么做,如果验证通过,那么B可以在peer上部署合约。如果B想在通道(Channel)上部署合约,这就是一个在通道(Channel)上的操作,通道上所有的组织都需要同意后B才可以在通道上部署合约,peer必须先检查通道MSP以确认是否有足够的权限。 -
MSP级别
网络(Network)MSP:网络MSP的配置通过定义了网络中组织的MSP及网络中的管理员来确定谁是网络中的成员
通道(Channel)MSP:通道必须分别维护其成员的MSP。通道在特定组织之间提供了私密的通信,这些组织又对其进行管理控制。通道的策略解释了哪些参与者有权利加入到通道,并在通道上执行一些任务。请注意,管理通道的权限与管理网络配置通道(或任何其他通道)的权限之间没有必然的关系。管理权限存在于管理范围内。
对等(Peer)MSP:从概念上讲,对等节点的MSP和通道上的MSP功能相同,但仅对本地有效。
Orderer MSP:与Peer的MSP相同,orderer的本地MSP也在节点的文件系统上定义,仅适用于该节点。orderer也被单个组织拥有,也只有一个MSP能列出它信任的节点或参与者。 -
MSP结构
image.png
如图所示,MSP有9个元素
根CA:此文件夹包含由此MSP表示的组织信任的根CA的自签名X.509证书列表。此MSP文件夹中必须至少有一个Root CA X.509证书
中间CA:此文件夹包含组织信任的中间CA的X.509证书列表,每个证书都必须被MSP中的根CA或在信任链中能回溯到根CA的中间CA签名。中间CA可以代表组织的子分支或组织自身。与根CA文件夹类似, 存放着能被组织确认身份的由CA颁发的证书。
组织单位(Organizational Units):这些单位列在$FABRIC_CFG_PATH/msp/config.yaml 文件中,是被MSP视为组织成员的。当您希望将组织成员限制为拥有其中包含特定OU的身份(由MSP指定的CA之一签名)的成员时,此功能尤其有用。指定OU是可选的。如果未列出任何OU,则作为MSP一部分的所有身份(由根CA和中间CA文件夹标识)将被视为组织的成员。当您希望将组织成员限制为拥有其中包含特定OU的身份(由MSP指定的CA之一签名)的成员时,此功能尤其有用。
管理员:此文件夹包含一个标识列表,用于定义具有此组织管理员角色的参与者。对于标准MSP类型,此列表中应该有一个或多个X.509证书。值得注意的是,一个参与者具有管理员的角色,并不意味着他们可以管理特定的资源!给定标识被赋予在管理系统方面的限定由管理系统资源的策略决定。例如,通道(Channel)策略可能指定ORG1-MANUFACTURING 管理员有权将新组织添加到通道,而 ORG1-DISTRIBUTION管理员则没有此类权限。即使X.509证书具有一个ROLE属性(例如,指定一个参与者是一个admin),这指的是一个参与者在其组织内而不是在区块链网络中的角色。这类似于OU属性的目的,如果已定义属性,则指的是参与者在组织中的位置。如果已编写该通道的策略以允许组织(或某些组织)的任何管理员执行某些通道上的功能(例如实例化链代码),则该ROLE属性可用于在通道(Channel)级别授予管理权限。通过这种方式,组织角色可以赋予网络角色。
证书撤销:如果已撤销参与者的身份,则在此文件夹中保存有关身份的信息 - 而不是身份本身。对于基于X.509的标识,这些标识符是SKI和AKI的字符串对,用来确保当证书被使用的时候没有被撤销。此列表在概念上与CA的证书吊销列表(CRL)相同,但它也与从组织中撤消成员身份有关。因此,MSP的管理员(本地Local或通道Channel)可以通过发布颁发证书的CA的CRL的更新来快速撤销组织中的参与者或者节点。这个“列表的列表”是可选的。它只会在证书被撤销时填充。
节点标识:此文件夹包含节点的标识,即加密材料 - 与内容的组合KeyStore- 将允许节点在发送给其信道和网络的其他参与者的消息中验证自身。对于基于X.509的标识,此文件夹包含一个X.509证书。这是peer在交易提议响应中放置的证书,例如,用于指示peer已经认可它 - 随后可以在验证时针对结果交易的认可策略进行检查。此文件夹对于本地MSP是必需的,并且该节点必须只有一个X.509证书。它不用于通道MSP。
Keystore的私钥:这个文件夹是用于存放peer或者orderer节点的(或者用户的本地MSP)签名密钥(signed key)。此密钥以加密方式匹配节点标识 文件夹中包含的节点标识,并用于签署数据 - 例如签署交易提议响应,作为认可阶段的一部分。
TLS根CA(TLS Root CA):这个文件夹包含了组织在进行TLS通信时信任的根CA的自签名证书列表。当peer需要连接到orderer以同步账本数据时会用到TLS通信。
TLS中间CA(TLS Intermediate CA):此文件夹包含由该MSP所代表的组织信任的名单中间CA证书的CA 的TLS通信。当商业CA用于组织的TLS证书时,此文件夹特别有用。与成员资格中间CA类似,指定中间TLS CA是可选的。