一、Hyperledger Fabric是什么
Hyperledger Fabric是面向企业应用场景的开源分布式账本平台。Hyperledger Fabric基于模块化设计,各个模块实现特定的功能。企业之间可以组建Fabric联盟链,将相关业务数据通过智能合约方式写入链上,通过背书策略来保证各个企业数据的一致性。由于业务数据的共享,从而加速各项业务的开展,最直接的场景比如清结算等。
二、Hyperledger Fabric的相关组件
Hyperledger Fabric主要由以下几个组件构成,fabric-ca, fabric-peer, fabric-orderer, fabric-kafaka,fabric-zookeeper .
Fabric-ca的主要作用是为组织内的成员颁发证书。每个组织都有自己的根证书,用于识别用户身份。
Fabric-peer是运行在用户组织内的节点上。每个组织可以有多个peer, peer主要是维护区块链的账本数据。部分peer会承担背书的角色,这里背书主要指的是模拟执行用户的智能合约并且签名。
Fabric-orderer, fabric-kafaka, fabric-zookeeper主要是提供orderer服务,用户将请求提交给orderer, orderer对用户的请求进行排序,通过排序从而保证分布式业务的顺序。
三、Hyperledger Fabric使用流程
1.多个组织协作搭建Hyperledger Fabric网络,每个组织都有自己的peer节点用来存储账本数据。
2.根据业务需求创建通道(可以建立多条通道,通道间的数据彼此独立,一条通道是有很多区块构成的链式结构)
3.根据业务需求,相关组织选择peer加入到通道中
4.根据业务需求,编写智能合约
5.根据业务需求,相关组织选择peer安装智能合约
6.其中一个组织,实例化智能合约,主要是在特定的通道创建特定业务的命名空间并且写入此命名空间的初始化数据,在实例化智能合约的过程中,指定智能合约的背书策略
7.相关组织通过调用智能合约和链上数据进行交互,包括查询,更新等
四、Hyperledger Fabric的交易流程图
1.Client sdk生成交易请求,并发送到足够多的背书节点。这里的主要目标是满足背书策略。
2.背书节点根据用户的请求,按照智能合约模拟执行,返回背书交易
3.Client sdk收集满足背书策略的背书交易后发送到orderer排序
4.Orderer对交易排序完成后,生成对应的区块,并下发到对应的peer节点
5.Peer节点检查区块中的交易,并生成最终的区块
五、Hyperledger Fabric的常见问题
a)区块结构以及交易信息
下图主要是列出了Hyperledger中区块链中单个区块的结构,区块通过PreviousHash连接成链式结构,交易信息里面包含了交易的读集和写集。Fabric对于交易,并没有记录具体的操作过程,主要是记录读集合和写集合。
b)MSP相关的目录
MSP的主要作用是成员管理服务,常见的msp配置目录,一般包含以下几个目录。admincerts存放着组织管理员的证书,拥有组织管理员证书对应的私钥文件的实体,可以发起一些特殊交易,比如创建通道,加入通道等。cacerts存放着这个组织的根证书,组织根证书的作用主要是用来验证发起交易的实体是否属于这个组织,如果实体拥有的证书是由这个根证书颁发的,那么这个实体就属于这个组织。keystore存放着这个实体的私钥文件,这个实体可以用这个私钥对交易进行签名。signcerts存放着这个实体的证书文件,这个证书文件会和签名一起发出去,可以通过这个证书文件验证签名是否正确,同时可以验证这个实体是否属于特定组织。tlscacerts 存放着这个组织tls的根证书。
c)Fabric目前涉及到的加密算法
HASH算法,目前用到的是SHA2-256,对应到国密算法可以用SM3
非对称加密算法,椭圆曲线(ECC),目前用到的是secp256r1, 对应到国密算法可以用SM2.
d) 创建通道的时候,需要选择用组的admin用户创建,这个主要是由于系统链 的策略配置。
e) 对于区块存储文件,单个文件大小是否有限制。
目前在fabric里,区块是存在一个个文件里的,单个文件的大小是64M。