Hyperledger Fabric架构设计

news2024/11/24 11:58:43

目录

1、逻辑架构

答疑:什么叫做背书策略?

2、运行时架构

        答疑:什么是锚节点?


1、逻辑架构


Hyperledger Fabric从1.X开始,在扩展性及安全性方面有了很大的提升,且新增了诸多特性。

  • 多通道:支持多通道,提高隔离安全性。
  • 可插拔的组件:支持共识组件、权限管理组件等可插拔功能。
  • 账本数据可被存储为多种格式。
  • 分化了Peer节点的多种角色,可以根据具体情况实现灵活部署。

Hyperledger Fabric整体逻辑架构如下图所示。 


Hyperledger Fabric的四大核心组件如下

1)成员服务(Membership Service):成员服务管理保证了Hyperledger Fabric平台访问的安全性,提供了成员的注册、管理及审核功能。


2)区块链服务(Blockchain Service):区块链的核心部分,为区块链的主体功能提供了底层支撑;包括共识管理、分布式账本实现、账本的存储及网络中各节点之间的通信
实现。

        ①区块链(Blockchain):区块之间以Hash连接为结构的交易日志。Peer节点从Order
Service节点接收交易区块,并根据背书策略和并发冲突标记区块上的交易是否有效,然后
将该区块追加到Peer文件系统中的Hash Chain上。

        ②交易(Transaction):交易分为对链码的部署和调用两种操作类型。

  • 部署交易:部署是请求在Per上启动链码容器;创建新的链码并设置一个程序作为参数。一个部署交易执行成功,表明链码已被成功安装到区块链上。
  • 调用交易:调用是从账本中请求读写集,是在之前已部署链码的情况下执行一个操作。调用交易将使用链码提供的一个函数。当成功时,链码执行特定的函数对账本数据进行操作(修改状态),并返回操作结果。

3)链码服务(Chaincode Service):提供链码(Chaincode)的部署及运行时的所需环境。


4)事件(Event Stream):为各组件之间的异步通信提供技术实现。

注意
        链码是一个可以对账本数据进行操作的可开发的组件程序,部署运行在一个安全的容器中,用户可以通过调用链码中的指定函数对账本数据进行修改或读取。

答疑:什么叫做背书策略?

  1. 背书策略是区块链网络中用于判断交易有效性的一种规则或机制。在区块链中,交易需要经过一定的验证过程才能被认可并添加到区块中。
  2. 背书策略通常涉及多个节点的参与,这些节点可以是网络中的不同实体或者特定的角色。根据具体的区块链系统和应用场景,背书策略的具体规则可以有所不同。
  3. 一种常见的背书策略是要求多个节点对交易进行确认或背书,只有当足够数量的节点对交易达成共识时,该交易才会被认为是有效的并被添加到区块中。这种背书策略可以增加交易的可信度和安全性,防止单个节点的作恶行为或错误导致的异常交易被接受。
  4. 除了节点数量外,背书策略还可以涉及节点的身份或权限。例如,特定类型的节点可能具有更高的背书权重,其确认的交易对整体的有效性影响更大。这样的设计可以根据节点的可信度或专业性来提高系统的可靠性。

        总之,背书策略是区块链系统中的一项关键机制,用于确保交易的合法性、可靠性和一致性。不同的背书策略可以根据具体需求和设计目标进行选择和定义。

2、运行时架构

        逻辑架构图说明了Hyperledger Fabric的各个核心组件/模块。由于Hyperledger Fabric
是一个需要保证交易数据安全的分布式系统,所以在实际运行时将不同的服务器配置成
为不同的Node(节点),担任不同的角色,从而实现逻辑架构中不同的核心组件/模块
功能。
实际运行时架构如下图所示。

