HyperLedger Fabric

学习IBM关于Hyperledger Fabric的开源技术微讲堂视频总结,视频链接:https://developer.ibm.com/cn/os-academy-hyperledger-fabric/

Hyperledger (超级账本)是 Linux 基金会旗下的区块链开发平台项目,致力于发展跨行业的商用区块链平台技术 。Hyperledger旗下由面向不同场景的子项目构成:包括Fabric、Sawtooth、Iroha、BlockChain Explorer、Cello、indy、Composer、Burrow等8大顶级项目。其中的Hyperledger Fabric 子项目是是一个带有准入机制的企业级联盟链项目,它的前身是IBM贡献的OpenBlockchain。该项目的目标是实现一个通用的许可区块链(Permissioned Chain)的底层基础框架,并克服了比特币等公有链项目的缺陷,如吞吐量低、交易公开无隐私等问题,使得用户能够方便地开发商业应用。

1、fabric网络架构

Fabric网络架构

在fabric中,主要有以下几种节点:

1)客户端或者应用程序(Client Application)

由最终用户操作的,它必须连接到某一个节点或者排序服务节点上与区块链网络进行通信 。

2)Peer 节点

在区块链网络中,所有的节点都是记账节点(Committer),负责把一笔交易写入账本,它会在本地存储这个数据库账本(Ledger)。 在这些记账节点中,部分节点会执行客户端提交的交易提案并对执行结果进行签名背书,充当背书节点(Endorser)的角色。背书节点是动态的角色,是与具体链码(Chaincode)绑定的 。

3)排序服务节点(Ordering-Service)

排序服务节点接收包含背书签名的交易,对未打包的交易进行排序生成区块,然后把这些区块广播给各个组织的主节点。

2、fabric的交易流程**

Fabric交易流程

假设现在A要给B转账10块钱:

1)Propose:这一步是client把一个交易,也就是一个proposal发送到endorsing peer,需要强调在fabric中,每一笔交易都是通过链码也就是智能合约发起的,
2)Execute:endorsing peer 接收到交易的提案后,会把这个proposal放到智能合约里边执行,执行的时候会看你这笔钱是否能转,余额是否够等一些合约的业务逻辑判断,执行出来的结果是个读写集,什么是读写集呢,还是刚刚说的假设A给B转账10块钱,那么在发送方,读集就是发送方原本的账户余额,即<key=balance,value=100,version=0>,写集就是把100改成90是<key=balance,value=90,version=1>,也就是在写之后会把version加1;在接收方,读集就是<key=balance,value=100,version=0>,写集是<key=balance,value=110,version=1>。这个阶段只是个仿真,并不会修改账本。发给哪个背书节点是根据背书策略来的。
3)Response:之后背书节点就会对读写集进行背书,也就是加密签名,背书之后就会把背书后的结果返回给client端。Client端收集到这些签名的结果后会把这些结果发送到orderer节点,
4)Order Transaction:orderer节点会把来自各个client端的交易进行全排序,然后把这些交易打包成块,这里它只负责排序,并不会打开这些交易查看验证交易的内容,
5)Deliver:排序节点把块打包好后就会分发给记账节点,
6)Validate:记账节点收到这些块后就会把这些块打开,再把里边的交易打开,验证这些交易,验证的就是刚刚背书节点的背书,以及拿到的这些读写集是否依据一定的策略收集到了足够的背书,然后会去验证读写集的版本号,刚刚说读集的version是0,写集的version是1 ,记账peer会去验证我现在看到的version状态是否是0,是0,那说明这个version没有更新过,那就这笔交易可以写入账本,也就是这笔交易验证通过了。
7)Notify:然后这些peer会通知client端,你的这笔交易是否成功

3、Fabric账本

Fabric账本

Fabric账本由区块链和状态数据库两部分组成:

Blockchain – 是一组不可更改的有序的区块,记录着全部交易的日志。
在区块链中,一般初始区块存的是一些配置信息,之后就是历史交易信息了。在区块链中,一个区块分成三部分,区块头,区块内容,和区块的metadata;Metadata主要存的就是这个区块的写入时间、写入的人以及签名;区块头存到就是当前区块的区块ID,所有交易的hash值,上一个区块的区块hash值等

World state – 记录了账本中所有键值对的当前值,相当于对blockchain做了索引。
因为背书节点执行交易的时候需要读取账本的当前状态,如果去遍历整个区块链中相关的交易的话,效率非常低,因此,fabric维护了一个这样的状态数据库,通过这个状态数据库可以快速定位和访问某个键值的方法从状态数据库可以迅速获取键值的最新状态数据值。

World state存储的格式是上面我们提到的这种读写集,也就是<key value version>格式,如果修改了的话version就会加1。另外,因为状态数据库就是对blockchain的一个索引,所以当状态数据库出现故障的时候,可以通过遍历blockchain重新生成。

4、多链多通道的fabric网络

image.png

因为fabric是一个面向企业级的区块链平台,所以为了保护数据隐私,fabric使用channel对数据进行隔离。在fabric启动时就有一个内置的channel,是系统channel,对用户和开发人员是不可见的。创建应用channel是对系统channel发起交易,这个交易里包含了你要创建的channel的一些属性,当这个交易共识之后,就会创建一个新的channel。

在fabric中,部署智能合约,是在每个channel里部署智能合约,也就是上面讲到的交易流程是针对一个channel来说的。一个channel可以部署多个智能合约,在同一个channel里的智能合约可以互相调用,不同的也可以互相调用,但是跨channel暂时只是可以读数据但是不可以写数据。

在上图中有4个organization,每个organization都要安装自己的CA,organization 4提供的是排序服务,然后organization 1提供的节点是P1,organization2提供的节点是P2,organization3提供的节点是p3,P1和P2节点在一个channel里,在这个channel里安装的chaincode是cc1,安装的智能合约时S5,他俩维护着同一套账本L1;p2和p3在一个channel里,在这个channel里安装的chaincode是cc2,这两个组织维护着同一套账本L1。可以看到P2节点安装在两个通道里,维护着两套账本;组织A1 A2可以访问channel c1的数据,A2和A3可以访问channel C2的数据。

三、自己的认识和体会

1、这个fabric是面向企业级应用的区块链平台,是个多链多通道的架构,我觉得这个架构特别好,因为他把整个区块链大网络利用通道划分成了不同的子网,每个子网只需要维护子网成员的交易日志就可以;

2、fabric每个通道内的账本虽然对通道外的组织是不可见的,但是对通道内的成员是公开的,所以在Fabric通道内部的数据不具有隐私性。

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

推荐阅读更多精彩内容