1.Hyperledger Fabric架构介绍

news2024/11/24 18:51:10

(1)Hyperledger定义:

Hyperledger是一个开放源代码的区块链项目合作组织,旨在推动跨行业的企业级区块链解决方案的发展。该项目由Linux基金会于2015年发起,致力于建立一个可靠、安全和可扩展的区块链框架和工具集。Hyperledger提供了一个集合,其中包含了多个不同的区块链框架、工具和库,用于构建和管理私有、许可的区块链网络。

(2)Hyperledger项目:

Hyperledger项目是一个包含多个区块链框架和工具的合作组织,旨在推动企业级区块链的发展和应用,并提供丰富的功能和灵活性,以满足不同行业的需求。 

Hyperledger项目的核心是开发各种区块链框架和工具,以支持不同的应用场景和需求。

Hyperledger项目的目标是为各行业提供一个通用的、可扩展的区块链平台,以满足不同的商业需求。它致力于解决企业级区块链应用所面临的隐私性、可扩展性、性能和安全性等挑战。

(3)Hyperledger项目之一:Hyperledger Fabric介绍

3.1 Hyperledger Fabric 简介:

Hyperledger Fabric是Hyperledger项目中最为知名和广泛采用的区块链框架之一。它是一个开源的企业级区块链平台,旨在为商业应用提供可扩展、可定制和高度安全的解决方案。

Hyperledger Fabric是一个模块化的、可扩展的企业级区块链框架,它提供了高度可定制的智能合约和隐私性控制。它支持多个共识算法,并提供了丰富的身份验证和访问控制机制。

Hyperledger Fabric的设计目标是满足实际商业需求,特别注重隐私性、灵活性和可扩展性。

3.2  Hyperledger Fabric的关键特点:

  •  模块化架构:Hyperledger Fabric采用模块化的架构,使得各个组件可以独立运行和升级。这种架构使得Fabric更加灵活,可以根据特定需求进行定制和扩展。

  •  智能合约:Fabric支持多种编程语言编写的智能合约,其中最常用的是基于Go语言的链码(Chaincode)。链码可以定义业务逻辑和数据模型,用于执行和验证交易。
  •  隐私性和权限管理:Fabric提供了灵活而精细的权限管理机制,允许网络中的参与者进行身份验证和授权。它支持通道(Channel)的概念,使得特定的参与者只能访问和查看与他们相关的交易数据,确保数据的隐私性。
  •  共识机制:Fabric支持多种共识算法,包括拜占庭容错(Byzantine Fault Tolerant,BFT)算法和实用拜占庭容错(Practical Byzantine Fault Tolerant,PBFT)算法。这些算法可以根据网络需求进行选择,以实现高度安全和高性能的共识。
  •  可扩展性:Fabric的架构允许网络中的参与者根据需要进行扩展,以适应不同规模的业务需求。它支持分布式节点和容器化技术,可以在多个物理或虚拟环境中部署和运行。
  •  安全性和审计:Fabric提供了严格的身份验证和交易验证机制,确保数据的完整性和安全性。它还支持可追溯性,可以对交易进行审计和历史记录的查询。

 3.3 Hyperledger Fabric的架构演变:

Hyperledger Fabric的架构在其演进过程中经历了多个版本和改进。以下是一些关键的架构演变和功能增强:

  1.  V0.6版:初始版本的Hyperledger Fabric是一个单一的链码执行引擎,每个链码实例都有一个共享的状态数据库。这个版本还没有通道(Channel)的概念,所有的交易都是公开可见的。
  2.  V1.0版:引入了通道的概念,使得特定的参与者只能在一个私有的子网络中进行交易和通信。此外,V1.0版还引入了链码生命周期管理,支持链码的安装、实例化、升级和维护。
  3.  V1.1版:引入了私有数据(Private Data)的概念,允许参与者在交易中使用和管理私有数据。这样可以在保护数据隐私的同时,实现跨组织的合作和共享。
  4.  V1.2版:增加了配置交易(Config Transactions)和背书策略(Endorsement Policies)的功能。配置交易可以更改和更新网络配置,而背书策略允许定义需要哪些参与者背书交易。
  5.  V1.4版:引入了Fabric CA(Certificate Authority),提供了更强大和灵活的身份管理和认证机制。Fabric CA支持基于证书的身份验证和访问控制。
  6.  V2.0版:引入了多链码(Multi-chaincode)支持,允许在同一通道中部署和执行多个链码。这提供了更大的灵活性和可扩展性,以满足不同业务需求。
  7.  V2.2版:增加了外部链码(External Chaincode)支持,允许链码以外部进程的形式运行。这样可以更好地支持使用不同编程语言编写的链码。
  8.  V2.3版:引入了跨链码调用(Cross-chaincode Invocation)功能,使不同链码之间可以相互调用和交互,实现更复杂的业务逻辑。

 3.4 Hyperledger Fabric的架构和总体架构:

