作为引领新一轮信息技术革命的关键技术之一,近些年来,区块链逐渐走进人们的视野。我国已将区块链产业上升为国策,利用区块链赋能各行各业,乃至促进我国治理体系和治理能力现代化。

BSN目前已适配和正在适配的联盟链底层框架为Hyperledger Fabric、FISCO BCOS、国密Fabric、CITA、梧桐链、Brochain和百度XuperChain等,以便让开发者有更多选择。

本文将重点介绍 Fabric框架。

----------

1.Fabric来源

要了解Fabric,首先要知道Hyperledger开源项目。

2015年12月,由开源世界的旗舰组织Linux基金会牵头,30家初始企业成员共同宣布Hyperledger联合项目成立。Hyperledger 超级账本,是首个面向企业应用场景的分布式账本平台,包括了:IBM、Intel、Cisco、DAH、摩根大通、R3等在内的众多科技和金融巨头的贡献参与,在银行、供应链等领域得到了广泛的关注和发展,目前已经拥有超过200家企业成员。

fabric系统架构(联盟链框架介绍)(1)

Fabric是超级账本中的最活跃的区块链项目之一,它是一个开源的企业级许可分布式账本技术(Distributed Ledger Technology,DLT)平台,专为在企业中使用而设计,致力于满足以下需求:

BSN介绍 :区块链服务网络(Blockchain-based Service Network)(以下称为“服务网络”或“BSN”)是一个跨云服务、跨门户、跨底层框架,用于部署和运行区块链应用的全球性公共基础设施网络,由国家信息中心、中国移动通信集团公司、中国银联股份有限公司、北京红枣科技有限公司共同发起。互联网是通过TCP/IP协议将属于各方的云资源和数据中心连接而形成的,BSN则是通过一套区块链环境协议将属于各方的云资源和数据中心连接而组成。两者均不属于任何单一组织,都是公共基础设施。

服务网络致力于改变目前区块链应用开发和部署的高成本问题,以互联网理念为开发者提供公共区块链资源环境,极大降低区块链应用的开发、部署、运维、互通和监管成本,从而使区块链技术得到快速普及和发展。

BSN由遍布全球的公共城市节点组成。在公共城市节点上,应用发布方和使用方可以使用统一身份证书发布、管理和加入不限数量的区块链应用,不再需要建设独立的区块链运行环境。所有应用通过负载均衡机制使平均资源消耗降至最低,运行成本仅为传统区块链云服务的20%。通过BSN,一个应用每年仅需2000-3000元人民币即可成链并开始运行。中小微企业、甚至学生在内的个人都可以通过BSN进行创新、创业。

2.Fabric中的重要概念

在Fabric中,以下概念非常重要,具体包括order、CA、MSP、通道和peer。

Order:排序节点是为网络中所有合法交易进行全局排序,并将一批排序后的交易组合生成区块结构。

CA:CA节点是证书颁发机构,由服务器和客户端组件组成。CA节点接收客户端的注册申请,返回注册密码用于用户登录,以便获取身份证书。在区块链网络上所有的操作都会验证用户的身份。

MSP:Fabric中的MSP可以理解为账号,是根据PKI规范生成的一组证书和秘钥文件。Fabric中的组织、节点、用户都拥有各自的MSP账号信息,这种机制的好处是可以保证网络中的用户数量是可控的并且用户都是被授权的。fabric基于这样的MSP账号体系保证了网络中的每条交易都有发起人的数字签名,而且背书节点也会在交易中加入自己的签名,保证了交易过程的清晰透明,不可篡改。Fabric中的orderer、peer、客户端等操作都需要使用MSP账号。比如:启动orderer节点、启动peer节点、创建通道、部署链码、调用链码、peer向orderer发送请求。

通道:通道是Fabric中非常重要的概念,作用是用于实现区块链网络中业务的隔离,一个联盟多个通道,每个通道可代表一项业务,并且对应一套账本,通道内的成员为业务参与方(即联盟内的组织),一个组织可以加入多个通道。通道分为系统通道和应用通道,排序节点通过系统通道来管理应用通道,用户的交易信息通过应用通道传递,对一般用户来说,通道是指应用通道。