运行时架构图中各项解释如下:
        1)App:代表一个CLI(客户端)或SDK,作用是创建交易并获取到足够的背书之后向Orderer节点(排序服务节点)提交交易请求(Peer节点与Orderer节点提供了gRPC远程访问接口,供客户端调用)。
        2)CA:负责对网络中所有的证书进行管理(对Hyperledger Fabric网络中的成员身份进行管理),提供标准的PKI(Public Key Infrastructure,.公钥基础设施)服务。
        3)MSP(Member Service Provider):为客户端和Peer提供证书的系统抽象组件。
        4)Channel:即通道,其将一个大的网络分割成为不同的私有子网。通道提供一种通信机制,将指定的Peer和Orderer连接在一起,形成一个具有保密性的通信链路(虚拟),进行数据隔离(区块数据只能存储在已加入到通道中的成员节点内)。要加入通道的每个节点都必须拥有自己的、通过成员服务提供商(MSP)获得的身份标识。
        5)Orderer(排序服务节点):对客户端提交的交易请求进行排序,之后生成区块广播给通道内的Peer.
        6)org1:代表联盟中的某一个组织(一个联盟可以由多个不同的组织组成)。
        7)Peer:表示组织中的节点(Node);Peer节点以区块的形式从排序服务节点接收有序状态更新,维护状态和账本。在Hyperledger Fabric网络运行环境中,Peer节点可以划分为如下4种角色。

  • 背书节点:根据指定的策略调用智能合约,对结果进行背书,返回提案响应到客户端。
  • 提交节点:验证数据并保存至账本中。
  • 锚节点:通道中的每个组织(Og)都有一个锚节点,锚节点可以允许同一通道中不同组织的Peer节点发现通道内的所有Peer节点。
  • Leader节点:作为组织内所有节点的代表,能够连接到排序服务节点,将从排序服务节点接收到的批量区块广播给组织内的其他节点。
  • 网络中只有部分Peer节点为背书节点角色,网络中所有Peer节点都为提交节点角色。

答疑:什么是锚节点?

在Hyperledger Fabric中,锚节点(Anchor Node)具有重要的作用。锚节点是网络中的特殊节点,用于维护和传播其他组织的区块链网络地址。以下是锚节点的几个主要作用:

  1. 地址维护和传播:锚节点负责维护其他组织的网络地址信息。每个组织在Fabric网络中都有一个唯一的网络地址,当新的组织加入网络或者已有组织的网络地址发生变化时,锚节点会更新并广播这些地址信息给其他组织。

  2. 跨组织通信:锚节点在跨组织的交互中起到关键作用。它们充当了跨组织通信的桥梁,其他组织可以通过与锚节点进行通信来实现跨组织的交互操作和数据共享。

  3. 连接点稳定性:锚节点的选择通常考虑到节点的可用性和稳定性。由于锚节点在网络中扮演着重要角色,选择稳定可靠的节点作为锚节点可以确保网络连接的稳定性,并减少因节点故障引起的中断。

         8)Chaincode:在Hyperledger Fabric中称为链式代码,简称链码;运行在一个安全的容器中,提供相应的API与账本数据进行交互。
        9)Ledger:即账本,由排序服务构建的一个全部有序的交易哈希链块,保存在同一通道所有的Peer节点中。账本提供了在系统运行过程中发生的可验证历史,它包含所有成功的状态操作(有效交易)和不成功的状态操作(无效交易)。

1.应用程序或客户端到底需要连接到哪些Peer节点?
只需要连接到背书节点即可。
2.背书节点怎么指定?
在实例化链码时由背书策略指定

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

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

相关文章

【carla】carla仿真环境安装与运行

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍carla仿真环境安装与运行。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷…

文心一言 VS 讯飞星火 VS chatgpt (51)-- 算法导论6.2 3题

三、当元素 A[i] 比其孩子的值都大时,调用 MAX-HEAPIFY(A.i)会有什么结果? 文心一言: 当元素 A[i] 比其孩子的的值都大时,调用 MAX-HEAPIFY(A, i) 会将 A[i] 与其孩子中的最小值进行交换,并将 A[i] 视为新的根节点。这个操作会…

解决no main manifest attribute, in XXX.jar

解决no main manifest attribute, in XXX.jar 1. 问题描述1.1 前言1.2 问题描述 2. 问题原因3. 解决问题3.1 修改pom文件3.2 重新启动3.3 再次查看META-INF/MANIFEST.MF3.4 小结 1. 问题描述 1.1 前言 创建一个简单的maven项目,pom配置如下: 1.2 问题…

若依-vue图片上传本地改OSS前台以及后台-附带oss图片上传工具类

阿丹: 在二次开发若依的过程中发现若依的图片上传的默认的是在本地,在spring-vue版本中,如果要将平台上线那么就需要考虑这个问题,要使用fastdfs或者oss来完成代替本地的图片上传。 本篇文章我使用了oss来完成图片上传以及前台的…

【零基础入门学习Python---Python网络编程之django快速入门实践】

🚀 Python 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

mac 文件批量重命名001开始

mac 文件批量重命名001开始,怎么操作?我们平时在整理办公文件的时候,经常需要对文件的名称进行修改,将文件修改为数字形式的名称,例如001、002、003、004......这样的形式,尤其是某项工作涉及非常多文件的时…