Hyperledger Fabric的架构和总体架构是相关但不同的概念,架构可看成总体架构的一部分。

Hyperledger Fabric是一个开源的企业级区块链平台,其架构由多个组件和层级构成,用于实现分布式、可扩展和安全的区块链解决方案。

Hyperledger Fabric的架构概述:

1. 应用层(Application Layer):
   - 客户端应用程序(Client Applications):与Hyperledger Fabric网络进行交互的应用程序,可以发送交易请求、查询数据等。
   - 链码(Chaincode):也称为智能合约,包含业务逻辑和数据模型,用于执行和验证交易。

2. 通信层(Communication Layer):
   - 提案和背书(Proposal and Endorsement):客户端应用程序向网络中的节点发送交易提案,并由节点执行背书操作,以获取交易的背书结果。
   - 订购服务(Ordering Service):负责将背书交易打包成区块,并根据共识算法达成共识,生成有序的交易区块。

3. 网络层(Network Layer):
   - 区块链网络(Blockchain Network):由多个节点组成的分布式网络,用于存储和共享交易数据。
   - 节点(Nodes):网络中的参与者,可以是对等节点(Peer Nodes)和排序节点(Ordering Nodes)。
   - 通道(Channels):逻辑上的隔离空间,允许特定的参与者在一个私有的子网络中进行交易和通信。

4. 存储层(Storage Layer):
   - 区块存储(Block Storage):存储已确认的交易记录,组成区块链。
   - 账本(Ledger):存储交易记录的数据结构,包括世界状态(World State)和交易日志(Transaction Log)。

5. 身份和访问控制层(Identity and Access Control Layer):
   - 成员服务提供商(Membership Service Providers,MSP):负责管理参与者的身份验证和权限管理。
   - 安全服务提供商(Security Service Providers,SSP):负责提供安全相关的功能,如加密和解密。

Hyperledger Fabric的总体架构是一个分布式、模块化和可扩展的企业级区块链平台。它由多个组件和层级构成,用于实现交易的验证、共识、存储和执行智能合约等功能。

Hyperledger Fabric的总体架构:

1. 客户端应用程序层(Client Application Layer):
   - 客户端应用程序(Client Applications):与区块链网络进行交互的应用程序,可以发送交易请求、查询数据等。

2. 智能合约层(Smart Contract Layer):
   - 链码(Chaincode):也称为智能合约,包含业务逻辑和数据模型,用于执行和验证交易。
   - 链码生命周期管理(Chaincode Lifecycle Management):负责链码的安装、实例化、升级和维护。

3. 交易处理层(Transaction Processing Layer):
   - 提案和背书(Proposal and Endorsement):客户端应用程序向网络中的节点发送交易提案,并由节点执行背书操作。
   - 共识服务(Consensus Service):负责验证交易的一致性和达成共识,确保交易被有效确认。
   - 区块生成(Block Generation):经过背书和共识的交易被打包成区块,并添加到区块链中。

4. 区块链层(Blockchain Layer):
   - 区块链网络(Blockchain Network):由多个节点组成的分布式网络,用于存储和共享交易数据。
   - 区块存储(Block Storage):存储已确认的交易记录,组成区块链。
   - 账本(Ledger):存储交易记录的数据结构,包括世界状态(World State)和交易日志(Transaction Log)。