在Fabric中,peer(节点)包括Endorse(背书节点)、Anchor(锚节点)、Leader(leader节点)、commit(记账节点)。背书节点负责背书策略,提交节点负责数据的提交。

首先所有的peer(节点)都是committer(记账节点),而又有可能担任的角色有endorser(背书节点)、Leader(主节点)、Anchor(锚节点)。

Committer:记账节点使用基于Gossip的p2p数据分发,节点会定期跟其他节点交换信息。

Leader:主节点连接到排序服务,负责把接受到的批量区块转发给其他节点。

Endorser:背书节点为动态的角色与具体的chaincode绑定,背书节点的故障对网络的影响取决于chaincode对应的背书策略,例如背书策略指定只要3个组织其中的2个组织的成员完成背书,该交易就是有效的,那么只有一个组织的成员节点出现故障对交易完成没有影响。

Anchor:锚节点是在一个channel上可以被所有其他peer发现的peer,channel上的每个成员都有一个anchor Peer(或多个anchor peer 来防止单点故障),允许属于不同成员的peer发现channel上的所有现有peer。

3.Fabric系统架构、网络拓扑图、交易流程

Hyperledger Fabric系统架构

fabric系统架构(联盟链框架介绍)(2)

Fabric网络拓扑图

fabric系统架构(联盟链框架介绍)(3)

Fabric交易流程

fabric系统架构(联盟链框架介绍)(4)

多通道

fabric系统架构(联盟链框架介绍)(5)

4.Fabric账本存储

Fabric账本由区块链和状态数据库两部分组成。

区块链是一组不可更改的有序的区块,记录着全部交易的日志。每个区块中包含若干个交易的数据,不同区块所包含的交易数量可以不同,区块之间用哈希关联。

状态数据库通常使用数据库保存一组账本当前的状态值,这样就不用遍历所有的交易日志去计算当前的状态值,通常使用key-value键值对表示,状态值可被创建,更新和删除。

若保存test的值为a,更新test的值为b,此时获取test值为b,获取历史记录就会得到以下两条记录:1、test:a 2、test:b 。

原理如图

fabric系统架构(联盟链框架介绍)(6)

删除 test,获取test值提示查询的信息不存在,但是获取历史记录就会得到三条记录:1、test:a 2、test:b 3、已删除。

原理如图

fabric系统架构(联盟链框架介绍)(7)

5.Fabric的共识机制

在Fabric中,有以下3中典型共识机制。

Solo共识

solo共识机制只能用于单节点模式,即只能有一个Orderer节点,因此,其共识过程很简单,每接收到一个交易信息,就在共识模块的控制下产生区块并广播给节点存储到账本中。

fabric系统架构(联盟链框架介绍)(8)

Solo 模式下的共识只适用于一个Orderer节点,所以可以在实验、或者测试环境中使用。不建议用于生产环境。

Kafka共识

在Kafka共识模式中,Orderer与Orderer之间不会互相直接建立连接,而是与Kafka连接。

这种共识模式中,依赖于外部的Kafka集群系统和zookeeper集群系统。每个Orderer会把自己的交易发送给Kafka集群,交易在Kafka对应的topic中排序后, Kafka把排序后的交易推送给Orderer节点。Orderer节点收到交易后对交易打包,然后发给peer。

fabric系统架构(联盟链框架介绍)(9)

使用Kafka共识的Fabric网络,是一个伪的去中心化的网络,整个网络的“中心”- Kafka集群,需要一个专门的组织去运行。

Kafka并不是Fabric原生支持的,需要复杂的步骤去部署。

Raft共识

在Raft共识模式中,Orderer与Orderer之间直接建立连接,不依赖外部系统。

在Orderer节点中,会创建Raft的协程来处理与其他Orderer的通信,具体如下图:

fabric系统架构(联盟链框架介绍)(10)

在Raft模式中,每个组织都可以贡献排序节点共同组成排序服务,更好的去中心化。

每个通道都会运行Raft协议的单独实例。有N个通道的网络,就有N个Raft集群,每个Raft集群都有自己的主导排序节点。

,