一课读懂Hyperledger Fabric

随着比特币,以太坊和其他一些衍生技术的普及,区块链,分布式账本和分布式技术在企业应用的需求也在增长。但是,企业案例还需要一些特殊的性能特征,而这些性能特征是目前公有区块链技术不能提供的。
Hyperledger Fabric是一个开源的企业级许可分布式分类帐技术(DLT)平台,专为在企业环境中使用而设计。
Fabric具有高度模块化和可配置的架构,可为各种行业用例提供支持, 例如银行、金融、保险、医疗保健、人力资源、供应链甚至数字音乐交付,Fabric的应用在未来拥有广阔的前景。
Hyperledger项目是一个大型的开源项目,希望通过各方合作,共同促进和推进区块链技术在商业应用方面的发展。在组成结构上,包含了很多相关的具体子项目。项目官方地址托管在 Linux 基金会网站,代码托管在 Gerrit上,并通过GitHub提供代码镜像。
Hyperledger项目在管理所属子项目时采用了一种生命周期的形式,赋予每个项目一个生命周期,方便项目的运行和管理。整个生命周期分为5个阶段,分别是提案(proposal)阶段、孵化(incubation)阶段、活跃(active)阶段、弃用(deprecated)阶段以及最后终止(End of Life)阶段。每个项目在开发运行过程中,一个时间点只会对应着一个阶段。当然,项目不一定会按照以上阶段顺序发展,项目可能会一直处于某个阶段,也可能会因为一些特殊原因在多个阶段之间进行变换。

目前,Hyperledger项目下共有14个子项目在运行中,详细信息如下表所示:

我们重点来关注Fabric,Fabric是一种区块链技术的实现,也是一种基于交易调用和事件的分布式共享账本技术。比起其他的区块链技术实现,它采用了模块化的架构设计,支持可插拔组件的开发与使用。其总帐上的数据,由多方参与节点共同维护,并且一旦被记录,账本上的交易信息永远无法被篡改,并支持通过时间戳进行溯源查询。
与以太坊相比,有以下优势:
· Fabric引入了成员管理服务,因此每个参与者在进入前均需要提供对应的证书证明身份才能允许访问系统,同时引入多通道多账本的设计来增强安全性和私密性。
· Fabric采用了强大的Docker容器技术来运行服务,支持比以太坊更便捷、更强大的智能合约服务。
· Fabric可以支持多语言的合约编写,例如GO、Java和Node.js。
Hyperledger  Fabric是分布式账本技术(DLT)的独特实现,它可在模块化的区块链架构基础上提供企业级的安全性、可扩展性以及高性能。当前Fabric的最新版本与最早的v0.6版本相比,在安全、保密、部署、维护、实际业务场景需求等方面都进行了很多改进:
· 架构设计上的Peer节点的功能分离、多通道的隐私隔离、共识的可插拔实现等。
· 功能上引入Raft崩溃容错共识服务、改进可维护性和可操作性、加入私有数据支持等。
Fabric具有以下特性:
身份管理(Identity management):Fabric区块链是一个许可链网络,因此Fabric提供了一个成员服务(Member Service),用于管理用户ID并对网络上所有的参与者进行认证。在Hyperledger Fabric区块链网络中,成员之间可以通过身份信息互相识别,但是他们并不知道彼此在做什么,这就是Fabric提供的机密性和隐私性。
隐私和保密(Privacy and confidentiality):Hyperledger Fabric允许竞争的商业组织机构和其他任意对交易信息有隐私和机密需求的团体在相同的许可链网络中共存。其通过通道来限制消息的传播路径,为网络成员提供了交易的隐私性和机密性保护。在通道中的所有数据,包括交易、成员以及通道信息都是不可见的,并且对于未订阅该通道的网络实体都是无法访问的。
高效的性能(Efficient processing):Hyperledger Fabric按照节点类型分配网络角色。为了提供更好的网络并发性和并行性,Fabric对事务执行、事务排序、事务提交进行了有效的分离。先于排序之前执行事务可以使得每个Peer节点同时处理多个事务,这种并发执行极大地提高了Peer节点的处理效率,加速了交易到共识服务的交付过程。
模块化设计(Modular design):Hyperledger Fabric实现的模块化架构可以为网络设计者提供功能选择。例如,特定的身份识别、共识和加密算法可以作为可插拔组件插入Fabric中,因此任何行业都可以采用通用的区块链架构,并确保其网络可跨市场、监管和地理边界进行互操作。
可维护性和可操作性(Serviceability and operations):日志记录的改进以及健康检查机制和运营指标的加入,使得v1.4版本在可维护行和可操作性上实现了巨大飞跃。新的RESTful运营服务为生产运营商提供三种服务来监控和管理对等节点和共识服务节点运营。
第一种服务使用日志记录/logspec端点,允许操作员动态获取和设置对等节点和共识服务节点的日志记录级别。
第二种服务使用健康检查/healthz端点,允许运营商和业务流程容器检查对等节点和共识服务节点的活跃度和健康情况。
第三种服务使用运营指标/metrics端点,允许运营商利用Prometheus记录来自对等节点和共识服务节点的运用指标。
Hyperledger Fabric 架构解读
Fabric主要由3个服务模块组成,分别是成员服务(Membership Service)、区块链服务(Blockchain Service)和合约服务(Chaincode Service)。在逻辑架构图中,还能看到事件流贯穿三大服务组件间,它的功能是为各个组件的异步通信提供技术支持。