5. 身份和访问控制层(Identity and Access Control Layer):
   - 成员服务提供商(Membership Service Providers,MSP):负责管理参与者的身份验证和权限管理。
   - 网络参与者(Network Participants):包括节点和客户端应用程序,共同构成区块链网络的参与者。

6. 网络管理层(Network Management Layer):
   - 配置交易(Configuration Transactions):用于更改和更新网络的配置参数。
   - 区块链管理(Blockchain Management):包括网络的创建、配置和维护。

(4)Hyperledger Fabric 交易流程:

4.1 在此流程中:

1. 客户端应用程序创建并发送交易提案给背书节点。
2. 背书节点执行链码操作,并生成交易背书结果。
3. 客户端应用程序收集足够数量的有效背书结果后,将交易提交给排序服务节点。
4. 排序服务节点对交易进行排序并打包成区块。
(5. 排序后的交易区块被发送给背书节点进行验证。6. 背书节点验证交易区块的合法性。7. 背书节点将交易区块提交到账本,更新世界状态和交易日志。)

4.2 Fabric交易流程的专业词简要描述:

1. 提案(Proposal):
   - 客户端应用程序创建并发送交易提案(Proposal)给目标组织的背书节点。
   - 提案包括待执行的链码操作(如读取或写入数据)和必要的参数。

2. 背书(Endorsement):
   - 背书节点收到提案后,会执行链码操作,并根据链码的背书策略验证交易的有效性。
   - 背书节点对交易进行背书,生成交易背书结果(Endorsement),该结果包含链码操作的读写集和背书节点的签名。

3. 提交(Commit):
   - 背书节点将交易背书结果返回给客户端应用程序。
   - 客户端应用程序收集足够数量的有效背书结果后,将这些结果作为交易提案提交给排序服务节点。

4. 排序(Ordering):
   - 排序服务节点收到交易提案后,将交易按照顺序打包成区块,并为区块生成区块头。
   - 排序服务节点使用共识算法(如Kafka)对交易进行排序,确保所有节点在同一顺序上达成共识。

5. 验证(Validation):
   - 排序服务节点将排序后的交易区块发送给网络中的所有背书节点。
   - 背书节点验证交易区块的合法性,包括检查交易的签名和背书结果的一致性。

6. 提交(Commit):
   - 背书节点将交易区块提交给自身的账本(Ledger),更新世界状态(World State)和交易日志(Transaction Log)。

7. 查询(Query):
   - 客户端应用程序可以向任何节点发送查询请求,获取经过确认的交易数据或当前的世界状态。

4.3 Hyperledger Fabric的关键技术包括:

1. 账本(Ledger):账本是Hyperledger Fabric中存储交易数据的核心组件。它包括两个重要的部分:
   - 世界状态(World State):记录了所有交易执行后的最新状态,提供了高效的数据查询能力。
   - 交易日志(Transaction Log):记录了所有经过确认的交易,用于实现交易的不可篡改性和可追溯性。

2. 链码(Chaincode):链码是在Hyperledger Fabric中实现业务逻辑和数据模型的智能合约。链码可以使用编程语言(如Go、Java)编写,并在区块链网络中部署和执行。链码定义了可供外部应用程序调用的接口,允许对账本进行读写操作。

3. 通道(Channel):通道是Hyperledger Fabric中用于隔离和隐私保护的机制。它可以将网络中的参与者划分为多个独立的通道,每个通道拥有自己的账本和链码。通道允许不同组织之间进行私有的交易和通信,确保交易的隔离性和安全性。

4. 节点(Node):节点是参与Hyperledger Fabric网络的计算机实体。它可以是对等节点(Peer Node)或排序节点(Ordering Node)。
   - 对等节点负责执行链码和维护账本,参与交易的背书和验证过程。
   - 排序节点负责将交易打包成区块,并为交易达成共识,确保所有节点在同一顺序上达成共识。

