当前位置: 首页 > news >正文

10 Hyperledger Fabric 介绍

简介

HypeLedger(超级账本)是由Linux基金会2015年创建的首个面向企业应用场景的开源分布式账本平台。

  • HypeLedger Fabric是HypeLedger种的区块链项目之一
  • HypeLedger Fabric引入权限管理
  • 在架构设计上支持可插拔、可扩展
  • 是首个面向联盟链场景的开源项目

Fabric对比其他区块链系统

相同点

  • 分布式账本
  • 智能合约
  • 参与者管理交易

不同点

  • 私有化
  • 具有权限许可网络

特别之处

  • 多语言智能合约
  • 可插拔机制,多存储方式,多共识机制
  • 通道机制,允许一组参与者创建各自的交易账本

Fabric架构

成员管理

区块链服务

智能合约

智能合约是一组运行在验证节点上的去中心化交易程序。

在Fabric中智能合约被称为链码(chaincode),由外部应用程序(比如网页、APP)与分布式账本进行交互。

应用编程接口

应用编程接口是二进制码在机器层面相互交互的接口。

应用编程接口提供SDK(开发工具包)和CLI(命令行)两种方式供开发人员使用区块链的各种服务。Fabric提供了一套易用、可灵活扩展的API接口。用户可以非常方便地使用SDK和CLI对分布式账本进行查询、更新。

事件机制

点对点网络

点对点网络是区块链的网络特征,Fabric作为联盟链,其点对点网络与公链的主要区别在于其点对点网络间通信存在认证机制,只有联盟内的经过验证的节点才能互相通信。

核心概念

账本

账本是Fabric对区块链结构的延伸,所以Fabric账本包含两部分,世界状态和区块链。

链码

智能合约在Fabric中也被称为链码(chaincode),Fabric项目中的链码包括用户链码和系统链码两种。

通道

Fabric的通道是两个或多个特定网络成员之间通信的专用“子网‘,用于进行私有和机密的交易。

组织

组织(Organization)也被称为“成员”,是现实企业、机构等实体在Fabric中的映射,一个组织应包含CA、Peer。

排序服务

背书策略

背书是指特定节点执行链码交易并返回一个提案响应给客户端应用的过程。

MSP

成员服务提供者MSP是Fabric用于颁发证书和验证身份的一组可插拔的加密机制和协议。

私有数据集的组成与模式

私有数据集可以让通道上的一组组织对其他组织保持数据私有,私有数据集运行通道上定义的组织子集可以背书、提交、查询私有数据,而无需创建单独的通道。

核心组件

网络模块

网络模块用于定义Fabric网络拓扑、提供P2P网络支持。

链码模块

应用层的智能合约执行,需要依赖底层链码服务的实现。

共识模块

共识服务是区块链的核心组件,需要确保区块里面每一个交易数据的有效性和有序性,网络上不同节点之间数据的一致性。

账本模块

账本管理

账本数据结构

Fabric的账本数据结构分为:

  1. 区块链数据(Blockchain Data)
  2. 状态数据(State Database)
  3. 索引数据(Index Database)

区块链数据

世界状态

索引数据库

可插拔共识

Fabric提出了可插拔共识实现共识体系,其中从系统层面采用模块化共识,根据不同的业务来定制不同的共识算法,方便企业加入自己要的共识算法。

Kafka

Kafka构建可在系统或应用程序之间可靠获取数据实时流数据管道

Kafka构建转换或响应数据流实时流应用程序

Kafka作为一个运行在一个或多个数据中心服务器上的集群

Kafka集群以称为topics主题的类别存储记录流。

Kafka中每条记录都包含一个键,一个值和一个时间戳。

排序服务

Fabric的共识过程通过排序实现

Fabric排序服务依赖于确定性共识算法,即参与共识的Peer节点所验证的区块都是最终且正确的,不会出现分叉的现象。

Fabric排序有Raft、Kafka、Solo三种实现方式

Kafka是一个崩溃容错(简称CFT)的实现,Kafka利用一个ZooKeeper进行管理

多链

多链由多个通道、多个共享账本、多个Peer节点组成,不同链可以将参与者的数据和链码进行隔离。

多通道

多通道即Fabric网络中包含多个通道,多个Peer节点加入不同的应用通道实现多个账本。

数据分发

Gossip数据分发协议

Gossip数据分发协议是一种安全、可靠、可拓展的数据分发协议用来保证数据的一致性和完整性。

通信方式

Peer节点基于gossip的数据广播操作接收通道中其他节点的信息,并将这些信息随机发送给通道上的其他节点。

PUSH

PULL

PUSH/PULL

优点

扩展性

一致性收敛

容错

简单

去中心化

缺点

消息冗余

消息延迟

私有数据分发协议

