您好、欢迎来到现金彩票网!
当前位置:热购彩票app下载 > 公钥构架 >

HYPERLEDGER FABRIC架构详解 (好文!!!!)

发布时间:2019-07-26 19:20 来源:未知 编辑:admin

  hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量。本文中我们依次讨论:区块链的共通特性、fabric核心概念、fabric的交易执行流程。。

  区块链核心概念是分布式帐本,就像下面的图1所示,同样的帐本(全量的交易数据,详见下节)在任意一台节点(不包括客户端)上都有。所以,其优点是数据很难造假,造假后也可以通过追溯记录来追究法律责任。而缺点就是极大的浪费,传统服务每份数据都尽量少存几份,即使存了三份拷贝都已经考虑到诸多异常,并使服务可用性达到N个9了。而区块链这种特性,同时造成的另一个问题是帐本不能太大,至少不能超过区块链网络中最小结点的存储以及处理能力。所以,这制约了总交易数据(下文为方便概念介绍,统称为帐本ledger)的条数,进而也影响了能写入区块链的单条交易数据的大小。

  什么是区块链呢?我很喜欢《区块链技术进阶与实战》一书中对它的定义:区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构。如果觉得有点抽象,那么我们再来看看下面的图2。

  图2中就是账本,它由多个区块构成了一个有时序的链表,而每个区块里含有多条交易trasaction(缩写为tx)构成的链表。图2下方有一个WorldState世界状态,这其实是为了提升性能用的。比如,key1共交易了10000次,为了获取它的当前状态值,需要正向执行这10000次交易,这就得不偿失了。如果这1万次交易里,每次新交易执行完,都同步更新一个数据库(在fabric里用的是levelDB),这样查询当前状态时,只需要查询该数据库即可,如图3所示。

  图3中,区块链帐本是在FileSystem文件系统中保存的,而Level DB存放世界状态。

  区块链的发展过程中,一般1.0时代就是数字货币时代,代表是比特币,而2.0时代就是智能合约(现在是3.0时代,各种联盟链即为代表)。

  智能合约是运行在区块链上的模块化、可重用的自动执行脚本,有了它我们就可以完成复杂的业务逻辑,例如同一个区块链上有多份合约,而每份合约可以约定不同的参与者(企业或者相关方)。也可以指定每份合约里每个子命令做一批特定的事,大家可以把它想象成关系数据库里的事务。如图4所示,我们可以在合约里指定允许哪些企业的节点可以参与到交易流程中来(在fabric里这叫共识策略)。

  在fabric中,智能合约叫做chaincode,它有6个状态,如下所示:

  实际上智能合约就是一段代码,fabric官方认可的是GO语言。首先我们需要把合约代码上传到区块链上,这一步的状态就叫Install。

  接着,需要做初始化操作。比如,现在的数据是存放在mysql中的,那么上线时需要用Instantiate把数据迁移至链上,这也算初始化。初始化后,chaincode就进入invocable可调用状态了。

  通用我们可以通过CLI命令行或者程序里用SDK调用合约(v1.1前还有RestApi调用,现已放弃)。

  联盟链由于跨多家企业、多个地区甚至国家,很难使得合约保持一致的版本,因此,每个合约都有版本号。而版本升级时,就是Upgrade状态。

  智能合约可以在供应链等较复杂的业务场景下起到很大的作用,如下面的图5所示:

  既然区块链是一个去中心化的分布式系统,那么自然只能通过投票来决定一致性了:少数服从多数。当然,多少算多数呢?不同的共识算法下,结果并不相同。比如paxos算法(参见笔者的《paxos算法如何容错的–讲述五虎将的实践》)就是超过一半,而PBFT则需要三分之二以上。

  这里有一个拜占庭将军问题需要注意,如何理解该问题可以参见这份翻译过的The_Part-Time_Parliament(Paxos算法中文翻译)文档。简言之,就是投票的拜占庭将军(服务器)们有2种不可靠的形式。第一是迟钝(数据包延迟)、失忆(数据包丢失以及数据包重发)、失踪(服务器宕机)等不含背叛的行为,第二则是有将军是间谍(服务器被攻破)。如paxos这样的算法属于第一种,Fault-tolerance,它不能容忍服务器上有恶意代码;而如PBFT(Practical Byzantine Fault Tolerance)这样的算法是第二类,Byzantine-Fault-tolerance,它能够容忍一定数量的拜占庭将军节点存在,如PBFT、SBFT、RBFT算法等。

  第二类Byzantine-Fault-tolerance共识算法虽然看上去很美,但并不成熟,特别是性能低下,比如PBFT是一个多项式复杂度的算法O(N^2),节点过多时(大于100)性能急骤下降。第一类通常是O(N)复杂度,在某些场景下使用效果还不错,比如fabric v1.1的kafka共识机制就是这样的算法,下文我们会详述。

  像比特币、以太坊等采用的共识算法又有所不同,例如比特币的POW工作量证明算法,它定义一小时内(通过调整运算难度实现,比如调整近似程度)有一个lucky node节点,该节点是通过证明自身的努力(hash值逆解)而幸运选出,选出后它就可以为这段时间的交易做决定(似乎挺像总统选举^_^)。详情参见我这篇文章:《区块链技术学习笔记》

  区块链通过非对称加密技术实现身份验证与数据加密。其实就是我们日常在用的SSL技术。

  为了方便理解,我们需要先介绍PKI(Public Key Infrastructure),它是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。有一个CA(Certificate Authority)权威机构负责向用户(包括服务提供者与使用者)提供数字证书,包括公钥与私钥,同时CA机构还需要提供一个CRL(Certificate Revocation List)证书吊销列表,如下面的图6所示。

  这样,区块链可以通过PKI体系实现安全认证。PKI有三个关键点,我们下面详述。

  CA颁发了两个证书:公钥与私钥,其中,私钥仅服务提供者保存,而公钥则可被所有人(服务使用者)保存。

  所谓非对称加密,就是公钥加密的消息仅私钥可以解密;同理,私钥加密的消息,仅公钥可以解密。对应于前者,可以实现客户端访问服务器时加密消息,例如访问安全级别高的页面时提交的表单信息都需要用公钥加密,确保只有服务器才能解密网络报文。对应于后者,则可实现签名功能,如下面的图8所示。

  图8中Mary Morris用私钥对一段信息的内容(若内容过大则可先HASH后获得小点的字符串)加密后,生成签名附加在消息中。接收者可从CA机构获取到公钥,用公钥解密签名后,再与内容比对,以确定消息是否来自MaryMorris及内容是否被篡改。对于文件来说也是一样,小文件直接加密,大文件先生成hash再对hash加密,如下面的图9所示。

  CA证书分为两类:RCA(Root CA)根证书以及ICA(Intermediate CA)中间证书。这些证书由RCA开始构成一个证书信任链,如下面的图10所示。

  有许多CA证书权威机构,各自有其RCA。如果RCA得不到信任,那么其下的ICA也无法认证通过。

  在Fabric里,允许不同的企业使用不同的RCA,也可以使用相同的RCA和不同的ICA。这与下文中的MSP密切相关。

  我们来总结下区块链,它主要是为了解决社会上的信任问题而存在的,为此,它付出了沉重的性能、可用性代价。它怎么做到的呢?通过4点实现:1、数据到处存放;2、操作记录不可更改;3、传输数据可信;4、业务脚本约束。

  那么,这个信任问题的解决,带来了2个非功能性的约束:数据一致性和可用性。其中可用性包括两点:1、交易在可接受的时间内达成。比如比特币的分叉就会造成严重问题。2、吞吐量达标。而比特币每秒只能有7次交易,这显然太低了。

  hyperledger fabric符合上面说过的区块链的所有特性。我们必须先了解它的一些概念,才能进一步理解其架构设计。由于英文资料居多,所以这些概念我都以英文描述为准:

  chaincode:智能合约,上文已提到。每个chaincode可提供多个不同的调用命令。

  world state:对同一个key的多次交易形成的最终value,就是世界状态。

  endorse:背书。金融上的意义为:指持票人为将票据权利转让给他人或者将一定的票据权利授予他人行使,而在票据背面或者粘单上记载有关事项并签章的行为。通常我们引申为对某个事情负责。在我们的共识机制的投票环节里,背书意味着参与投票。

  endorsement policy:背书策略。由智能合约chaincode选择哪些peer节点参与到背书环节来。

  peer:存放区块链数据的结点,同时还有endorse和commit功能。

  channel:私有的子网络,事实上是为了隔离不同的应用,一个channel可含有一批chaincode。

  PKI:Public Key Infrastructure,一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。

  MSP:Membership Service Provider,联盟链成员的证书管理,它定义了哪些RCA以及ICA在链里是可信任的,包括定义了channel上的合作者。

  fabric联盟链的开发人员主要分为三类:底层是系统运维,负责系统的部署与维护;其次是组织管理人员,负责证书、MSP权限管理、共识机制等;最后是业务开发人员,他们负责编写chaincode、创建维护channel、执行transaction交易等,如下面的图11所示。

  fabric大致分为底层的网络层、权限管理模块、区块链应用模块,通过SDK和CLI对应用开发者提供服务,如下面的图12所示。

  我们的开发流程主要包括写智能合约,以及通过SDK调用智能合约,及订阅各类事件,如图13所示。

  每个管理协作企业的ORG组织都可以拥有自己的MSP。如下图14所示,组织ORG1拥有的MSP叫ORG1.MSP,而组织ORG2业务复杂,所以维护了3个MSP。

  MSP出现在两个地方:在channel上有一个全局的MSP,而每个peer、orderer、client等角色上都维护有本地的局部MSP,如图15所示。

  本地MSP只保存有Global MSP上的子集,内容保存在本地文件系统上,而全局MSP可在逻辑上认为是配置在系统上的,它实际也在每个参与者上保存一份拷贝,但会维持一致性。

  MSP也分级,如图16中所示,底层的network MSP负责网络层的准入,其MSP由ORG1拥有,而上面的某个channel的MSP则由ORG1和ORG2共同管理。

  channel是一个逻辑概念,可以通过MSP隔离全网不同组织的参与者,如下图所示:

  当有多方参与者时,例如4个org组织、8个peer结点时,其中channel连接了P1、P3、P5、P7、P8这五个节点,其他3个节点加入了其他channel,其部署图如下所示:

  加入MSP来管理身份时,如P1和P2由ORG1.MSP管理,而P3和P4的证书则由ORG2.MSP管理,他们共同使用一个channel,则如下图所示:

  去中心化的设计,必然需要通过投票(多数大于少数)来维持数据一致性,而任何投票都必须经历以下三个过程:

  而这三步fabric当然也少不了,当然它的称法就有所不同,其对应的三步如下:

  我们看一个具体的例子,若channel上有三个peer背书者,client提交流程如下图所示:

  O1在一个channel上会收到许多T交易,它会将T排序,在达到block的最大大小(一般应配1M以下,否则性能下降严重,kafka擅长处理小点的消息)或者达到超时时间后,打成区块P2。

  O1将含有多条交易T打成区块的B2发往各peer节点,而P1和P2将B2加入各自的L账本中。

  本文偏重于概念的解释,由于篇幅所限,未涉及fabric的系统搭建(请参考笔者的这篇文章《区块链开源实现fabric快速部署及CLI体验》),也未描述共识算法在异常情况下如何维持一致性,这留待下一篇文章解决。fabric的许多思想是值得我们进一步研究的,其优秀的实现可以帮助我们通过fabric获得区块链在信任创新上的思路。

  hyperledgerfabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量。本文中我们依次讨论:区块链的...博文来自:陶辉:聚焦分布式系统的程序员

  由Linux基金会牵头的Hyperledger项目是目前应用范围最广的面向企业应用场景的开源分布式账本之一。作为Hyperledger项目中的顶级项目,Fabric项目在2019年4月10日发布了2....博文来自:大壮的博客

  包含分布式账本和智能合约。什么是分布式账本一个只允许记录或者交易日志追加的系统。Blockchain(区块链)可以用来记录承诺、交易或者简单的我们不想让它消失的条目。在给定网络的所有节点中,它都存在备...博文来自:maixia24的专栏

  HyperledgerFabric概述综述HyperledgerFabric是一个模块化的分布式账本解决方案支撑平台,提供高度的保密性、弹性、灵活性与可扩展性。它的目的是支持不同组件的可插入实现,并适...博文来自:wxb880114的专栏

  一、架构图该图出自区块链技术指南一书,架构解释也主要出自于本书,有兴趣的同学可以去自行找一找资源。如图所示:fabric的底层主要由四种服务构成,分别是:身份服务、策略服务、区块链服务、智能合约服务。...博文来自:齐天大圣数据候的博客

  fabric总体架构图fabric的总体架构分为网络层、核心层、服务层以及接口层。网络层由多个分布式节点组成。这些节点构成了一个p2p的网络,采用Gossip协议进行节点间互相发现和数据传输,并采用g...博文来自:的博客

  一、总体架构这个架构参考关注在三个类别中:会员(Membership),区块链(Blockchan)和链码(chaincode)。这些类别是逻辑结构,而不是物理上的把不同的组件分割到独立的进程,地址空...博文来自:的博客

  HyperledgerFabric1.0架构及原理 如果说以比特币为代表的货币区块链技术为1.0,以以太坊为代表的合同区块链技术为2.0,那么实现了完备的权限控制和安全保障的Hyperledger项目...博文来自:xcjing的博客

  刚从IBM实习回来,现在整理一下在公司做的云平台和区块链相关的项目,虽然理解不深,但是知道总比不知道好。这是在公司经常听到的名词Fabric...当时根本不知道这什么玩意,通过这篇文章能有个大概的概念...博文来自:热爱我的热爱

  Hyperledger是被业界非常看到的联盟链的实现,包括IBM、Intel、R3、各个大型商业银行等都参与其中,带给我们关于区块链技术与软件工业、金融、保险、物流等领域碰撞结合的想象空间;在这个联盟...博文来自:陈建慧程序人生

  隐私和安全不可更改的交易数据可追责,不可陷害隐私保护:交易匿名、交易不可关联监管和审计支持每个区块包含一系列的事务数据每个事务包含事务发起方的数字签名(TCert-交易证书)每个区块包含所有事务的Ha...博文来自:weixin_34408624的博客

  Hyperledger简介:Hyperledger是一项开源协作,旨在推动跨行业区块链技术的发展。这是一项全球合作,包括银行,金融,物联网,制造,供应链和技术领域的领导者。LinuxFoundatio...博文来自:BINGOs BLOG

  笼统来说,区块链是一个不会改变的交易账本,由一些peer节点组成的分布式网络维护。基于一些一致性协议确认过的交易,这些节点都会维护一份账本的副本,分组为包含哈希的块,这些哈希散列将每个区块与之前的...博文来自:fengshenju2018的专栏

  不同的区块链智能合约和区块链技术现在风靡一时。越来越多的人出于某种原因试图进入这个神奇的世界。如果你是这项技术的新手并正在寻找基于区块链的开发平台的快速入门,那么本指南非常适合你。我们将重点关注和比较...博文来自:rejames的博客

  什么是智能合约?它有什么特点?就是具有交互能力而且能够在区块链中传递的合约一个由计算机代码控制的以太币账户特点:公开透明、能即时与区块链代币结...博文来自:米斯特尔陆的博客

  背景超级账本(Hyperledger)是linux基金会下的众多项目中的一个。是由IBM、因特尔,还有金融公司,GP摩根以及其他联合机构于2015年提出来的区块链项目,超级账本还包括4个框架项目:Sa...博文来自:wxb880114的专栏

  本文不涉及任何技术开发的内容,仅供你跟同学、同事吹牛B之用。就像很多牛人总爱讲历史典故一样。一、诞生与现状HyperLedger诞生于2015年12月17日,HyperLedger追寻ApacheV2...博文来自:sniperlei的专栏

  介绍Hyperledger Fabric 1.0的体系架构、块链结构、共识机制、智能合约、隐私安全、开发流程及开发中的常见问题与对策;从数据库角度分析联盟链应用于企业级应用时的主要优势和局限。

  深度探索区块链:Hyperledger技术与应用 深度探索区块链:Hyperledger技术与应用

  众所周知上手任何一个新技术,配置环境绝对是最能消磨打击积极性的一步,这次hyperledger是我有史以来爬坑最久,多次面临放弃最后还是坚持下来的一次,总共耗时四天,卸载6次系统,最终成功上岸。首先我...博文来自:niukaoying6674的博客

  一、前言——NEORPC漏洞之争12月1日下午16:34,腾讯湛卢实验室宣布发现NEO的RPC漏洞。官微发文如下:而NEO官方微博,在四个小时之后迅速回应腾讯,回应如下。谁对谁错?公链RPC模块安全情...博文来自:Fly_鹏程万里

  原文地址:如果说以比特币为代表的货币区块链技术为1.0,以以太坊为代表的合同区块链技术为2.0...博文

  比特币、以太坊的成功,推动了区块链行业的飞速发展,从区块链的分类来看,它们都属于公链项目,区块链除了有公链之外、还有私有链和联盟链。公链的完全去中心化是一个美好的未来,但是又和现实存在着很大的冲突,难...博文来自:阿丹的彩蛋

  本第二讲主要是从fabric源代码结构开始着手分析。首先看下整体结构:整个Hyperledger的fabric技术架构部分主要是由以下为三部分组成:fabric-peer:主要起到peer作用,包括e...博文来自:乐扣老师lekkoliu——区块链、量子计算

  背景超级账本(Hyperledger)是linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,加入成员包括:荷兰银行(ABNAMRO)、埃森哲(Accenture)等十几个不同利益...博文来自:The_Reader的博客

  现在区块链概念是炒的火热,而这其中Bitcoin是功不可没的。数字货币这个概念和前几年大火的物联网概念一样都是上个世纪就已经被人提出了,到了现在才火了起来。数字货币在计算机网络刚刚兴起的时候就被人提出...博文来自:阿艾辣悟叩德

  注意:代码路径已更新,可以直接参考 。Hype...博文来自:yeasy的专栏

  在我看来,比特币就是现实中的V字仇杀队,当然现实是更残酷的世界政府,这场博弈关乎着人类文明、政治、社会属性、经济和人权。IBMHyperLeger又叫fabric,你可以把它想象成一个由全社会来共同维...博文

  区块链对于很多人来说,是一个概念性的、未来的事物,经常可以听到区块链有着“分布式、去中心化、可信任、匿名性、信息不可逆”等特点,这些特点看起来相互关联,又有所差异。而以太坊创始人V神近日就在推特上表示...博文来自:John1688888的博客

  目录目录HyperledgerFabric区块链多机部署环境介绍源码编译以及fabric区块链网络部署环境准备编译fabric区块链相关可执行程序编译go相关工具编译fabric基础环境编译区块链服务...博文来自:songbin830的专栏

http://e-ndicus.com/gongyuegoujia/970.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有