一、Hyperledger fabric V1.0 架构

1、逻辑架构:

  

2、区块链网络

  

3、运行时架构

  

二、架构总结

1、架构要点

  分拆Peer的功能,将Blockchain的数据维护和共识服务进行分离,共识服务从Peer节点中完全分离出来,独立为Orderer节点提供共识服务; 基于新的架构,实现多通道(channel)的结构,实现了更为灵活的业务适应性(业务隔离、安全性等方面) 支持更强的配置功能和策略管理功能,进一步增强系统的灵活性和适应性;

2、架构目标

  1、chaincode信任的灵活性:支持多个ordering服务节点,增强共识的容错能力和对抗orderer作恶的能力    
  2、 扩展性: 将endorsement和ordering进行分离,实现多通道(实际是分区)结构,增强系统的扩展性;同时也将chaincode执行、ledger、state维护等非常消耗系统性能的任务与共识任务分离,保证了关键任务(ordering)的可靠执行     
  3、保密性:新架构对于chaincode在数据更新、状态维护等方面提供了新的保密性要求,提高系统的业务、安全方面的能力     
  4、共识服务的模块化:支持可插拔的共识结构,支持多种共识服务的接入和服务实现

3、重要特征【支持多chain和多channel】

多链chain

  所谓的chain(链)实际上是包含Peer节点、账本、ordering通道的逻辑结构,它将参与者与数据(包含chaincode在)进行隔离,满足了不同业务场景下的”不同的人访问不同数据“的基本要求。同时,一个peer节点也可以参与到多个chain中(通过接入多个channel);如下图所示

  

多通道

  通道是有共识服务(ordering)提供的一种通讯机制,类似于消息系统中的发布-订阅(PUB/SUB)中的topic;基于这种发布-订阅关系,将peer和orderer连接在一起,形成一个个具有保密性的通讯链路(虚拟),实现了业务隔离的要求;通道也与账本(ledger)-状态(worldstate)紧密相关;如下图所示:

  

  peer 1,2和N订阅红色通道,并共同维护红色账本; peer 1和N订阅蓝色通道并维护蓝色账本; 类似地,peer 2和peer N在黑色通道上并维护黑色账本。

  在这个例子中,peer N在订阅了所有通道,我们看到每个通道都有一个相关的账本。 一般来说,我们称不涉及所有peer的账本为子账本,另一种是系统账本,即全账本。

  通道和账本的组合是一个虚拟链,因此一个区块链网络可以具有1个共识服务的多个链。 系统通道和全账本构成系统链。 每个区块链网络只有1个系统链。如果交易是公开的,区块链网络可能永远不需要多个链; 所有的交易对所有Peers成员都可见。 然而,在成员间进行私密交易(例如双边合同),单独的链是隔离数据、提供保密的方式。

4、交易(数据)流程说明

  事物

    

  事物处理流程【交易流程】,如下:

  

  1. 应用程序通过SDK发送请求道Peer节点(一个或多个)
  2. peer节点分别执行交易(通过chaincode),但是并不将执行结果提交到本地的账本中(可以认为是模拟执行,交易处于挂起状态),参与背书的peer将执行结果返回给应用程序(其中包括自身对背书结果的签名)
  3. 应用程序 收集背书结果并将结果提交给Ordering服务节点
  4. Ordering服务节点执行共识过程并生成block,通过消息通道发布给Peer节点,由peer节点各自验证交易并提交到本地的ledger中(包括state状态的变化)

  事务流(peer节点内)

  

  上述过程对应的执行序列图如下:

    

5、账本

  总体流程如下图所示:在新的架构中,Peer节点负责维护区块链的账本(ledger)和状态(State),本地的账本称为PeerLedger,其结构如下:

  

  整个区块结构分为文件系统存储的Block结构和数据库维护的State状态,其中state的存储结构是可以替换的,可选的实现包括各种KV数据库(LEVELDB,CouchDB等);

三、整体账本设计详述

  

  

  

四、1.0版本的版本计划

  很明显Febric V0.6与V1.0的架构及流程差异极大,在V0.6下开发的应用很难在V1.0环境下运行,所以我们还是不要费劲折腾V0.6,还是从V1.0开始吧!(官方公布的计划)

参看地址:http://newthink.blog.51cto.com/872263/1897379?utm_source=tuicool&utm_medium=referral

