建议和反馈

请填写你的反馈内容

Hyperledger Fabric 简介、特性、架构与核心组件

2020-03-24 ·1336次阅读 ·读完需要10分钟

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

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

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

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

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

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

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

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

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

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

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

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

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

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

简单回顾一下

  1. 客户端发请求

  2. endorser 背书

  3. 通知客户端,客户端收到所有的确认之后

  4. 发给 order, order 排序,并且写进 block

  5. committer 验证交易

  6. 交易数据写到账本里面

  7. 通知客户端完成


评论(0)问答(0)
请先登录或注册

请先登陆或注册

相关推荐

快三怎样判断出龙+87033586

海哥蔻 87033586网上有这么一个话题就是说不靠父母,现在二十多岁的年轻人是怎么实现买房买车的?我也常常陷入深思,每个月的薪水除了吃穿用度,还要交房租、水电以及随朋友结婚生娃的份子,真正能够存下来......
鱼湖妖滕 · 2020-04-07
69阅读 · 0赞赏 · 0问答

讲解江苏快3大小单双快速回血技巧+87033586

海哥老师邱 87033586一个人,越是有福气,越是善良;一个人,越是喜欢做善事,越是有福气。  生活中,一个人的善事,做的越多越有福气,坑人害人的事,不做更有福气。  其实一个人的福气,都是从做人做......
甲人说两句 · 2020-04-06
96阅读 · 0赞赏 · 0问答

一分快三和值计算数学公式-赢利技巧------思考人生 感悟如棋

导师87033586人生如棋,我为卒,虽能勇往直前,但结局依旧是左右徘徊;人生如棋,我为车,虽能驰骋疆场,但仍跳不出这方寸之地;人生如棋,我为将,虽能指挥千军,但还不过是那笼中之鸟!人生如棋,落子无悔......
87033586 · 2020-04-05
224阅读 · 0赞赏 · 0问答

巧妙提高《幸运飞艇预测计划软件》你瞬间回血

幸运飞艇公式规律【一对一单带导师Q+203129536备用Q+204826560】【长久盈利轻松上岸】胜率95%,已助上千人成功翻盘,欢迎增加,沟通交流!   我们总是在寻找游戏的......
纯情女孩陈七七@ · 2020-04-04
119阅读 · 0赞赏 · 0问答

神之起解析《一分快三大小单双玩法技巧》口诀

大发导师《9718-2892》大发要怎么玩,不管是自己玩的还是跟群计划或老师,刚刚开始接触的时候都有遇到这个问题,都是从不会到会的,我就来说说我是怎么玩的吧!可以互相探讨交流,亲身经历的经验分享给大家......
bgone · 2020-04-04
110阅读 · 0赞赏 · 0问答

神之起分析《一分快三单双玩法技巧》稳赢方法

大发导师《9718-2892》大发要怎么玩,不管是自己玩的还是跟群计划或老师,刚刚开始接触的时候都有遇到这个问题,都是从不会到会的,我就来说说我是怎么玩的吧!可以互相探讨交流,亲身经历的经验分享给大家......
oneyute · 2020-04-04
119阅读 · 0赞赏 · 0问答

Ethan

2467

LK币

13

粉丝

32

笔记

感谢"Ethan"

这篇精彩的笔记,目前已经帮助

  • 0
  • 1
  • 3
  • 3
  • 6
喜欢0
链客社群 加入

微博进入

商务合作>

广告投放>

公司名称:北京链客行科技有限公司

联系方式:010-67707199

ICP备案号:京ICP备18032136号

Copyright:链客区块链技术问答社区 版权所有

感谢您的提问,问题被社区永久收入以便新人查看。一定要记得采纳最佳答案哦!加油!

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!