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

【跟小嘉学习区块链】二、Hyperledger Fabric 架构详解

系列文章目录

【跟小嘉学习区块链】一、区块链基础知识与关键技术解析
【跟小嘉学习区块链】一、区块链基础知识与关键技术解析

文章目录

  • 系列文章目录
    • @[TOC](文章目录)
  • 前言
  • 一、Hyperledger 社区
    • 1.1、Hyperledger(面向企业的分布式账本)
    • 1.2、Hyperledger社区组织结构
  • 二、Hyperledger 项目介绍
    • 2.1、Hyperledger 项目介绍
      • 2.1.1、Hyperledger 项目介绍
      • 2.1.2、Hyperledger 顶级项目介绍
  • 三、社区工作流
    • 3.1、Linux Foundation ID
    • 3.2、Jira
    • 3.3、Gerrit
    • 3.4、RocketChat
  • 四、开发环境
  • 五、Hyperledger Fabric
    • 5.1、Hyperledger Fabric 介绍
    • 5.2、Hyperledger Fabric 应用场景
    • 5.3、Hyperledger Fabric 架构
      • 5.3.1、Hyperledger Fabric 名词解释
      • 5.3.2、基础架构
      • 5.3.3、Fabric 1.x 架构优势
      • 5.3.4、交易流程

前言

本系列章节主要讲解 Hyperledger 社区、Hyperledger项目、Hyperledger 社区工作流程、Hyperledger Fabric 架构详解

[参考资料]
Fabric技术概览
Fabric智能合约
Fabric架构初探
Fabric官方中文文档
Fabric相关博客


一、Hyperledger 社区

1.1、Hyperledger(面向企业的分布式账本)

超级账本(Hyperledger) 是首个面向企业应用场景的分布式账本平台,包括了IBM、Intel、Cisco、DAH、摩根大通、R3等在内的众多科技和金融巨头的贡献参与,在银行、供应链等领域得到了广泛的关注和发展,目前已经拥有了超过200家企业成员

1.2、Hyperledger社区组织结构

  • 技术委员会(Technical Steering Committee,TSC)
  • 管理董事会(Govering Board)
  • Linux基金会(Linux Foundation)

二、Hyperledger 项目介绍

2.1、Hyperledger 项目介绍

2.1.1、Hyperledger 项目介绍

2015年12月,由Linux基金会牵头,30多家初始企业成员共同宣布 Hyperledger 联合项目成立。成立之初,IBM贡献了4万多行已有多 OpenBlockchain 代码,Digital Asset 则贡献了企业和开发者相关资源,R3贡献了新的金融交易架构,Intel 也贡献了分布式账本相关的代码

作为一个联合项目,旗下由面向不同的场景的子项目构成(8大项目,fabric、iroha、 BlockChain Exploror、Cello、Indy、Composer、Burrow),所有项目都遵循 Apache V2 许可,并约定共同遵守如下的基本原则

  • 重视模块化设计:包括交易、合同、一致性、身份、存储等技术场景
  • 重视代码可读性:保障新功能和模块都可以很容易添加和扩展
  • 可持续的演化路线:随着需求的深入和更多的应用场景,不断增加和演化新的项目

2.1.2、Hyperledger 顶级项目介绍

  • Hyperledger Fabric 是一个带有准入机制的企业级联盟链项目,它的前身就是IBM贡献的 OpenBlockChain。
  • Hyperledger Sawtooth 是一个创建、部署和运行分布式账本的模块化平台,它包含一个新的共识算法,叫做经历时间证明(Proof of Elapsed Time, PoET),面向大型分布式验证器群,消耗最少的资源;
  • Hyperledger Iroha 是为了将分布式账本技术简单容易地与基础架构型项目集成而设计的一个区块链框架项目
  • Hyperledger BlockChain Exploror:区块链浏览器
  • Hyperledger Cello:提供按需部署的功能,可以将区块链部署在各种裸机、虚拟机、容器等环境中,该项目起初是由IBM发起,目前等到了Soramitsu、华为和 Intel 的赞助
  • Hyperledger Indy 是特别为去中心化的身份而建立的一种分布式账本。它提供了基于区块链或者其他分布式账本互操作来创建和使用独立数据身份的工具、代码库和可以重用的组件
  • Hyperledger Composer
  • Hyperledger Burrow 是一个支持许可的智能合约机,提供了一个模块化的区块链客户端,带一个经许可的智能合约解释器,它部分建立在以太坊虚拟机(EVM) 规范的基础上

三、社区工作流

在社区开发过程中,需要了解 Linux Foundation ID、Jira(任务和进度管理)、Gerrit(代码和Review管理)、RocketChat(在线沟通)等工具使用

3.1、Linux Foundation ID

超级账本项目受到 Linux 基金会等支持,采用 Linux Foundation ID (LF ID)作为社区等唯一ID。

3.2、Jira

Jira 是一套任务管理和事项跟踪的追踪平台,提供 Web 操作界面,实用十分方便。

