超级账本 Fabric 基本架构

导语:本文主要介绍超级账本 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模型的数据。

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

推荐阅读更多精彩内容