003-主流区块链技术特点及Hyperledger Fabric V1.0版本特点的更多相关文章

  1. 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点

    一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...

  2. 二、主流区块链技术特点及Hyperledger Fabric V0.6版本特点

    一.主流区块链技术特点 二.HyperLedger子项目 三.Hyperledger fabric架构 V0.6逻辑架构: V0.6区块链网络 对应的0.6版本的运行时架构: 0.6版本的架构特点是: ...

  3. 002-主流区块链技术特点及Hyperledger Fabric V0.6版本特点

    一.主流区块链技术特点 二.HyperLedger子项目 三.Hyperledger fabric架构 V0.6逻辑架构: V0.6区块链网络 对应的0.6版本的运行时架构: 0.6版本的架构特点是: ...

  4. Ubuntu下搭建Hyperledger Fabric v1.0环境

      多次尝试才正常启动了Fabric,如遇到各种莫名错误,请参考如下一步步严格安装,特别用户权限需要注意. 一.安装Ubuntu16 虚拟机或双系统,虚拟机有VirtualBox或者VMware,Ub ...

  5. 区块链 Hyperledger Fabric v1.0.0 环境搭建

    前言:最近项目涉及到超级账本,在有些理论知识的基础上,需要整一套环境来. 这是一个特别要注意的事情,笔者之前按照网络上推荐,大部分都是推荐ubuntu系统的,于是下载Ubuntu系统(16.04.5和 ...

  6. 安装hyperledger fabric V1.0.1

      安装文档位置: https://github.com/hyperledger/fabric   fabric代码托管地址 https://hyperledger-fabric.readthedoc ...

  7. 安装hyperledger fabric V1.0.0-beta

      安装文档位置: https://github.com/hyperledger/fabric   fabric代码托管地址 https://hyperledger-fabric.readthedoc ...

  8. HyperLedger Fabric 1.4 区块链技术定义(2.1)

    区块链技术指使用点对点传输.共识机制.加密算法等技术,保证分布式数据库区块写入链中数据的一致性,达到去中心化和不可篡改的目的.       区块链就是一种特殊的分布式数据库,使用现有的各种成熟的技术, ...

  9. HyperLedger Fabric 1.4 区块链技术发展(1.3)

    区块链技术发展经历区块链1.0(数字货币).区块链2.0(数字资产与智能合约)和区块链3.0(各种行业分布式应用落地)三个阶段.区块链在应用上分为公有链(PublicBlockChains).联盟链( ...

随机推荐

  1. iOS 转盘抽奖游戏(原生)

    转盘抽奖游戏在一般的app中都会有,应该算是一种吸引用户的一种手段.在项目中集成转盘抽奖游戏,大都采用h5的方式来实现,但是由于项目需求,需要在app中使用原生来实现转盘抽奖.实现原理也很简单,中间的 ...

  2. iOS开发之-收集的不常用却实用的小方法和技巧

    原文链接:http://blog.5ibc.net/p/90386.html 1.颜色转变成图片 - (UIImage *)createImageWithColor:(UIColor *)color ...

  3. oracle 存储过程中使用date 时、分、秒丢失

    今天有一开发兄弟找我.说出现一奇怪现象,在存储过程中赋date类型的值,时.分.秒都丢失了,以下来做个试验: SQL> drop table test purge; SQL> create ...

  4. 在java中,List是个接口,那实现List接口的类有哪些,有什么区别?

    在java中,List是个接口,那实现List接口的类有哪些,有什么区别? 解答: ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引 ...

  5. JQuery基本选择器和基本动画方法总结

    刚开始接触JQuery是在大三的时候,那时候先学的Javascript,然后跳跃到JQuery,就一个字,爽.但因为之前用的不是太多,所以很多都忘了,直接导致的后果就是之前在一家公司面试,面试官问我要 ...

  6. java io类图(转)

    转载:http://blog.csdn.net/fenglian521/article/details/1324010 Java IO 的类图 拿出来方便大家.Java IO表面上看起来比较乱,有了类 ...

  7. python bottle学习(一)快速入门

    from bottle import (run, route, get, post, put, delete) # bottle中添加路由的两种方法 # 第一种,使用route装饰器,需要指定meth ...

  8. 第一次使用Xamarin就上手 - 安裝Xamarin

    http://xamarintech.blogspot.tw/2013/06/xamarin-xamarin-step-by-step-part1.html http://xamarintech.bl ...

  9. Delphi 中窗口文件与无窗口Pas文件的区别 (MTM)

    implementation {$R *.dfm}  ---- 带窗口的 dfm -- 一般的 windows 窗口 {$R *.fmx}  ---- 带窗口的 fmx -- 一般的 FireMonk ...

  10. JavaScript实践-简单的贪吃蛇小游戏

    实现逻辑: //获取Html中的格子(行,列) //建立数组存储所有格子(x,y) //建立数组用于存储蛇身(x,y) //生成随机坐标(x,y)的函数 //随机创建蛇身并存储到蛇身数组 //创建食物 ...