3.3、Gerrit

Gerrit 是一个负责代码协同的开源项目,很多企业和团队都使用它负责代码仓库都管理和代码的审阅工作。

3.4、RocketChat

RocketChat 是一个开源的沟通工具

四、开发环境

  • git
  • golang
  • docker

五、Hyperledger Fabric

5.1、Hyperledger Fabric 介绍

Hyperledger Fabric 是一个提供分布式账本解决方案的平台。Hyperledger Fabric 由模块化架构支撑,并具备极佳的保密性、可伸缩性、灵活性和可扩展性。

Hyperledger Fabric 被设计成支持不同的模块组件直接拔插启,并能适应在经济生态系统中错综复杂的各种场景。

5.2、Hyperledger Fabric 应用场景

  • 商业积分,利用区块链多方发行扩大参与者、使积分自由流通,吸引用户多次消费
  • 跨境支付与结算,减少机构之间的信任成本,将低手续费;
  • 数据存证,版权保护、鉴别数据真伪;

5.3、Hyperledger Fabric 架构

5.3.1、Hyperledger Fabric 名词解释

  • 成员服务(Membership Services):成员服务用来在许可的区块链网络上认证、授权和管理身份
  • 排序或共识服务(Order Service),确认交易并将交易排序放入 block;
  • 账本(Ledger),交易状态的持久化
  • 节点(Node),一个网络实体用来维护 Ledger,执行合约的容器
  • SDk 用来和区块链网络进行交互;

5.3.2、基础架构

在这里插入图片描述
在这里插入图片描述

5.3.3、Fabric 1.x 架构优势

  • 链码(Chaincode)执行信任的可伸缩性,将用户自己开发的链码(Chaincode)和系统提供的Order 服务拆分,用户开发的链码(Chaincode)和系统提供的Order服务不再是一一对应的关系,Order也可以适当容忍错误的出现,增加了系统的鲁棒性
  • 性能提升,拆分链码(Chaincode)和Order的串行执行,在原有架构中,当链码(Chaincode)执行非常耗时的时候,Order将会处于闲置状态,不利于提高系统的吞吐量,拆分以后链码(Chaincode)和Order可以并行执行发送交易
  • 共识机制可以单独实现(order)

5.3.4、交易流程

  • 应用向单个或多个Peer节点放交易的背书请求;
  • 背书节点执行 ChainCode,但并不将结果提交到本地账本,知识将结果返回给应用
  • 应用收集背书节点的结果后,将结果播给Orderer
  • Orderer执行共识过程,并成Block,通过消息通道批量的将 block 发布给 Peer 节点
  • 各个Peer节点验证交易,并提交到本地账本中

相关文章:

【跟小嘉学习区块链】二、Hyperledger Fabric 架构详解

系列文章目录 【跟小嘉学习区块链】一、区块链基础知识与关键技术解析 【跟小嘉学习区块链】一、区块链基础知识与关键技术解析 文章目录 系列文章目录[TOC](文章目录) 前言一、Hyperledger 社区1.1、Hyperledger(面向企业的分布式账本)1.2、Hyperledger社区组织结构 二、Hype…...

springboot下spring方式实现Websocket并设置session时间

概述 springboot实现websocket有4种方式 servlet&#xff0c;spring&#xff0c;netty&#xff0c;stomp 使用下来spring方式是最简单的. springboot版本&#xff1a;3.1.2 jdk&#xff1a;17 当前依赖版本 <dependency><groupId>org.springframework.boot<…...

LeetCode算法二叉树—相同的树

目录 100. 相同的树 - 力扣&#xff08;LeetCode&#xff09; 代码&#xff1a; 运行结果&#xff1a; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是…...

搭建Flink集群、集群HA高可用以及配置历史服务器

Flink集群搭建 Flink集群搭建集群规划下载并解压安装包修改集群配置分发安装目录启动集群访问Web UI Flink集群HA高可用概述集群规划配置flink配置master、workers配置ZK分发安装目录启动HA集群测试 Flink参数配置配置历史服务器概述配置启动、停止历史服务器提交一个Job任务查…...

vscode终端中打不开conda虚拟包管理

今天&#xff0c;想着将之前鸽的Unet网络模型给实现一下&#xff0c;结果发现&#xff0c;在vscode中运行python脚本&#xff0c;显示没有这包&#xff0c;没有那包。但是在其他的ipynb中是有的&#xff0c;感觉很奇怪。我检查了一下python版本&#xff0c;发现不是我深度学习的…...

【音视频】MP4封装格式

基本概念 使用MP4box.js查看MP4内部组成结构 整体结构 数据索引&#xff08;moov&#xff09;数据流包&#xff08;mdat&#xff09; 各个包的位置&#xff0c;大小&#xff0c;信息&#xff0c;时间戳&#xff0c;编码方式等全在数据索引 数据流包只有纯二进制码流数据 数据…...

环境-使用vagrant快速创建linux虚拟机

