1、HyperLeger Fabric逻辑架构简介
HyperLeger Fabric开发(三)——HyperLeger Fabric架构
Fabric逻辑架构根据不同角度进行划分,上层基于应用程序角度进行设计,包括SDK、API、事件,通过SDK、API、事件来对底层区块链进行操作:包括身份管理、账本管理、交易管理、智能合约的部署和调用;下层基于底层区块链进行设计,对外提供成员管理服务、共识服务、链码服务、安全和密码服务。

Fabric为应用开发提供了标准的gRPC接口,在API的基础上封装了不同语言的SDK,包括Go、NODE.JS、Java、Python等,开发人员可以利用SDK开发基于区块链的应用;同时,区块链的强一致性要求各个节点之间达成共识需要较长的执行时间,应用程序也是采用异步通信的模式进行开发的,事件模块可以在触发区块事件或者链码事件的时候执行预先定义的回调函数。
Fabric通过将各个部分分离成不同的模块,做到可插拔性、灵活扩展性。

2、应用层逻辑架构
(1)身份管理
联盟链考虑到商业应用对安全、隐私、监管、审计、性能的需求,提高准入门槛,成员必须被许可才能加入网络。Fabric是目前为止在设计上最贴近联盟链思想的区块链。联盟链考虑到商业应用对安全、隐私、监管、审计、性能的需求,提高准入门槛,成员必须被许可才能加入网络。Fabric成员管理服务为整个区块链网络提供身份管理、隐私、保密和可审计的服务。成员管理服务通过公钥基础设施PKI和去中心化共识机制使得非许可的区块链变成许可制的区块链。

Fabric区块链中,采用数字证书机制负责对网络中的成员身份进行管理,CA节点实现了PKI服务。
PKI(Public Key Infrastructure)是综合多种密码学手段来实现安全可靠传递消息和身份确认的一个框架和规范。通常,PKI包括三部分:CA(Certification Authority)负责证书的颁发和作废,接收来自RA的请求; RA(Registration Authority)负责对用户身份进行验证,校验数据合法性,负责登记,审核通过则发给CA;证书数据库用于存放证书,一般采用LDAP目录服务,标准格式采用X.500系列。
CA是PKI体系最核心的组件,主要完成对公钥的管理。密钥有两种类型:用于签名和用于加解密,对应称为签名密钥对和加密密钥对。 用户基于PKI体系要申请一个证书,一般可以由CA来生成证书和私钥,也可以自己生成公钥和私钥,然后由CA来对公钥进行签发。
(2)账本管理

授权的用户是可以查询账本数据的,可以通过多种方式查询,包括:
A、根据区块号查询区块
B、根据区块哈希查询区块
C、根据交易号查询区块
D、根据交易号查询交易
E、根据通道名称查询区块链信息

(3)交易管理
账本数据只能通过交易执行才能更新,应用程序通过交易管理提交提案(Proposal),在获取到足够数量交易背书(Endorsement)后,再给排序服务节点提交交易,排序服务将批量交易打包生成区块。SDK提供接口,利用用户证书本地生成交易号,背书节点和记账节点都会校验是否存在重复交易。

(4)智能合约
Fabric的智能合约(Smart Contract)称为链码(ChainCode),是一段代码,用于处理网络成员所同意的业务逻辑。Fabric的链码和底层账本是分开的,升级链码时并不需要迁移账本数据到新链码当中,真正实现了逻辑与数据的分离。
Fabric通过智能合约实现了可编程的账本,通过链码执行提交的交易,实现基于区块链的智能合约业务逻辑。只有智能合约才能更新账本数据,其它模块不能直接修改状态数据。

链码可采用Go、Java、Node.js语言编写。链码被编译成一个独立的应用程序,Fabric用Docker容器来运行链码,容器里的base镜像都是经过签名验证的安全镜像,包括OS层和开发链码的语言、runtime和SDK层。一旦链码容器被启动,就会通过gRPC与启动链码的Peer节点连接。

3、底层逻辑架构
(1)成员服务管理
MSP(Member Service Provider)成员服务模块对成员管理进行了抽象,提供包括会员注册,身份保护、内容保密、交易审计等功能,可以使用可插拔的Fabric-CA模块或第三方的CA来代替。

(2)共识服务
共识服务负责节点间共识管理、账本的分布式计算、账本的存储及节点间的P2P协议功能的实现,是区块链的核心组成部分,为区块链的主体功能提供了底层技术支撑

(3)链码服务
链码服务为智能合约实现提供了一系列接口,并为链码的安装、运行、部署提供了环境。智能合约的实现依赖于安全的执行环境,确保安全的执行过程和用户数据的隔离。Fabric采用Docker管理普通的链码,提供安全的沙箱环境和镜像文件仓库,可支持多种语言的链码。

(4)安全和密码服务
安全问题是企业级区块链关心的问题,Hyperledger Fabric专门定义了一个BCCSP(BlockChain Cryptographic Service Provider www 460608.com)模块,实现密钥生成、哈希运算、签名验签、加密解密等基础功能。

4、HyperLeger Fabric逻辑架构的特点

Hyperledger Fabric采用模块化架构设计,利用通用的功能模块和接口。模块化的方法带来了可扩展性、灵活性等优势,会减少模块修改、升级带来的影响,能很好的利用微服务实现区块链应用系统的开发和部署。
(1)模块插件化
Fabric很多功能模块(如CA模块、共识算法、状态数据库存储、ESCC、VSCC、BCCSP等)都是可插拔的。Fabric提供的通用接口和默认实现可以满足大多数的业务需求,同时功能模块也可以根据需求进行扩展,www bxx5.com集成到Fabric区块链网络系统中。
(2)充分利用容器技术
Fabric中不仅节点使用容器作为运行环境,链码也默认运行在安全的容器中。应用程序或者外部系统不能直接操作链码,必须通过背书节点提供的接口转发给链码来执行。容器给链码运行提供安全沙箱环境,把链码的环境和背书节点的环境隔离开,链码存在安全问题也不会影响到背书节点。
(3)可扩展性
Hyperledger Fabric1.x版本对节点的角色进行了不同的拆分,有主节点(Leader)、背书节点(Endorser)、记账节点(Committer)、排序服务节点(Orderer)等,不同角色的节点有不同的功能。节点可以加入不同的通道中,链码可以运行在不同的背书节点上,可以更好的提升并行执行的效率和吞吐量。
(4)安全性
Hyperledger Fabric提供授权访问的区块链网络,节点共同维护成员信息,只有MSP(Member Service Provide)模块验证、授权的终端用户才能使用区块链网络的功能。多链和多通道的设计容易实现数据隔离,也提供了应用程序和链码之间的安全通道,实现了隐私保护。