fabric的背景、作用等等,这里就不介绍了,网上一搜一大堆。本文主要从技术层面来讲解fabric的特点、主要概念以及架构,从而能够快速对fabric能有一个整体上的认知。
总体架构

图中可知主要分为:网络层、核心层、接口层。
-
网络层
负责P2P网络的实现,取保区块链分布式存储的一致性。使用了gRPC协议以及Gossip协议。 -
接口层
给第三方提供API、可通过Events监控事件,方便第三方应用调用和处理 -
核心层
- 成员服务:包括注册、登记、申请证书等,为保证联盟成员数据的安全性,必须获得证书才能加入链中。
- 区块链服务:负责账本的计算和存储、节点的排序服务、背书验证管理以及账本存储方式等功能等实现
- 链码服务:智能合约,用于支撑业务
交易流程
- 交易流程是Fabric的核心运行机制以及整体运行原理,很有必要去完整掌握。
- Fabric中,并不是像公链那样一个节点集中处理各种问题,而是根据功能到不同,划分为了不同的节点和角色。大体上节点分为:处理业务的Peer节点以及用于达成排序共识的Order节点,其中Peer节点根据不同功能,还可具体划分为不同角色的节点,如背书节点Peer、提交节点Peer。关于节点概念、功能和细节,后续逐步会去详细讲解,在此只要有个大概了解即可。
- 在Fabric中,处理每笔交易都需要都需要对交易信息进行权限校验,确保上链的数据是经过授权允许的。
流程描述(重点掌握)

- 应用程序客户端通过SDK调用成员服务,进行注册、登记并获取身份证书
- 应用程序客户端通过SDK向区块链网络发起一个交易提案(Proposal),交易提案把本次交易要调用的合约标识,合约方法和参数信息以及客户端签名等信息发送给背书节点。
- 背书节点收到交易提案后,验证签名并确定交易者是否有权执行操作,同时根据背书策略模拟执行智能合约,并将结果及各自的CA证书签名返回给应用程序客户端。
- 应用程序客户端收到背书节点返回的信息后,判断提案结果是否一致,以及是否参照指定的背书策略执行。如果没有足够的背书,则终止处理;否则,应用程序客户端把数据打包到一起,组成一个交易并签名,发送给排序节点(角色)。
- 排序节点(角色)对接收到的交易进行共识排序,然后按照区块生成策略,将一批交易打包到一起,生成新的区块,发送给提交节点(Peer)。
- 提交节点收到区块后,会对区块中的每笔交易进行校验,检查交易依赖的输入输出是否符合当前区块链的状态,完成后将区块追加到本地的区块链,并修改世界状态(即确保参数为最新值)
关键技术
Fabric的关键技术主要分为:账本
、智能合约
、通道
、节点
、排序
、接口
,通过这六部分底层内容的了解,可以很好的了解Fabric的运行机制
1. 账本(Ledger)
主要是区块本身以及世界状态的存储,有序、防篡改。

- 本地文件系统
将区块存储于文件系统的硬盘中,每个区块中保存区块头(Block Header)、区块数据(Block Data)、区块元数据(Block Metadata,配置相关信息?
),通过区块头中的前一个区块的哈希值指向前一个区块区块的当前哈希值。 - 状态数据库
存储在链交易中出现的所有键值对的最新值,调用链码执行交易可改变状态数据。为了高效执行联码调用,最新值都保存在状态数据库中。默认状态数据库为LevelDB(特点:简单的KV),可选择Couchdb作为数据库(特点:富文本查询)。 - 账本索引数据库
文件系统中保存区块时,会在数据库(LevelDB)中保存索引。提高查询区块交易信息的速度。注意这里跟状态数据库无关,状态数据库更多的是链码对应的业务数据。
- 历史状态数据库
一个键值更改后,更改的历史记录是保存在数据库中的。同样可以使用LevelDB或CouchDB,查询状态的时候,也可以查看值的历史更改记录。
2. 智能合约(Chaincode)
用于处理业务的代码,稍微了解区块链的人应该都明白这个概念,只是Fabric中,更喜欢用链码
来表达智能合约的意思。由于Fabric的授权机制,链码
的生命周期较为复杂,其中1.4版和2.0版的生命周期差异很大,从打包、签名到最终安装、发布,涉及的细节较多,后续会专门来讲解这部分内容,这里有个了解即可。后续更多的是以2.0版为主来讲解。
3. 通道(Channel)
- 一条channel可以理解为是一条独立的区块链,在其中拥有独立的创世区块以及智能合约。它是Peer之间通信的私有空间,channel内交易的数据与外部环境隔绝,保证channel内部数据安全。一条channel内部参与交易的成员,都需要经过身份验证和授权。
- Fabric网络是多通道设计,也就是说,一个Peer节点可以同时加入不同的channel。
- 每个Channel都有自己的锚节点,通过锚节点可以与其它通道进行交互(比如合约内,可以通过锚节点访问另一个通道的某个参数),但本身通道的账本是隔绝的。
4. Peer节点
- 是区块链交易处理和账本维护的主体,主要负责参与共识过程和通过执行链码实现对账本的读写操作。
- Peer节点根据功能不同可以划分为:
背书节点(Endorser Peer)
、提交节点(Committer Peer)
- 背书节点(Endorser Peer):根据事先设定好的策略对交易进行签名背书,在链码实例化的时候设置背书策略,指定哪些节点用于背书。当客户端向节点发起交易背书时,该节点才能有背书功能,否则只是普通的记账节点。
- 提交节点(Committer Peer):也是普通的记账节点,负责维护状态数据和账本的副本。
- Peer节点根据通信不同可以划分为:
锚节点(Anchor Peer)
、主节点(Leading Peer)
- 锚节点(Anchor Peer):随channel存在的,是能被其它channel发现的节点,每个channel上有一个或多个锚节点。
- 主节点(Leading Peer):负责与Order通信,把共识后的区块传输到其它节点。
5. Order排序
对区块链网络中不同通道产生的交易进行排序,并广播给Peer。排序算法Fabric支持多种,如:Solo、Kafka、Raft等,Fabric2.0后,以Raft为主。
6. API接口
方便第三方调用账本、chaincode、channel、节点、排序等
总结
本文主要介绍了Fabric的几个核心概念,通过这些概念能够对运行机制和原理有一个初步的了解。为后续深入掌握奠定了一个比较好的基础。
Donate