1.下载软件 虚拟机 Oracle VM VirtualBox 镜像 Vagrant by HashiCorp (vagrantup.com) 如果下载慢&#xff0c;可以复制下载链接&#xff0c;使用迅雷下载 2.安装 根据提示点击下一步即可&#xff0c;建议安装到空间较大的非系统盘。 打开 window cmd 窗口&#xff0c;…...

10.1网站编写(Tomcat和servlet基础)

一.Tomcat: 1.Tomcat是java写的,运行时需要依赖jre,所以要装jdk. 2.建议配置好环境变量. 3.默认端口号8080(业务端口)可能会被占用,建议改一下(本人改成了9999). 4.另一个默认端口是8005(管理端口). 二Servlet基础(编写一个hello world代码): 整体分为7个步骤,分别是创建…...

10CQRS

本系列包含以下文章&#xff1a; DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库实体与值对象应用服务与领域服务领域事件CQRS&#xff08;本文&#xff09; 案例项目介绍 # 既然DDD是“领域”驱动&#xff0c;那么我们便不能抛开业务而只讲技术&…...

DAZ To UMA⭐一.DAZ简单使用教程

文章目录 &#x1f7e5; DAZ快捷键&#x1f7e7; DAZ界面介绍 &#x1f7e5; DAZ快捷键 移动物体:ctrlalt鼠标左键 旋转物体:ctrlalt鼠标右键 导入模型:双击左侧模型UI &#x1f7e7; DAZ界面介绍 Files:显示全部文件 Products:显示全部产品 Figures:安装的全部人物 Wardrobe…...

面试题 —— Java集合篇(23题)

文章目录 1.Java中常见集合有哪些 &#xff1f;2. 说说你对Java集合是怎么理解的&#xff1f;3.请你说一下List&#xff0c;Set&#xff0c;Map三者的特点是 &#xff1f;4.在实际开发过程中如何更好的选择集合 &#xff1f;5. ArrayList和Vector区别 &#xff1f;6. ArrayList…...

SpringBoot2.7.14整合Swagger3.0的详细步骤及容易踩坑的地方

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Sp…...

题解:ABC321D - Set Menu

题解&#xff1a;ABC321D - Set Menu 题目 链接&#xff1a;Atcoder。 链接&#xff1a;洛谷。 难度 算法难度&#xff1a;B。 思维难度&#xff1a;C。 调码难度&#xff1a;B。 综合评价&#xff1a;见洛谷链接。 算法 枚举二分查找。 思路 先对b升序排序&#x…...

什么是Progressive Web App(PWA)?它们有哪些特点?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 渐进式Web App简介⭐ PWAs的主要特点⭐ 总结⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入…...

MySQL的高级SQL语句

目录 一、高级SQL语句 1、select 查询表中一个或多个字段的数据 2、distinct 不显示重复的数据记录 3、where 有条件查询 4、and与or 且与或 5、in 显示在某个范围值内 的字段的信息 6、between 显示两个值范围内的数据记录 7、order by 对字…...

基于人脸5个关键点的人脸对齐(人脸纠正)

摘要&#xff1a;人脸检测模型输出人脸目标框坐标和5个人脸关键点&#xff0c;在进行人脸比对前&#xff0c;需要对检测得到的人脸框进行对齐&#xff08;纠正&#xff09;&#xff0c;本文将通过5个人脸关键点信息对人脸就行对齐&#xff08;纠正&#xff09;。 一、输入图像…...

vue3中两个el-select下拉框选项相互影响

vue3中两个el-select下拉框选项相互影响 1、开发需求2、代码2.1 定义hooks文件2.2 在组件中使用 1、开发需求 如图所示&#xff0c;在项目开发过程中&#xff0c;遇到这样一个需求&#xff0c;常规时段中选中的月份在高峰时段中是禁止选择的状态&#xff0c;反之亦然。 2、代…...

博弈论——反应函数

反应函数 1 引言 谢老师的《经济博弈论》书中对反应函数并没有给出一般笼统的定义&#xff0c;而是将其应用与古诺模型并给出了相关解释&#xff1a;反应函数是指在无限策略的古诺博弈模型中&#xff0c;博弈方的策略有无限多种&#xff0c;因此各个博弈方的最佳对策也有无限…...

UE5读取json文件

一、下载插件 在工程中启用 二、定义读取外部json文件的函数&#xff0c;参考我之前的文章 ue5读取外部文件_艺菲的博客-CSDN博客 三、读取文件并解析为json对象 这里Load Text就是自己定义的函数&#xff0c;ResourceBundle为一个字符串常量&#xff0c;通常是读取的文件夹…...

Vue中的插槽--组件复用,内容自定义

插槽 文章目录 插槽插槽-默认插槽插槽-后备内容&#xff08;设置默认值&#xff09;插槽-具名插槽插槽–作用域插槽 插槽-默认插槽 作用&#xff1a;让组件内部的一些结构支持自定义 需求&#xff1a;要在页面中显示一个对话框,封装成一个组件&#xff08;对话框有很多功能是类…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...