私有数据允许在通道上定义的组织子集可以背书、提交或查询私有数据,而无需创建单独的通道,降低了实现私有数据的管理开销。

辅助分发

为了辅助分发,在集合定义中的maxPeerCount和RequiredPeerCount属性控制了在背书的时候分发的数量。

尝试会持续一个可配置的时间长度,在时间内可以通过节点配置文件core.yaml中的属性peer.gpssip.pvtData.pullRetryThreshold进行配置。

使用pullRetryThreshold的时候需要考虑的问题:

主节点选举机制

主节点的选举机制用于在每一个组织中选举出一个用于链接排序服务和开始分发新区块的节点。

主节点选举使得系统可以有效地利用排序服务的带宽。

模式

以选举模式进行归类

静态模式

系统管理员手动配置一个节点为组织的主节点。

动态模式

组织中的节点自己选举出一个主节点。

锚节点同步机制

gossip利用锚节点来保证不同组织间的互相通信,通道配置中至少有一个锚节点且不一定是主节点。

一个组织中有一个节点连接到了锚节点,锚节点就可以获取通道中所有节点的信息。

节点类型

对等节点

对等(Peer)节点是参与交易的主体,代表了每个参与到链上的成员,负责共识环节中的执行智能合约。

对等(Peer)节点包含两种类型的节点,背书节点(Endorser)和提交节点(Committer)。

提交节点

通道中的每个对等节点都是一个提交节点,提交(Committer)节点又称为记账节点,负责验证从排序服务节点接收的区块里的交易,然后将块提交(写入/追加)到其通道账本的副本。

提交节点使用基于Gossip的P2P数据分发,节点会定期跟其他节点交换信息。

背书节点

具有智能合约的每个对等节点都可以是背书节点。

背书(Endorser)节点在接收到客户端的交易提案(Transaction Proposal)后,会验证交易签名,模拟执行交易,并且对结果执行签名背书,然后把经过背书的交易发送回客户端。

领导节点

领导(Leader)节点又称为主节点,主节点负责和排序服务节点(Orderer)通信,从排序服务节点处获取最新的区块并在组织内部同步。

排序节点

功能

排序服务节点(Orderer),主体功能便是对交易排序从而保证各Peer节点上的数据的一致性,也包含了ACL进行访问控制。

工作流程

交易模型

交易生命周期

  • 执行:交易(通过智能合约)以任意顺序执行,甚至可以并行执行。
  • 排序:交易通过背书策略扩散到Fabric网络中,所有节点被按顺序推向Kafka集群中的topic的过程。
  • 验证:每个节点验证并按顺序执行交易,最终更新账本。

交易的执行和账本的更新拆分的好处:

  • 链码不必开放给所有的节点,提升系统的性能
  • 交易可以在排序之前执行,提高系统吞吐量
  • Fabric可以使用非确定性的链码,提高系统的灵活性

交易流程图

发起交易

  • 定义网络
  • 创建通道
  • 完成组织的注册和登记并且拿到加密材料
  • 链码实例化
  • 设置背书策略

验证签名

背书节点对提案进行验证,验证内容包括:

  • 交易提案格式
  • 验证重复提交
  • 验证签名有效
  • 验证发起者权限

执行交易

检查提案响应

应用程序验证背书节点的签名,并比较这些提案响应,以确定其是否相同。

背书结果打包

应用程序将交易提案和“交易消息”中的交易响应“广播”给排序服务。

验证和提交交易

账本更新

每个Peer节点都将区块追加到通道的链上,对于每个有效的交易,写集都提交到当前状态数据库。

相关文章:

10 Hyperledger Fabric 介绍

简介 HypeLedger(超级账本)是由Linux基金会2015年创建的首个面向企业应用场景的开源分布式账本平台。 HypeLedger Fabric是HypeLedger种的区块链项目之一HypeLedger Fabric引入权限管理在架构设计上支持可插拔、可扩展是首个面向联盟链场景的开源项目 …...

Word 中实现方框内点击自动打 √ ☑

注: 本文为 “Word 中方框内点击打 √ ☑ / 打 ☒” 相关文章合辑。 对第一篇增加了打叉部分,第二篇为第一篇中方法 5 “控件” 实现的详解。 在 Word 方框内打 √ 的 6 种技巧 2020-03-09 12:38 使用 Word 制作一些调查表、检查表等,通常…...

噪声算法 纹理

噪声是一种程序生成的随机或伪随机数据,在图形学中常用来创建各种自然现象和复杂纹理效果。 它的本质是一种由数学算法公式生成的有规则性或可控的随机数据。 通过噪声算法生成的随机数据具有以下特点: 随机性:噪声数据本质上是随机的&#…...

hexo + Butterfly搭建博客

