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家白金会员。


超级账本白金会员

开源

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

支持多语言

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


超级账本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,这是完成共识机制的地方。
超级账本架构

orderer

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

Orderer

Peer

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


image.png

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

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

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

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

image.png

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

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

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

简单回顾一下

  1. 客户端发请求
  2. endorser 背书
  3. 通知客户端,客户端收到所有的确认之后
  4. 发给order, order排序,并且写进block
  5. committer 验证交易
  6. 交易数据写到账本里面
  7. 通知客户端完成
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容