Spring Boot 中的 WebSocket 是什么,原理,如何使用

Spring Boot 中的 WebSocket 是什么,原理,如何使用 前言 WebSocket 是一种支持双向通信的网络协议,可以让客户端和服务器之间实现实时通信。Spring Boot 提供了对 WebSocket 的支持,可以方便地在应用程序中实现实时通信功能。本…

LangChain大型语言模型(LLM)应用开发(一):Models, Prompts and Output Parsers

LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

iOS App的上架和版本更新流程

一、前言: 作为一名iOSDeveloper,把开发出来的App上传到App Store是必要的。下面就来详细讲解一下具体流程步骤。 二、准备: 一个已付费的开发者账号(账号类型分为个人(Individual)、公司(Com…

2023上半年软考系统分析师科目一整理-17

2023上半年软考系统分析师科目一整理-17 计算机系统的性能一般包括两个大的方面。一个方面是它的(),也就是计算机系统能正常工作的时间,其指标可以是能够持续工作的时间长度,也可以是在一段时间内,能正常工…

【域名详解】网络杂谈(13)之深入简出了解什么是域名

涉及知识点 什么是域名,域名的概念,域名的结构,域名地址的寻址过程,深入了解域名的寻址机制。 原创于:CSDN博主-《拄杖盲学轻声码》,更多内容可去其主页关注下哈,不胜感激 文章目录 涉及知识点…

【工作记录】基于CSS+JS可拖拽改变大小、可吸附到边界的DIV

记录一段实现可拖拽、可自动吸附到边界的代码。 <!DOCTYPE html> <html lang"en"> <head><style>body {overflow: hidden;}#pane {position: absolute;width: 45%;height: 45%;top: 20%;left: 20%;margin: 0;padding: 0;z-index: 99;border…

青岛大学_王卓老师【数据结构与算法】Week03_07_线性表的链式表示和实现7_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c;另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础–…

【Java项目】拉取公司GitLab项目的教程

文章目录 创建Git账号登录Git 创建Git账号 进入公司后&#xff0c;会拿到公司给你注册的邮箱以及密码&#xff0c;你得到用户名和密码之后&#xff0c;需要先创建一个拉取这个仓库对应的git账号。 我们先登录GitLab 当你登录GitLab之后&#xff0c;会显示你还没有ssh key&…

基于matlab使用基本形态运算符和 blob分析的组合从视频流中提取信息(附源码)

一、前言 此示例演示如何使用基本形态运算符和 blob 分析的组合从视频流中提取信息。在本例中&#xff0c;该示例计算每个视频帧中大肠杆菌的数量。请注意&#xff0c;细胞的亮度各不相同&#xff0c;这使得分割任务更具挑战性。 形态运算符是一种图像处理中常用的操作&#…

Linux系统部署BBR服务器加速软件

1. BBR加速软件介绍 BBR简介&#xff1a;   BBR是谷歌的黑科技&#xff0c;也可以理解为用来加速网络的软件&#xff0c;如果服务器在海外&#xff0c;会发现丢包率很高&#xff0c;线路还会时断时续。所以&#xff0c;不用点黑科技&#xff0c;肯定是没办法使用。而BBR加速能…

团体程序设计天梯赛-练习集L2篇⑨

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的普通人。 &#x1f3c0;个人主页&#xff1a;陈童学哦CSDN &#x1f4a1;所属专栏&#xff1a;PTA &#x1f381;希望各…

Redis 安装配置 常用命令

---------------------- 关系数据库与非关系型数据库 ---------------------------------------- ●关系型数据库&#xff1a; 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&…

Tomcat的安装部署

tomcat安装部署 tomcat安装部署 一、概述&#xff1a;1.tomcat介绍&#xff1a;2.tomcat核心组件&#xff1a;3.tomcat处理内部请求&#xff08;数据流向图&#xff09;4.tomcat服务部署&#xff1a; 二、虚拟主机配置&#xff1a;1.创建 chan 和 baek 项目目录和文件&#xf…

【C语言初阶(5)】循环练习题

文章目录 1. 计算 n 的阶乘2. 计算 1!2!3!……10!3. 使用二分查找法查找某数二分查找算法介绍代码实现 4. 演示字符移动5. 模拟用户登录场景 1. 计算 n 的阶乘 阶乘 某个数从 1 开始一直乘到这个数本身为止&#xff1b; 例如&#xff1a;3 的阶乘就是 1 * 2 * 3 6&#xff1b…