5. 排序(Ordering):排序服务节点负责对交易进行排序和打包成区块的过程。排序节点使用共识算法(如Kafka)确保所有节点在交易顺序上达成一致,生成有序的交易区块。排序服务节点将排序后的区块广播给网络中的背书节点和验证节点。

 6. 接口SDK(Software Development Kit):Hyperledger Fabric提供了多种语言的SDK,用于开发和集成应用程序。SDK提供了访问Fabric网络的接口,允许应用程序提交交易、查询状态、监听事件等操作。

(5)Kafka

5.1 Kafka概述:

Kafka是一个开源的分布式消息传递系统,由Apache软件基金会开发和维护。它旨在处理高吞吐量的实时数据流,具有高可扩展性和可靠性。Kafka的设计目标是提供一种高效的、持久化的、可分区的、可复制的消息系统。

以下是Kafka的一些核心概念:

1. 主题(Topic):主题是消息的逻辑分类,可以看作是发布的数据流。消息发送者将消息发布到特定的主题,而消息消费者可以订阅一个或多个主题来接收相应的消息。

2. 分区(Partition):每个主题可以被分成多个分区,每个分区是一个有序的、不可变的消息序列。分区允许在集群中进行消息的并行处理,同时提供了扩展性和容错性。

3. 生产者(Producer):生产者是消息的发送者,负责将消息发布到主题。生产者将消息发送到特定的主题和分区,可以指定消息的键(Key)来决定消息在分区中的分配策略。

4. 消费者(Consumer):消费者是消息的接收者,负责从主题中消费消息。消费者可以订阅一个或多个主题,并根据订阅的规则从分区中拉取消息。

5. 消费者组(Consumer Group):多个消费者可以组成一个消费者组来共同消费主题中的消息。Kafka将消息分发给消费者组中的消费者,每个消息只会被同一个消费者组中的一个消费者处理。

6. 偏移量(Offset):偏移量是消息在分区中的唯一标识,用于跟踪消费的进度。消费者可以使用偏移量来指定要消费的消息的位置。

Kafka的设计理念是基于发布-订阅模型和持久化日志的思想。它提供了高吞吐量的消息传递,保证了消息的可靠性、持久性和顺序性,并支持水平扩展和分布式部署。Kafka广泛应用于大规模数据处理、实时流处理、事件驱动架构等场景中。

5.2 在Hyperledger Fabric中Kafka处理流程:


在Hyperledger Fabric中,Kafka被用作排序服务的共识算法之一。

下面是基于Kafka的排序服务在Fabric中的处理流程:

1. 创建和配置Kafka集群:首先,需要创建一个Kafka集群,并进行相应的配置。Kafka集群由多个Kafka节点组成,其中包括至少一个主节点和多个从节点。

2. 配置排序服务:在Hyperledger Fabric网络的配置文件中,指定要使用Kafka作为排序服务的共识算法,并提供Kafka集群的连接信息和参数。

3. 交易提交到排序服务:当客户端应用程序提交交易时,交易将被发送到排序服务进行处理。交易可以通过客户端SDK或使用Fabric命令行工具进行提交。

4. 排序服务进行交易排序:排序服务接收到提交的交易后,对交易进行排序和打包成区块的处理。Kafka利用其发布-订阅模型和分区机制,确保在Kafka集群中所有节点上的交易具有相同的顺序。

5. 交易区块的传播:排序服务将排序后的交易区块广播给网络中的其他节点,包括背书节点和验证节点。

6. 背书和验证:背书节点和验证节点接收到交易区块后,进行背书和验证的过程。背书节点验证交易的正确性和合法性,并为交易签署背书结果。验证节点对交易进行验证,确保交易符合共识规则和网络配置。

7. 共识达成:背书节点和验证节点将其背书结果发送回排序服务节点。当排序服务节点收集到足够数量的背书结果时,根据共识算法(如Kafka)对交易达成共识。

8. 区块写入账本:排序服务节点将达成共识的交易区块写入账本,更新世界状态和交易日志。这标志着交易被永久性地记录在区块链上。

通过Kafka的发布-订阅模型和分布式的排序机制,Hyperledger Fabric确保了交易的顺序一致性和可靠性。Kafka作为一种高吞吐量的消息传递系统,为Fabric提供了可扩展的排序服务,并能够处理大量的交易和节点。

