【跟小嘉学习区块链】二、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、交易流程
文章目录
- 系列文章目录
- @[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,spring,netty,stomp 使用下来spring方式是最简单的. springboot版本:3.1.2 jdk:17 当前依赖版本 <dependency><groupId>org.springframework.boot<…...
LeetCode算法二叉树—相同的树
目录 100. 相同的树 - 力扣(LeetCode) 代码: 运行结果: 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是…...
搭建Flink集群、集群HA高可用以及配置历史服务器
Flink集群搭建 Flink集群搭建集群规划下载并解压安装包修改集群配置分发安装目录启动集群访问Web UI Flink集群HA高可用概述集群规划配置flink配置master、workers配置ZK分发安装目录启动HA集群测试 Flink参数配置配置历史服务器概述配置启动、停止历史服务器提交一个Job任务查…...
vscode终端中打不开conda虚拟包管理
今天,想着将之前鸽的Unet网络模型给实现一下,结果发现,在vscode中运行python脚本,显示没有这包,没有那包。但是在其他的ipynb中是有的,感觉很奇怪。我检查了一下python版本,发现不是我深度学习的…...
【音视频】MP4封装格式
基本概念 使用MP4box.js查看MP4内部组成结构 整体结构 数据索引(moov)数据流包(mdat) 各个包的位置,大小,信息,时间戳,编码方式等全在数据索引 数据流包只有纯二进制码流数据 数据…...
环境-使用vagrant快速创建linux虚拟机
1.下载软件 虚拟机 Oracle VM VirtualBox 镜像 Vagrant by HashiCorp (vagrantup.com) 如果下载慢,可以复制下载链接,使用迅雷下载 2.安装 根据提示点击下一步即可,建议安装到空间较大的非系统盘。 打开 window cmd 窗口,…...
10.1网站编写(Tomcat和servlet基础)
一.Tomcat: 1.Tomcat是java写的,运行时需要依赖jre,所以要装jdk. 2.建议配置好环境变量. 3.默认端口号8080(业务端口)可能会被占用,建议改一下(本人改成了9999). 4.另一个默认端口是8005(管理端口). 二Servlet基础(编写一个hello world代码): 整体分为7个步骤,分别是创建…...
10CQRS
本系列包含以下文章: DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库实体与值对象应用服务与领域服务领域事件CQRS(本文) 案例项目介绍 # 既然DDD是“领域”驱动,那么我们便不能抛开业务而只讲技术&…...
DAZ To UMA⭐一.DAZ简单使用教程
文章目录 🟥 DAZ快捷键🟧 DAZ界面介绍 🟥 DAZ快捷键 移动物体:ctrlalt鼠标左键 旋转物体:ctrlalt鼠标右键 导入模型:双击左侧模型UI 🟧 DAZ界面介绍 Files:显示全部文件 Products:显示全部产品 Figures:安装的全部人物 Wardrobe…...
面试题 —— Java集合篇(23题)
文章目录 1.Java中常见集合有哪些 ?2. 说说你对Java集合是怎么理解的?3.请你说一下List,Set,Map三者的特点是 ?4.在实际开发过程中如何更好的选择集合 ?5. ArrayList和Vector区别 ?6. ArrayList…...
SpringBoot2.7.14整合Swagger3.0的详细步骤及容易踩坑的地方
🧑💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Sp…...
题解:ABC321D - Set Menu
题解:ABC321D - Set Menu 题目 链接:Atcoder。 链接:洛谷。 难度 算法难度:B。 思维难度:C。 调码难度:B。 综合评价:见洛谷链接。 算法 枚举二分查找。 思路 先对b升序排序&#x…...
什么是Progressive Web App(PWA)?它们有哪些特点?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 渐进式Web App简介⭐ PWAs的主要特点⭐ 总结⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入…...
MySQL的高级SQL语句
目录 一、高级SQL语句 1、select 查询表中一个或多个字段的数据 2、distinct 不显示重复的数据记录 3、where 有条件查询 4、and与or 且与或 5、in 显示在某个范围值内 的字段的信息 6、between 显示两个值范围内的数据记录 7、order by 对字…...
基于人脸5个关键点的人脸对齐(人脸纠正)
摘要:人脸检测模型输出人脸目标框坐标和5个人脸关键点,在进行人脸比对前,需要对检测得到的人脸框进行对齐(纠正),本文将通过5个人脸关键点信息对人脸就行对齐(纠正)。 一、输入图像…...
vue3中两个el-select下拉框选项相互影响
vue3中两个el-select下拉框选项相互影响 1、开发需求2、代码2.1 定义hooks文件2.2 在组件中使用 1、开发需求 如图所示,在项目开发过程中,遇到这样一个需求,常规时段中选中的月份在高峰时段中是禁止选择的状态,反之亦然。 2、代…...
博弈论——反应函数
反应函数 1 引言 谢老师的《经济博弈论》书中对反应函数并没有给出一般笼统的定义,而是将其应用与古诺模型并给出了相关解释:反应函数是指在无限策略的古诺博弈模型中,博弈方的策略有无限多种,因此各个博弈方的最佳对策也有无限…...
UE5读取json文件
一、下载插件 在工程中启用 二、定义读取外部json文件的函数,参考我之前的文章 ue5读取外部文件_艺菲的博客-CSDN博客 三、读取文件并解析为json对象 这里Load Text就是自己定义的函数,ResourceBundle为一个字符串常量,通常是读取的文件夹…...
Vue中的插槽--组件复用,内容自定义
插槽 文章目录 插槽插槽-默认插槽插槽-后备内容(设置默认值)插槽-具名插槽插槽–作用域插槽 插槽-默认插槽 作用:让组件内部的一些结构支持自定义 需求:要在页面中显示一个对话框,封装成一个组件(对话框有很多功能是类…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