Hexo‌是一个基于Node.js的静态网站生成器,主要用于快速搭建博客和个人网站。它使用Markdown语法编写文章,能够迅速生成静态页面并部署到服务器上。 配置node 使用nvm安装node(v16.13.2)后配置镜像 安装并使用node: nvm install 16.13.2 n…...

05.KNN算法总结

KNN算法总结 1 k近邻算法优缺点汇总 优点: 简单有效重新训练的代价低适合类域交叉样本 KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适…...

CentOS 7 搭建lsyncd实现文件实时同步 —— 筑梦之路

在 CentOS 7 上搭建 lsyncd(Live Syncing Daemon)以实现文件的实时同步,可以按照以下步骤进行操作。lsyncd 是一个基于 inotify 的轻量级实时同步工具,支持本地和远程同步。以下是详细的安装和配置步骤: 1. 系统准备 …...

java定时任务备份数据库

文章目录 前言一、定时任务备份二、分享两个windows运行项目脚本总结 前言 数据库备份 程序中数据库备份可以有效避免因为意外,导致数据丢失,因此数据备份显得尤为重要。 一、定时任务备份 定时任务类,要在配置类或启动类开启 EnableScheduling Data Sl4j Servic…...

Vue.js 传递路由参数和查询参数

Vue.js 传递路由参数和查询参数 在 Vue.js 开发中,Vue Router 提供了灵活的方式来处理路由参数和查询参数,使得组件能够根据不同的路径或查询条件渲染相应的内容。 路由参数 路由参数(也称为路径参数)是 URL 路径的一部分&…...

2025数学建模美赛|F题成品论文

国家安全政策与网络安全 摘要 随着互联网技术的迅猛发展,网络犯罪问题已成为全球网络安全中的重要研究课题,且网络犯罪的形式和影响日益复杂和严重。本文针对网络犯罪中的问题,基于多元回归分析和差异中的差异(DiD)思…...

私有包上传maven私有仓库nexus-2.9.2

一、上传 二、获取相应文件 三、最后修改自己的pom文件...

企业信息化4:免费开源的财务管理系统

前言: 一个完整的财务管理系统不局限于传统的记账和核算工具,而是一整套包含了公司财务战略规划制订、编制各种财务计划、预算管理、资金管理、资产管理、税务管理的完整解决方案,从而实现对公司整体经营状况进行财务分析并定期汇报&#xff…...

PyCharm配置Python环境

1、打开PyCharm项目 可以从File-->Open-->选择你的项目路径-->OK,或者直接点击Open,找到项目路径-->OK,如图所示(点击Ok后可能有下面的弹窗,选择“Trust Project”即可,然后选择“New Window”打开项目) …...

蓝桥杯3522 互质数的个数 | 数论

题目传送门 首先根据a^b得出需要使用欧拉函数φ,根据欧拉函数的性质: φ ( a b ) a b − 1 ∗ φ ( a ) φ ( n ) n ∗ ( 1 − 1 / p 1 ) ∗ ( 1 − 1 / p 2 ) ∗ . . . ∗ ( 1 − 1 / p k ) ,其中 p i 为 n 的质因数 φ(a^b)a^{b-1}*φ(…...

Effective C++ 规则49:了解 new-handler 的行为

1、背景 在 C 中,new 运算符用于动态分配内存。然而,当内存分配失败时,程序默认会抛出一个 std::bad_alloc 异常。为了更灵活地处理这种情况,C 提供了一种机制,允许开发者自定义内存分配失败时的行为。这就是 new-han…...

头像生成小程序搭建(免费分享)

如下图为小程序页面的基本效果&#xff0c;下面将介绍该小程序的功能 页面template代码如下&#xff1a; <template><view class"avatar-containner"><block v-if"!showCropper"><image class"pageback" src"../../s…...

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍)

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09; 目录 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09;DDPM 原理图Stable Diffusion 原理Stable Diffusion的原理解释Stable Diffusion 和 Diffus…...

MySQL 基础学习(2): INSERT 操作

在这篇文章中&#xff0c;我们将专注于 MySQL 中的 INSERT 操作&#xff0c;深入了解如何高效地向表中插入数据&#xff0c;并探索插入操作中的一些常见错误与解决方案。 一、基础 INSERT 语法 在 MySQL 中&#xff0c;INSERT 操作用于向表中插入新记录&#xff0c;基本语法如…...

openstack 客户端命令行简介

openstack 客户端命令行简介 基本用法常用命令分类**身份认证&#xff08;Keystone&#xff09;**常用命令 **计算服务&#xff08;Nova&#xff09;**常用命令&#xff1a; **网络服务&#xff08;Neutron&#xff09;**常用命令&#xff1a; **块存储服务&#xff08;Cinder&…...

Oracle查看数据库表空间使用情况

