Hyperledger Fabric

这篇文章根据某次IBM技术人员做的分享进行整理。从下面几个方面介绍了Hypeledger Fabric。

  1. Hyperledger Fabric 简介
  2. Hyperledger Fabric 特性
  3. Hyperledger Fabric 架构与核心组件

Hyperledger Fabric 简介

Hyperledger Fabric,中文称超级账本,原来主要由IBM和Data Asset发起,现在由Linux基金会管理。

IBM和Data Asset的客户都是企业、政府部门。那么超级账本的也是是针对企业应用的开发的。企业应用里使用区块链主要为了利用技术提升内部运作效率,基本没有挖矿和币的概念。所以 Fabric 的默认实现基本也不包含这两块儿,这点儿和比特币以太坊等公链还是有很大差别的。

除了Fabric之外,Hyperledger项目还管理一些别的工具,有兴趣的话可以到官网了解一下。

Hyperledger Fabric 特性

Fabric 基本有下面几个特性:

  • 开放
  • 开源
  • 多语言支持
  • 可插拔,可扩展
  • 兼顾数据共享与隐私保护

下面我们一个个看一下。

开放

Linux 基金会大家都知道。谈到这个 Linux 基金会的大家首先会想到 Linux 操作系统和 github。Linux 毫无疑问是应用最广的服务器端操作系统。github是最大的开源社区,github 上有无数的开源软件,遍布全球的程序员每天都在 github 上提交新项目,改进代码。

Linux基金会的会员非常多,目前企业会员就超过 1000 家,当然也包括很多中国的大企业,像 BAT,华为,中国移动,招商银行,中国电信,中信银行等等。

超级账本的是 Linux 基金会 15 年底宣布成立的,成立之后很快就吸引了大批的企业,到 2016 年底就有 120 多家企业,大约四分之一是中国企业。所以说中国的IT现在是非常活跃的,对这个区块链的投入也非常大。

下面这个图是目前这个项目下面的18家白金会员。


Hyperledger Fabric_第1张图片
超级账本白金会员

开源

这个没太多好说的,它的源代码是公开的,github 上有镜像,大家可以很方便地下载。

支持多语言

这里说的多语言主要是指与 Fabric 交互的 SDK 支持多种语言。
如下图所示,SDK目前支持 go, java, js, python 四种语言。


Hyperledger Fabric_第2张图片
超级账本SDK支持的语言

这四种编程语言基本是目前最流行的编程语言了吧?我相信绝大部分写代码的同学至少会其中的一种。这也就大大降低了使用 Fabric 的门槛,你不用再新学一种语言就可以开始写程序做区块链应用了。

另外,超级账本还有一个叫做 Hyperledger Composer 的工具。借助这个工具,可以很快的搭建区块链环境。

可插拔,可扩展

Fabri 当中的 CA,数据库,共识算法等,都是可以插拔的。另外,Farbric的 Chaincode 通过docker实现。

Chaincode是什么呢?

这又要说回到共识机制,共识机制就是所有参与者对每个合约的确认过程。举个简单的例子,你转账给我,转100块钱。你付款,我收款确认。你转账,我确认,这些信息被记录下来记得账本上。这就是共识机制。

代码怎么实现这个动作呢?

你转账的动作,我确认的动作,都是在chaincode实现。类似于我们定义一个转账的接口,你实现付款的代码,我实现确认的代码。这些代码就是chaincode。

兼顾数据共享和隐私保护

隐私一直是大家都比较关心的话题。Facebook 也因为 Cambridge Analytica 被搞得焦头烂额,很多公司都修改了隐私保护规则。

我最近就收到很多网站发的邮件,通知我隐私条例改了,包括facebook,微软等等。欧盟也出了新的数据保护条例,GDPR(General Data Protection Regulation)5月25日生效份生效,对数据保护提出了更高的要求,据说目前欧盟超过一半的企业达不到要求。

区块链的账本是共享的,这是区块链的一大特点,没有这个特点也就不是区块链了。想比特币,以太坊等等,交易数据大家都可以查看,虽然不知道是谁,但是很多人还是很担心,财不外露嘛。

在 Fabric 中,账本不是共享给所有人的。而是通过 channel 隔离数据,虽然大家都在同一个区块链网络里,但是大家不在同一个 channel,也没办法共享账本。通过建立不同的 channel 可以达到按需共享的目的。你业务上需要,才把你加到 channel 里面,你不需要就不把你放到这个 channel 里。

Hyperledger Fabric 架构与核心组件

如下图所示,Fabric由三大模块组成。

  • CA——也就是成员管理;
  • Peer,就是节点,大部分代码都在peer里面实现;
  • Ordering-Service,这是完成共识机制的地方。
Hyperledger Fabric_第3张图片
超级账本架构

orderer

orderer是排序的意思。Order是接收transaction,产生block。并且负责共识机制的policy管理,RWSet。有点类似比特币里面的矿工。

Hyperledger Fabric_第4张图片
Orderer

Peer

Peer 是 Fabric 网络中维护账本状态和 chaincode 的网络节点。
Peer有三种:endorser, committer, submitter


Hyperledger Fabric_第5张图片
image.png

Endorser 负责背书,根据定义好的规则读写数据,读写集,这个读写的数据叫 state db,或者叫 world state db。

背书就是签署,它做的具体事情就是根据约定,往事务里读写数据。可以理解为执行合同里的每个条款。注意这个数据没有写到账本数据。账本是共享的。

Commiter 负责验证 endorsements 和 transaction 结果。Committer 会写共享账本数据。

看下面这个图,左边的是账本,每个 peer 都保存一份。
右边的是 state db,或者叫 world state db。
它记录背书的数据,签名等等。账本数据本身是文件系统。World State DB 可以是 CouchDB 或者 LevelDB。

Hyperledger Fabric_第6张图片
image.png

下面我看看一下完成一个事务的具体工程。
事务就是合约、合同,完成这个合同不同的参与者需要完成不同的任务。

在下面这个图中,右上角这个紫色的框是签署规则。
根据这个规则, E0 E1 E2 三方需要签名。

第一步就是客户端根据规则向这个网络中广播一条消息

Hyperledger Fabric_第7张图片
image.png

E0,E1,E2 收到消息就执行背书

Hyperledger Fabric_第8张图片
image.png

E0, E1, E2 完成背书之后,通知客户端。

Hyperledger Fabric_第9张图片
image.png

客户端收到大家的确认之后就,就向 orderer service 发送请求。

Hyperledger Fabric_第10张图片
image.png

Order service 对这个 transaction 进行排序,完成之后写到 block 中,并且发送给committing peers。这个 block 就是区块链的 block。

Hyperledger Fabric_第11张图片
image.png

Committing peer 调用 validate chaincode 对这个 transaction 进行验证。验证通过,就写入到账本里面。

Hyperledger Fabric_第12张图片
image.png

最后再通知客户端,交易完成。

Hyperledger Fabric_第13张图片
image.png

简单回顾一下

  1. 客户端发请求
  2. endorser 背书
  3. 通知客户端,客户端收到所有的确认之后
  4. 发给order, order排序,并且写进block
  5. committer 验证交易
  6. 交易数据写到账本里面
  7. 通知客户端完成

你可能感兴趣的:(Hyperledger Fabric)