004/HyperLedger-Fabric超级账本

一。Fabric中的节点

1。节点术语

【1】。Orderers:

提供共识服务的网络节点,例如,使用Kafka或PBFT

【2】。Peers:

      维护账本的网络节点,通常在Hyperledger Fabric中担任背书或者记账角色。

【3】。Comitter:

      检查交易的合法性,最终将交易提交到区块链中。

2。Orderers & Peers & Comitter节点关系

Orderers & Peers & Comitter 三者之间关系如下图所示:

                Fabric中交易的处理过程

在整个交易过程中,各个组件的主要功能如下:

【1】。客户端(APP):

客户端应用使用SDK来跟Fabric网络打交道。

首先,客户端从CA获取合法的身份证书来加入网络内的应用通道。

然后,将交易的提案发送给配置文件里指定的背书节点(Endorser节点)

【2】。Endorser节点:

完成对交易提案的背书(目前主要是签名)处理。

检查是否合法,通过则模拟运行交易,对交易导致的状态变化进行背书并返回结果给客户端

【3】。Orderer节点:

仅负责排序。

为网络中所有合法交易进行全局排序,并将一批排序后的交易组合生成区块结构。

Orderer一般不需要跟账本和交易内容直接打交道。

【4】。Committer节点

负责维护区块链和账本结构。

该节点会定期地从Orderer获取排序后的批量交易区块结构,对这些交易进行落盘前的最终检查。

检查通过后执行合法的交易,将结果写入账本,同时构造新的区块。

注意!同一个物理节点可以仅作为Committer角色运行,也可以同时担任Endorser和Committer这两种角色。

【5】。CA:

负责网络中所有证书的管理(分发、撤销等),实现标准的PKI(公共密钥基础)架构。

二。Fabric中的通道

上面只是在一个交易中,从节点的角度,来看交易的处理过程。然而,究竟有多少节点参与背书?多少节点来进行共识排序呢?在Fabric中,引入了通道的概念。

一般情况下,一条区块链网路的子链是按照“1个通道+ 1个账本+ N个成员 ”的基本组成。

通道是两个或多个特定网络成员之间的通信的私有“子网”,用于进行需要数据保密的交易。在Fabric中,建立一个通道相当于建立了一个个子链。

创建通道是为了限制信息传播的范围,是和某一个账本关联的。每个交易都是和唯一的通道关联的。这会明确地定义哪些实体(组织及其成员)会关注这个交易。

1。通道术语

【1】。通道:

Order 服务提供Peer节点供订阅的主题,每个主题是一个通道。

peer可以在订阅多个通道,并且只能访问订阅通道上的交易。关于“订阅-发布主题”,在后面会详细介绍。

【2】。账本:

账本保存Orders提交经节点确认的交易记录。

【3】。成员:

访问和使用账本的网络节点。

【4】。链:

基本上,一个链由1个通道+ 1个账本+ N个成员组成。非链的成员无法访问该链上的交易。链的成员可以由应用程序动态指定。

从关键词“1个通道+ 1个账本+ N个成员”可以知道,要在Fabric区块链网络中,搭建一个子链,需要创建通道,利用通道将成员加入进来,由N个成员维护一个账本,从而实现一个区块链。

注意:

共识服务接收所有链的所有交易,因此保密性仅与peer而不是Orderers相关。

当共识服务由被许可网络中的可信方和监管机构组成时,这样是合理的,也就是说,这些交易作为业务需求仅对他们可见。

另一方面,如果应用程序不希望Orderers知道交易的内容,它必须利用其他技术来隐藏敏感数据,例如哈希散列或加密。

共识服务作为一个信任方存在,如果是由拜占庭容错(BFT)共识协议实现(例如PBFT),可以防止不可信的Orderers破坏账本的一致性和阻碍系统可用性。

然而,现在还没有一种协议可以在有不可信的Orderers存在的情况下,提供多通道设计的同时提供数据保密性。

三。Fabric的拓扑结构

Fabric网络-子链的拓扑关系图

上图解释如下所示:

【1】。三条线,蓝色实线,红色实线,和橙色虚线,分别代表三个通道。

【2】。所有的通道,都连接了Ordering Service说明,共识服务接收所有链的所有交易。这一点,也说明了HyperLedger Fabric不是完全的去中心化,而是多中心化。

【3】。peer1.1等节点,接入了多个通道,说明一个peer节点也可以参与到多个channel中。每个Channel之间是相互隔离,且是并行运行的。这一特性大大提高了系统的吞吐量。

从上图可以知道:

【1】。一个链由1个通道+ 1个账本+ N个成员组成。

【2】。共识是由Ordering Service提供的。

【3】。应用程序指定Peer节点的子集中架设通道。这些peer组成提交到该通道交易的相关者集合,而且只有这些peer可以接收包含相关交易的区块,与其他交易完全隔离。

四。Fabric子链示意图

下图展示了多通道消息订阅与共识服务,账本之间的关系:

如上图所示:

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

原文地址:https://www.cnblogs.com/kaixinyufeng/p/9290682.html

时间: 2024-08-02 09:38:15

004/HyperLedger-Fabric超级账本的相关文章

用Java为Hyperledger Fabric(超级账本)编写区块链智能合约链代码

编写第一个 Java 链代码程序 在上一节中,您已经熟悉了如何构建.运行.部署和调用链代码,但尚未编写任何 Java 代码. 在本节中,将会使用 Eclipse IDE.一个用于 Eclipse 的 Gradle 插件,以及一个名为 ChaincodeTutorial 的 Java 链代码框架项目,编写第一个 Java 链代码程序.您将从我为此教程创建的 GitHub 存储库中获取框架代码,将该代码导入 Eclipse 中,添加代码来让链代码智慧合同按要求生效,然后在 Eclipse IDE 内

hyperledger fabric超级账本java sdk样例e2e代码流程分析

一  checkConfig  Before 1.1  private static final TestConfig testConfig = TestConfig.getConfig(); 这里加载一个配置文件(test路径/src/test/java/org/hyperledger/fabric/sdk/testutils.properties,文件不存在就加载代码中写死的默认配置), 配置文件需要设置peer,orderer,ca,eventhub的地址,组织mspid,组织域名.解析配

超级账本HyperLedger旗下项目介绍

说明 超级账本HyperLedger视频教程汇总:HyperLedger Fabric的视频讲解--"主页"中可领优惠券 超级账本HyperLedger旗下有很多的项目,对这些项目进行了简单的了解. As an open consortium, Hyperledger incubates a range of business blockchain technologies, including distributed ledger frameworks, smart contract

[转帖]Hyperledger Fabric 学习一:简介

Hyperledger Fabric 学习一:简介 https://www.jianshu.com/p/f971858b70f3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 1.Hyperledger简介 Hyperledger:超级账本,是首个面向企业应用场景的分布式账本平台,包括了:IBM.Intel.Cisco.DAH.摩根大通.R3等在内的众多科

HyperLedger Fabric Introduction——区块链超级账本介绍

介绍 HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密.便捷扩展.部署灵活及可插拔等特性.它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态系统中存在的复杂性和高精度性. HyperLedger Fabric与其它的区块链平台解决方案相比,提供了一种独特的扩展便捷和灵活部署的架构.它更多的适用于联盟链形式,即适合企业级之间的区块链联盟方向,建立在可信任的基础上.如果是企业级区块链部署的话,建议可以采用HyperLedger Fabric

区块链组织-超级账本(Hyperledger)的简介

区块链上有国外比较著名的组织比如R3联盟.超级账本(Hyperledger),国内的中国区块链研究联盟(China Blockchain Research Alliance).中国分布式总账基础协议联盟(China Ledger联盟).金融区块链合作联盟等. 超级账本(Hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,目标是让成员共同合作,共建开放平台,满足来自多个不同行业各种用户案例,并简化业务流程.创始人有IBM.Intel.思科等大公司.2

阿里云成为Hyperledger超级账本全球会员,发力区块链生态建设

2018年12月12日在瑞士巴塞尔的2018Hyperledger全球峰会上,阿里云正式加入Hyperledger超级账本项目并成为标准会员.阿里云将会与Hyperledger社区共同推进全球区块链技术和商业生态在多行业领域的建设. Hyperledger超级账本是一个由Linux基金会主持的,旨在推动跨行业区块链技术的开源合作社区,包含了11款商业化区块链和分布式账本技术子项目,如Hyperledger Fabric .Hyperledger Composer.Hyperledger 创立于2

Hyperledger Fabric 账本结构解析

前言 现在很多人都在从事区块链方面的研究,作者也一直在基于Hyperledger Fabric做一些开发工作.为了方便后来人更快的入门,本着"开源"的精神,在本文中向大家讲解一下Hyperledger Fabric账本的结构和原理.作者解析的Fabric的工程版本为v1.0.1,在新版本中可能会有些许偏差. ps:作者默认各位读者已经具备了一定的区块链基本知识,不再做一些基础知识的阐述. Hyperledger Fabric账本的结构 在作者最初了解bitcoin的时候有一个疑问:矿工

在Ubuntu中部署并测试HyperLedger Fabric

最近开始研究区块链,对这个新兴的技术有了基本概念上的了解,所以打算基于一个开源项目做做实验.如果是做数字货币,那么比特币的源代码是最好的了,不过这算是区块链1.0吧,已经有很多改进的竞争币和山寨币出来了,所以打算对区块链2.0,也就是智能合约入手. 智能合约比较成功的就是以太坊了.以太坊主要是公有链,其实对企业应用来说并不是特别合适,而且本身并没有权限控制功能,面向企业的,主要还是超级账本HyperLedger的Fabric和刚刚开源出来的R3的Corda.关于这些项目的应用场景和区别,我觉得这