Hyperledger Fabric架构设计

目录

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.hqwc.cn/news/1425.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++ 线程池工作原理 代码实现

1. 线程池作用 如果多次使用线程,那么就需要多次的创建并撤销线程。但是创建/撤销的过程会消耗资源。线程池是一种数据结构,其中维护着多个线程,这避免了在处理短时间任务时,创建与销毁线程的代价。即在程序开始运行前预先创建一…

记录STM32使用udp通信的一个大坑

TOCfreeRTOSlwip实现udp通信 问题说明 在使用MCU和其他终端udp通信时遇见这样的一个大坑,整个通信过程如下图所示 问题出在mcu与其他设备通过udp交互,但在调试的过程中发现MCU给其他设备发消息的时候,虽然看起来成功了,但实际上…

支持刷机(OpenWrt)的路由器大全

2023年上半年最热门的刷机路由器当然是360T7、小米WR30U这两款,主要是性价比高,闲鱼100多搞定,支持刷OpenWrt、支持WiFi6,采用MTK798X系列处理器,性能强,轻松跑满千兆,如果你想追新,…

学习c++第01天

学习c的第01天 前言1、变量是声明&#xff1f;2.建议定义数据都对其进行初始化3.有符号数和无符号数4.进制间的相互转换5.原反补码6.const 、register 、volatile和typedef关键字7.数据类型的自动转换8.左移<< &右移操作>>9.将data的指定位数进行0、1转化的应用…

Unity | HDRP高清渲染管线学习笔记:HDRP Custom Pass

目录 一、Custom Pass Volume组件介绍 1.Mode&#xff08;模式&#xff09; 2.Injection Point&#xff08;注入点&#xff09; 3.Priority 4.Fade Radius 5.custom passes 二、查看Custom Pass的渲染阶段 Custom Pass允许你执行以下操作&#xff08;官方文档&#xff0…

基于改进ISODATA算法的负荷场景曲线聚类MATLAB程序

参考文献&#xff1a; 基于机器学习的短期电力负荷预测和负荷曲线聚类研究_张辰睿&#xff08;硕士论文&#xff09; 参考其第三章 主要内容&#xff1a; 主要包含四种聚类算法&#xff0c;K-means聚类、ISODATA聚类、L-ISODATA聚类及K-L-ISODATA聚类&#xff0c;并且包含了…

【玩转Linux操作】Linux服务管理

&#x1f38a;专栏【玩转Linux操作】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;服务(service)管理⭐service管理指令 &…

(0017) H5-vue创建项目vue init webpack

1、初始化项目 1、vue 命令讲解 vue list &#xff1a;查看可以基于那些模板创建vue应用vue init <template-name> <project-name>init&#xff1a;表示要用vue-cli来初始化项目 <template-name>&#xff1a;表示模板名称&#xff0c;vue-cli官方提供的5种…

输入框设置placeholder的文字居中

<input classlogin-form-pwd placeholder请输入商家登录密码 placeholder-class"center"></input> .center{ text-align: center; }

ChatGLM-6B微调p tuning v2和lora对比

官方项目地址&#xff1a;https://github.com/THUDM/ChatGLM-6B 参考本人之前的博客下载ChatGLM-6B模型&#xff1a; https://blog.csdn.net/Acecai01/article/details/131221676 设备 一张3090Ti&#xff0c; 24G显卡 实验目的 通过微调的方法&#xff0c;训练ChatGLM-6B模…

oracle 重复启动监听程序故障

又是一起 oracle 无法连接问题&#xff0c;检查配置都是正常的。 原来是碰到一个oralce的bugl了。 还真就是这个问题&#xff0c;子进程一kill掉&#xff0c;就恢复了。

《算法设计与分析》学习笔记

目录 算法基本概念 算法的定义 算法复杂度分析 渐近记号 ①渐近上界记号O ②渐近下界记号Ω ③渐近紧确界记号 Θ ④非渐近紧确上界记号o ⑤非渐近紧确下界记号ω 渐进记号极限定义 分治 分治步骤 递归树 ​编辑代入法 主方法 改变变量 二叉树 堆 建堆 堆排…