提供共识服务的网络节点,例如,使用Kafka或PBFT网络
维护帐本的网络节点,一般在Hyperledger Fabric中担任背书或者记帐角色。架构
检查交易的合法性,最终将交易提交到区块链中。区块链
Orderers & Peers & Comitter 三者之间关系以下图所示:加密
Fabric中交易的处理过程spa
在整个交易过程当中,各个组件的主要功能以下:设计
客户端应用使用SDK来跟Fabric网络打交道。日志
首先,客户端从CA获取合法的身份证书来加入网络内的应用通道。blog
而后,将交易的提案发送给配置文件里指定的背书节点(Endorser节点)排序
完成对交易提案的背书(目前主要是签名)处理。kafka
检查是否合法,经过则模拟运行交易,对交易致使的状态变化进行背书并返回结果给客户端
仅负责排序。
为网络中全部合法交易进行全局排序,并将一批排序后的交易组合生成区块结构。
Orderer通常不须要跟帐本和交易内容直接打交道。
负责维护区块链和帐本结构。
该节点会按期地从Orderer获取排序后的批量交易区块结构,对这些交易进行落盘前的最终检查。
检查经过后执行合法的交易,将结果写入帐本,同时构造新的区块。
注意!同一个物理节点能够仅做为Committer角色运行,也能够同时担任Endorser和Committer这两种角色。
负责网络中全部证书的管理(分发、撤销等),实现标准的PKI(公共密钥基础)架构。
上面只是在一个交易中,从节点的角度,来看交易的处理过程。然而,究竟有多少节点参与背书?多少节点来进行共识排序呢?在Fabric中,引入了通道的概念。
通常状况下,一条区块链网路的子链是按照“1个通道+ 1个帐本+ N个成员 ”的基本组成。
通道是两个或多个特定网络成员之间的通讯的私有“子网”,用于进行须要数据保密的交易。在Fabric中,创建一个通道至关于创建了一个个子链。
建立通道是为了限制信息传播的范围,是和某一个帐本关联的。每一个交易都是和惟一的通道关联的。这会明确地定义哪些实体(组织及其成员)会关注这个交易。
Order 服务提供Peer节点供订阅的主题,每一个主题是一个通道。
peer能够在订阅多个通道,而且只能访问订阅通道上的交易。关于“订阅-发布主题”,在后面会详细介绍。
帐本保存Orders提交经节点确认的交易记录。
访问和使用帐本的网络节点。
基本上,一个链由1个通道+ 1个帐本+ N个成员组成。非链的成员没法访问该链上的交易。链的成员能够由应用程序动态指定。
从关键词“1个通道+ 1个帐本+ N个成员”能够知道,要在Fabric区块链网络中,搭建一个子链,须要建立通道,利用通道将成员加入进来,由N个成员维护一个帐本,从而实现一个区块链。
注意:
共识服务接收全部链的全部交易,所以保密性仅与peer而不是Orderers相关。
当共识服务由被许可网络中的可信方和监管机构组成时,这样是合理的,也就是说,这些交易做为业务需求仅对他们可见。
另外一方面,若是应用程序不但愿Orderers知道交易的内容,它必须利用其余技术来隐藏敏感数据,例如哈希散列或加密。
共识服务做为一个信任方存在,若是是由拜占庭容错(BFT)共识协议实现(例如PBFT),能够防止不可信的Orderers破坏帐本的一致性和阻碍系统可用性。
然而,如今尚未一种协议能够在有不可信的Orderers存在的状况下,提供多通道设计的同时提供数据保密性。
Fabric网络-子链的拓扑关系图
上图解释以下所示:
【1】。三条线,蓝色实线,红色实线,和橙色虚线,分别表明三个通道。
【2】。全部的通道,都链接了Ordering Service说明,共识服务接收全部链的全部交易。这一点,也说明了HyperLedger Fabric不是彻底的去中心化,而是多中心化。
【3】。peer1.1等节点,接入了多个通道,说明一个peer节点也能够参与到多个channel中。每一个Channel之间是相互隔离,且是并行运行的。这一特性大大提升了系统的吞吐量。
从上图能够知道:
【1】。一个链由1个通道+ 1个帐本+ N个成员组成。
【2】。共识是由Ordering Service提供的。
【3】。应用程序指定Peer节点的子集中架设通道。这些peer组成提交到该通道交易的相关者集合,并且只有这些peer能够接收包含相关交易的区块,与其余交易彻底隔离。
下图展现了多通道消息订阅与共识服务,帐本之间的关系:
如上图所示:
peer 1,2和N订阅红色通道,并共同维护红色帐本;
peer 1和N订阅蓝色通道并维护蓝色帐本;
相似地,peer 2和peer N在黑色通道上并维护黑色帐本。
在这个例子中,peer N在订阅了全部通道,咱们看到每一个通道都有一个相关的帐本。
通常来讲,咱们称不涉及全部peer的帐本为子帐本,而涉及全部peer的帐本另外一种是系统帐本,即全帐本。
在这里,咱们理解了Fabric中的一个重要的概念,通道。以及一种重要的关系,通道和Peer节点的关系。
Hyperledger Fabric架构使用具备保证的发布-订阅模式消息传递通道(如Kafka中的主题分区),这种发布-订阅模式将共识服务与交易日志(帐本)进行了有效的分离。
共识服务由称为Orderers的网络节点提供,而且帐本由Peer节点管理。
从节点的角度来看,每一个Peer节点链接到共识服务的一个或多个通道,就像发布-订阅通讯系统中的客户端同样。
在通道上广播的交易按共识的顺序排列(例如PBFT、kafka),订阅通道的Peer节点接收到加密的区块。
每一个peer节点验证区块并将其提交到帐本,而后向应用程序提供其余使用帐本的服务。
从通道的节点来看,通道在众多的节点中,选择N个节点,加入到通道中,共同维护帐本。
以实现“1个通道+ 1个帐本+ N个成员”为基本要素的子链!
参考网址:https://zhuanlan.zhihu.com/p/35349072