通道:在v1.0之后的版本中,Fabric引入了新的通道概念,共识服务上的消息传递支持多通道,使得Peer节点可以基于应用访问控制策略来订阅任意数量的通道。
· Peer节点的子集可以被应用程序指定架设相关通道,指定相同通道的Peer节点组成集合提交该通道的交易,而且只有这些Peer节点可以接收相关交易区块,与其他交易完全隔离。
· Fabric支持多链与多通道,即系统中可以存在多个通道以及多条链。应用根据业务逻辑决定将每个交易发送到指定的一个或多个通道,不同通道上的交易不会存在任何联系。

私有数据支持:从v1.2开始,Fabric能够在账本中创建私有数据集,允许通道上组织的子集能够认可、提交或查询私有数据,不用创建单独的通道就能实现通道上的一组组织的数据向其他组织保密的功能。
私有数据存储在授权组织的对等节点上的私有状态数据库中(有时候被称为“side”数据库),能被授权节点上的链码通过gossip协议访问。共识服务不涉及私有数据,也无法看到它们。
私有数据的哈希值能够被认可、排序并写入通道上每个节点的帐本中,可作为交易的证据,用于状态验证,还可用于审计。
节点分类:Fabric中多种类型的节点,具体分类和功能介绍如下:
客户端节点:客户端是最终用户操作的实体,它必须连接到某个Peer节点或者orderer节点,与整个区块链网络进行通信。
CA节点:CA节点接收客户端的注册申请,返回注册密码用于登录,以便获取身份证书。在区块链网络上所有的操作都会验证用户的身份。
Peer节点:每个Peer节点可以担任如下多种角色:Endorser Peer (背书节点)、Leader Peer(主节点)、Committer Peer(记账节点)、Anchor Peer(锚节点)。
注意:每个Peer节点必定是一个记账节点,除记账节点外,它还可以担任其它一到多种角色,即某个节点可以同时是记账节点和背书节点,也可以同时是记账节点、背书节点、主节点,锚节点。
Endorser Peer (背书节点):所谓背书(Endorsement),就是指特定Peer执行交易并向生成交易提案(proposal)的客户端应用程序返回YES/NO响应的过程。只有在应用程序向节点发起交易背书请求时才成为背书节点,其他时候是普通的记账节点,只负责验证交易并记账。
Leader Peer(主节点):主节点负责和Orderer排序服务节点通信,从排序服务节点处获取最新的区块并在组织内部同步。
Committer Peer(记账节点):负责验证从排序服务节点接收的区块里的交易,然后将块提交(写入/追加)到其通道账本的副本。
Anchor Peer(锚节点):锚节点主要用来同步同一通道中各组织间的信息。
Orderer(排序服务节点):排序服务节点接收包含背书签名的交易,对未打包的交易进行排序生成区块,广播给Peer节点。

Hyperledger Fabric就介绍到这里啦,下一期我们将带大家了解Hyperledger Fabric的项目架构组成敬请期待~