Fabric账号介绍

在任何非开放系统中都需要通过账号和密码对系统入口进行相关的管理。比如我们常用的电子邮件系统都需提供账号和密码方可使用,再比如常见的数据库管理系统也需要获取相应的账号和密码才能对数据库进行操作。通过本章前面的内容我们知道Fabric是一个联盟链,联盟链的特点是用户非授权时不能接入区块链。因此Fabric系统中存在一套授权体系,我们将这个体系称为Fabric的账号体系。关于Fabric的账号我们要搞清楚两个问题:

·Fabric账号是什么。

·什么样的操作需要使用到Fabric的账号。

一、Fabric账号是什么

Fabric中的账号实际上是根据PKI规范生成的一组证书和秘钥文件。cryptogen模块生成的文件中就包含Fabric账号相关的证书文件。我们通常接触到的账号系统一般是由账号和密码两个属性组成的,比如常用的电子邮箱系统。在这些系统中账号和密码只是获取操作权限的工具,一旦账号和密码验证成功,后面的操作基本上就和账号密码没有什么关系了。

但是区块链系统的一个非常重要的特点是:记录在区块链中的数据具有不可逆、不可篡改的特性。在Fabric中每条交易都会加上发起者的标签(签名证书),同时用发起人的私钥进行加密。如果交易需要其他组织的节点提供背书功能,那么背书节点也会在交易中加入自己的签名。这样每一笔交易的操作过程会非常清晰并且不可篡改。鉴于传统系统中基于账号和密码的验证体系已经无法完成这样的工作,因此Fabric设计了基于PKI规范的账号系统满足这样的要求。

既然Fabric的账号如此重要并且功能强大,同时又和传统的证书体系有本质的区别,那么它到底是什么样子?又由那些部分组成呢?我们通过下面的例子详细了解Fabric账号中包含哪些部分。以5.2.1节中cryptogen模块生成账号为例,截取其中一个完整的账号包含的内容来说明Fabric账号的结构。

一个完整的Fabric账号中包含的内容如下所示:

blob.png

上述示例中的所有文件公共构成Fabric系统中的账号,通过上面的例子我们发现每个Fabric账号包含若干证书文件和秘钥文件,由此可见Fabric的账号体系比传统系统中由账号和密码组成的认证体系要复杂很多。仔细观察Fabric账号中证书文件的路径,我们发现这些证书分别存放在msp文件夹和tls文件夹中。

1、msp文件夹中内容msp中主要存放签名用的证书文件和加密用的私钥文件。msp中包含以下5个部分:

·admincerts:管理员证书。

·cacerts:根CA服务器的证书。

·keystore:节点或者账号的私钥。

·signcerts:符合X.509的节点或者用户证书文件。

·tlscacerts:TLS根CA的证书。

2.tls文件夹中的内容

tls文件夹中存放加密通信相关的证书文件。这一组文件实际上起到了账号的作用。我们把这样一组文件称为Fabric的账号。

账号的说法是本书对Fabric中账号的特定称谓。Fabric的官方文档把这些证书称为Membership Service Providers,简称为MSP,我们无法找到更加准确的翻译,所以本书暂且用账号这个比较传统的名词来指代Fabric生成的这些证书。从实际的运行效果看,这些证书文件等同于账号的作用。

这里最后再啰嗦一遍,本书中账号就是MSP,本书中账号就是MSP,本书中账号就是MSP。重要的事情需要重复三遍。

二、什么地方需要使用Fabric的账号

Fabric中Orderer、Peer、客户端SDK、CLI接口等所有操作都需要账号。Fabric中每个具体的动作,创建通道、部署chaincode、调用chaincode等都需要指定的账号。每个Peer向Orderer发送请求的时候也需要Peer的账号。在Fabric中如果需要新增加一个Peer节点,首先做的事情是给这个Peer创建账号。为了显示账号的重要性,下面列举一些Fabric中常用的操作,看看这些操作是如何使用账号的。这里的目录是基于本书作者的演示环境的目录,读者可以根据自己的环境查找相关的文件。

这里的目录是基于本书作者的演示环境的目录,读者可以根据自己的环境查找相关的文件。

1、启动Orderer需要的账号

启动Orderer的时候我们需要通过环境变量或者配置文件给当前启动的Orderer设定相应的账号。

环境变量设置账号:

blob.png

配置文件为General节点下面的LocalMSPDir子节点,如下所示:

blob.png

启动的Orderder的账号是什么样子,我们进入相关目录执行命令tree-L 4,如下所示:

blob.png

2.启动Peer需要的账号

启动Peer的时候我们需要通过环境变量或者配置文件给当前启动的Peer设定相应的账号。环境变量设置账号:

blob.png

blob.png

配置文件为peer节点下面的mspConfigPath子节点,如下所示:

blob.png

启动的Peer的账号是什么样子,我们进入相关目录执行命令tree-L 4,如下所示:

blob.png

3.创建Channel需要用到的账号

Channel是Fabric中非常重要的组成部分,创建Channel的时候也是需要账号的。读者可以参考5.2.6节创建账号的脚本,其中有一个环境变量CORE_PEER_MSPCONFIGPATH,该环境变量的设置如下:

blob.png

CORE_PEER_MSPCONFIGPATH环境变量设置了创建当前账号的用户信息,我们可以通过命令tree-L 4进入该目录看以下账号的内容:

blob.png

我们可以发现这些账号的内容是一样的,都包含了5个不同的文件,但是我们仔细观察会发现在文件路径上面还是有一些区别的。我们把路径中相同的部分隐藏后对比如下:

blob.png

blob.png

我们可以发现Peer和Orderer都有属于自己的账号,创建Channel使用的是用户账号。其中Peer和创建Channel的用户账号属于某个组织,而Orderer的启动账号只属于他自己。这里特别注意,用户账号在很多操作中都会用到,而且很多操作的错误都是用户账号的路径设置不当而引起的。在本书后面需要设置用户账号的地方会仔细说明用户账号的使用方法。

868区块链学习网为您整理《Fabric账号介绍》仅供参考。