(6)SOLO

在Hyperledger Fabric中,Solo指的是一种共识模式,也称为单节点共识模式。

下面是一些关于Solo的概念解释:

1. Solo模式:Solo模式是Hyperledger Fabric中的一种共识算法,用于排序和达成共识。在这种模式下,整个网络只有一个排序服务节点,负责接收交易、排序交易和广播交易给验证节点。

2. 排序服务节点:在Solo模式下,排序服务节点扮演着排序和共识的角色。它接收来自客户端的交易,并按照接收顺序将它们排序到区块中。排序服务节点负责将排序后的交易区块广播给网络中的验证节点。

3. 验证节点:验证节点是Solo模式下的参与方,它们接收由排序服务节点广播的交易区块,并验证其中的交易。验证节点执行链码逻辑以验证交易的合法性,并更新本地的账本状态。

4. 链码执行:在Solo模式下,链码执行是在排序服务节点和验证节点上进行的。排序服务节点执行链码来确定交易的顺序,验证节点执行链码以验证交易的合法性和更新世界状态。

5. 单节点共识:Solo模式中只有一个节点参与共识过程,这意味着整个共识过程的决策权集中在单个节点上。由于缺乏分布式的共识机制,Solo模式在可扩展性和容错性方面有一定的限制。

需要注意的是,Solo模式主要用于开发、测试和学习目的,或者在小规模私有网络中使用。在实际的生产环境中,推荐使用具有分布式共识算法的共识模式,例如使用Kafka共识算法,以实现更好的性能、可扩展性和容错性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/549217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

堆结构 - 大根堆、小根堆

在开发语言中,heap在使用层次的名字叫PriorityQueue(优先级队列),PriorityQueue数据结构的名字就叫做堆,底层就是用堆结构实现的。 完全二叉树 空树也算是完全二叉树每一层都是满的也算是完全二叉树如果层不满&#…

魔改车钥匙实现远程控车:(番外)在macOS上安装使用MicroPython

前言 哈哈,各位可能会奇怪为啥上一篇文章还在说怎么在 ESP32C3 上安装 Arduino,现在怎么又变成了安装 MIcroPython。 其实是因为上次写 Arduino 还是我高中时候的事了,已经不太会了。 虽然 MIcroPython 我从来没有接触过,但是 …

Microsoft Office 2003的安装

哈喽,大家好。今天一起学习的是office2003的安装,这个老版本的office可是XP操作系统的老搭档了,有兴趣的小伙伴也可以来一起试试手。 一、测试演示参数 演示操作系统:Windows XP 不建议win7及以上操作系统使用 系统类型&#xff…

Springboot 搭建WebService客户端+服务端

WebService简介 Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可…

软件设计和架构设计

软件设计和架构设计 1.软件设计 1.1设计 设计是从架构 构件 接口以及系统其他特征定义的过程。 软件设计的结果必须描述系统的架构,系统如何分解和组织构件。 描述构件间的接口。 描述构件必须详细到可进一步构造的程度。 设计是把分析模型转换成设计模型的过…

三个帮助你整理信息的桌面 WiKi

如果你想在桌面上感受 wiki,而不用做那些复杂的工作,这很容易做到。这有一些轻量级 wiki,可以帮助你组织你的信息、跟踪你的任务、管理你的笔记等等。 这个词时,可能会想到 MediaWiki 或 DokuWiki 这样的例子。它们开源、好用、强…

Go 并发之channel(通道)

一、前言 作为 Go 语言最有特色的数据类型,通道(channel)完全可以与 goroutine(也可称为 go 程)并驾齐驱,共同代表 Go 语言独有的并发编程模式和编程哲学。 通道(channel)可以利用…

TOGAF架构开发方法—G阶段:实施治理

本章提供了对实现的体系结构监督。 一、目标 G阶段的目标是: 通过实施项目确保符合目标架构为解决方案和任何实施驱动的架构更改请求执行适当的架构管理功能 二、 输入 本节定义阶段 G 的输入。 1 、企业外部参考物质 架构参考资料 2、 非架构输入 架构工作请…

