导语:本文主要介绍超级账本 Fabric 的特点、基本架构设计、运行过程,以及在学习过程中遇到的一些疑问进行总结梳理。
一、超级账本Fabric的基本特点
(1)开放性
超级账本是linux基金会2015年底成立的。自成立后吸引了大批企业,包括IBM、accenture、intel、cisco、HITACHI等大企业的加入。现在的Fabric源代码主要由IBM和Digital Asset这两家公司提供。是IBM开源的blockchain项目。
(2)开源
开源是特色。Fabric的源代码的开源的,托管在github上,链接见https://github.com/hyperledger/fabric.git。所有开发者或企业机构都可以自由地下载,进行研究,在此基础上结合业务场景,在不同的商业场景上应用落地。
(3)SDK支持多语言,减低门槛
目前Fabric SDK支持go、java、js,python四种主流语言,大多数开发者可以快速的上手,降低了开发的门槛和成本。此外,还有一个Hyper ledger Composer工具,可以快速地搭建环境。
(4)可插拔,可扩展
Fabric中的CA、数据库、共识算法都是可插拔的。而且,Fabric中的链码是通过docker实现。
(5)基于联盟链的前提,兼顾数据共享和隐私保护
Fabric最多的特点是引入了链码和通道的概念。在Fabric中,通过channel,也即通道隔离数据,只有在这个通道的节点才能共享账本,二访问不了其他账本。通过建立不同的通道,可实现按需共享的目的。更符合现实生活的商业场景。
二、Fabric的基本架构
Fabric包括了三大基本组件:Peer节点,Orderer节点,fabric-ca.
(1)Peer节点
Peer节点一般运行在docker中,主要负责接收交易请求,是在网络中具有一定功能的服务或软件。而节点之间的通信是通过GRPC实现。Peer节点主要分为三种类型:Endorser、Committer、Submitter。每一个Peer节点中都维护一份账本,账本数据本身是文件系统。
1、 背书节点Endorser : 负责对交易天进行检查背书,根据定义好的规则读写数据、读写集。这个读写的数据称之为状态db(state db或者world state db),可以是CouchDB或者LevelDB。背书就是签署授权的意思。即根据约定往事务里读写数据,可以理解为执行合同中的某一个条款。但是这个数据是没有写到账本中的,因为账本是共享的。
2、确认节点Committer:负责检查交易请求,验证endorsements和transaction的结果,并且执行交易,并维护区块链和账本结构。Committer会写共享账本数据。
3、Submitter:具体职能暂时没用。
(2)Order节点
Order节点主要负责对收到的交易在网络中进行全局爱须。接收transaction,产生block。并且负责共识机制的policy管理,RWSet。
(3)CA节点
CA节点主要负责网络中成员身份管理。目前采用数字证书机制,实现PKI服务。包括以下三个组件:
1、CA:负责证书的颁发和作废,接收来自RA的请求。是PKI服务中最核心的组件,主要完成对公钥的管理。
2、RA:对用户身份进行验证,校验数据合法性,负责登记和审核,审核通过了就会发给CA
3、证书数据库:存放证书。
三、Fabric运作过程
事务就是合约、合同。完成这个合同的不同的参与者需要完成不同的任务。如下图所示:右上角的紫色的框内是签署规则;E0、E1、E2是Endoser节点;P3、P4是Commit节点;上述节点运行在一个通道channel上;黄色A表示连码;
注:图片摘自《IBM技术专家:Hyperleger Fabric架构域部署实例解析》
(1)客户端根据规则向这个网络中广播一条消息
(2)Endoser节点收到消息后,进行背书。即根据约定往事务里读写数据,可以理解为执行合同中的某一个条款。但是这个数据(RW sets)是没有写到账本中的,因为账本是共享的。
(3)Endoser节点完成签署后,通知客户端。其中,读写数据会被每个Endoser签名。
(4)客户端段收到返回后,就像Orderer service发送请求。Orderer 对这个交易进行排序,与网络中的其他交易是并行的。
(5)之后写到block中,并发送给Committer 节点P3和P4。共识算法有:SOLO、Kafka、SBFT等。
(6)Committer节点验证交易和当前RW sets状态是否合法,验证通过就写入到账本中。
(7)Comitter节点通过客户端,交易完成。
四、常见疑难杂症汇总
Q:区块上的数据隐私是如果实现的?
A:Fabric引入通道的概念,对数据进行隔离,从而实现不同的账本的隐私保护。即只有在这个通道上的用户才能访问这个通道上的账本。
Q:Fabric 是典型的联盟链,安全性如何?
A:联盟链中的企业都是互相了解的,每一个参与者都有企业背景的背书,基于可信的前提下建立联盟链,安全性是有保障的。
Q:Fabric中的账本实际是包括key-value的数据库和区块链,其中数据库是可修改的,不能修改的知识区块链中的账本。
A:数据是以账本上的数据为准,peer启动时会根据账本recover state db,也可以根据需要随时recover state db。其中,state db存储的是交易的最新状态,可以简单理解为:state db记录的是账户的余额,而账本记录的是UTXO模型的数据。