Oracle RAC环境查看表空间使用情况 查询字段释义&#xff1a; NEED_ADDFILE,--是否需增加表空间文件 TABLESPACE_NAME,--表空间名称 TABLESPACE_FILE_COUNT, --表空间当前数据文件数量 NOW_FILEENABLE_BLOCKS,--表空间文件当前数据块数 NOW_FILEENABLE_BYTES_GB,--表空间文件当…...

[护网杯 2018]easy_tornado1

题目 、 依次点击文件查看 /flag.txt flag in /fllllllllllllag /welcome.txt render /hints.txt md5(cookie_secretmd5(filename)) tornado模板注入 报cookie /error?msg{{handler.settings}} cookie_secret: 6647062b-e68d-4406-90d3-06e307fa955c} 使用python脚本…...

关于java实现word(docx、doc)转html的解决方案

最近在研究一些关于文档转换格式的方法&#xff0c;因为需要用在开发的一个项目上&#xff0c;所以投入了一些时间&#xff0c;给大家聊下这块逻辑及解决方案。 一、关于word转换html大致都有哪些方法&#xff1f; &#xff08;1&#xff09;使用 Microsoft Word 导出 其实该…...

【8】思科IOS AP升级操作

1.概述 本文主要针对思科AP的升级操作进行记录,思科的AP目前主要分为IOS和COS AP,IOS AP是我们常见的AP3502/AP1602/AP2702等等型号的AP,而COS AP是AP2802/3802等型号的AP。当然这里所指的都是一些室内AP,如AP1572等室外AP也同样适用。本文先对IOS AP的升级操作进行总结,…...

【ROS2】RViz2界面类 VisualizationFrame 详解

1、简述 VisualizationFrame 继承自 QMainWindow 和 WindowManagerInterface; 窗口顶部是常规布局:菜单栏 和 工具栏 窗口中心是 RenderPanel,用来渲染3D画面 周围是dock区域,包括:DisplaysPanel、ViewsPanel、TimePanel、SelectionPanel 和 ToolPropertiesPanel Windo…...

2025年01月24日Github流行趋势

项目名称&#xff1a;shadPS4 项目地址url&#xff1a;https://github.com/shadps4-emu/shadPS4项目语言&#xff1a;C历史star数&#xff1a;15576今日star数&#xff1a;653项目维护者&#xff1a;georgemoralis, psucien, squidbus, raphaelthegreat, DanielSvoboda项目简介…...

Gradle buildSrc模块详解:集中管理构建逻辑的利器

文章目录 buildSrc模块二 buildSrc的使命三 如何使用buildSrc1. 创建目录结构2. 配置buildSrc的构建脚本3. 编写共享逻辑4. 在模块中引用 四 典型使用场景1. 统一依赖版本管理2. 自定义Gradle任务 3. 封装通用插件4. 扩展Gradle API 五 注意事项六 与复合构建&#xff08;Compo…...

【Airsim 仿真】查找配置文件 settings json 的路径优先级

Airsim 查找配置文件 settings.json 的路径优先级 参考官方文档 Settings - AirSim 文件格式要求 settings.json 文件采用常规的 JSON 格式。在首次启动时&#xff0c;AirSim 会在用户的主文件夹中创建一个没有设置的 settings.json 文件&#xff08;待测试&#xff09;。为…...

【FreeRTOS 教程 四】队列创建与发布项目到队列

目录 一、FreeRTOS队列&#xff1a; &#xff08;1&#xff09;队列介绍&#xff1a; &#xff08;2&#xff09;用户模型说明&#xff1a; &#xff08;3&#xff09;阻塞队列&#xff1a; 二、队列管理 API&#xff1a; &#xff08;1&#xff09;uxQueueMessagesWaiti…...

STM32项目分享:智能厨房安全检测系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; STM32智能厨房安全检测系统 &#xff08;资料分…...

2025美赛数学建模MCM/ICM选题建议与分析,思路+模型+代码

2025美赛数学建模MCM/ICM选题建议与分析,思路模型代码&#xff0c;详细更新见文末名片 一、问题A&#xff1a;测试时间&#xff1a;楼梯的恒定磨损&#xff08;Archaeological Modeling&#xff09; 适合专业&#xff1a;考古学、历史学、数学、机械工程 难度&#xff1a;中等…...

高并发问题的多维度解决之道

‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​​​‌​‌​‍‌​​‌​​‌​‍‌‌​​‌​‌​‍‌​‌​‌‌​​‍‌​‌​‌​​​‍‌​‌​‌​‌​‍‌​‌‌​​‌​‍‌​‌‌​​​​‍‌‌​​‌‌‌‌‍‌‌​​‌​‌‌‍‌​​​‌‌​​‍‌​​‌‌‌​​‍‌…...