K8s之污点、容忍度与Pod重启策略详解

文章目录 一、污点-Taint二、容忍度-Tolerations二、Pod重启策略1、Pod常见状态2、Pod重启策略 一、污点-Taint 在 Kubernetes 中,污点(Taint)是一种标记,用于标识一个Node节点上的某些资源或条件不可用或不可接受。当一个节点被…

基于springboot的社区疫情防控平台

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:HTML、Vue 数据库:MySQL5.7和Navicat管理工具结合 开发软件:IDEA / Eclipse 是否Maven项目:是 前言 基于springboot…

模板类与友元

目录 分类 一、非模板友元:友元函数不是模板函数,而是利用模板类参数生成的函数; 代码 分析 运行结果 二、约束模板友元:模板类实例化时,每个实例化的类对应一个友元函数;并且这个模板友元适用多种类模…

AtCoder Beginner Contest 302(A-D)

TOYOTA MOTOR CORPORATION Programming Contest 2023#2 (AtCoder Beginner Contest 302) Contest Duration: 2023-05-20(Sat) 20:00 - 2023-05-20(Sat) 21:40 (local time) (100 minutes) 暴搜场,1个小时出了4道,以为很有机会,结果E交了十发没…

栈和队列OJ题:LeetCode--232.用栈实现队列

朋友们、伙计们,我们又见面了,今天给大家带来的是LeetCode--232.用栈实现队列 数 据 结 构 专 栏:数据结构 个 人 主 页 :stackY、 LeetCode 专 栏 :LeetCode刷题训练营 LeetCode--232.用栈实现队列&#xff…

使用 compose 封装一个通用的关于页面库

前言 现在很多 APP 都会有一个关于页面,用于放置一些必要的信息,例如:版本号、版权信息等。有时也会用于展示设置、帮助、反馈等功能的入口。 通常,我们都会自己挨个创建不同的 item ,略显繁琐。 所以我就在想&…

ad18学习笔记一

如何自学altium designer如何自学altium designer? - 知乎如何自学altium designer 这里面有ad官方推荐的b站的视频:可以直接去b站关注ad官方账号 AltiumChina,它本身就发布了很多实用教程。 在知乎的这个界面也有Altium Designer Ver18_官…

万字长文,为你送上全网最全Flutter学习资料!

话不多说直接上目录,干货较多内容很长,建议先收藏供以后慢慢查阅。 目录 文章视频组件导航模板插件框架实验性游戏开源App实用工具社区书籍福利 文章 介绍 Google IO 2018 [1.1K👏] - 构建美观,灵活的用户界面。Presentation …

Stm32待机模式的进入与唤醒

1.基础介绍 1-1:单片机的“低功耗模式”,像是手机的待机模式,不同于正常运行模式,处于一种省电省资源的状态 1-2:在运行情况下,HCLK为cpu提供时钟,cortex-m3内核执行程序的代码,如…

CleanMyMac X2023Mac上下载最多的第三个实用程序

CleanMyMac X是一款广为人知的Mac优化应用程序,目前是Mac上下载最多的第三个实用程序,并获得苹果官方认证。为了满足用户更好体验Mac和新版系统,它们带来了新功能。这新功能可以帮助用户更好的监控Mac的健康状况,让用户畅享Mac新系…

base编码

https://www.qqxiuzi.cn/bianma/base64.htm 一眼就解密 一看就晓得是base64,问就是做多了(base64大小写加数字和) base编码概念 此博客列举的比较多,我信 https://blog.csdn.net/qq_53105813/article/details/127626450 简单聊几个…

少儿编程 中国电子学会图形化编程等级考试Scratch编程三级真题解析(选择题)2023年3月

2023年3月scratch编程等级考试三级真题 选择题(共25题,每题2分,共50分) 1、计算“2+4+8+……+128”,用变量n表示每项,根据变化规律,变量n的赋值用下列哪个最合适 A、 B、 C、 D、 答案:D 考点分析:考查数学逻辑推理能力,从给定的算式中可以看出后一项都是前一…