Hyperledger Fabric 架构概览

fabric 版本 v2.4.1

超级账本 Fabric 自诞生以来已经发布了两个主要版本:1.0 系列版本(2017 年 7 月)和 2.0 系列版本(2020 年 1 月)。2016 年 9 月,Fabric 发布了 v0.6.0 预览版本,通过这一版本社区收集了大量来自实践的反馈和建议,主要集中在性能、安全、可扩展性等方面。2017 年 7 月推出 1.0 系列版本,这一版本重新设计了整体架构,改善了可扩展性和安全性,消除了性能瓶颈,首次实现每秒数千次的吞吐性能。最新的 2.0 系列版本则进一步提高了可扩展性和安全性。重新设计了链码生命周期管理,支持外部链码来解耦 Peer 和链码;同时扩展了共识机制,能够更好地支持 Raft 等扩展性更优的共识算法。


核心特性

目前,为了实现安全、可扩展、易管理的企业级分布式账本,Fabric 在架构设计上主要包括了如下特性:

●采用 “背书(Endorse)-> 排序(Order)-> 提交(Commit)” 模型,解耦排序处理与其他逻辑,消除网络整体瓶颈。

●交易节点逻辑上分为背书节点(Endorser)、记账节点(Committer)等角色,允许根据负载情况调整部署。

●支持多通道特性,不同通道之间的账本数据彼此完全隔离。配合私密数据库和权限管理,实现细粒度的隐私保护。

●支持可拔插的架构,包括共识、权限管理、加解密、账本机制、链码执行等模块,支持多种实现和多种合约语言。

●支持运行时的管理接口,可以在线查询健康状态和系统的各项运行指标,实时变更日志级别等,方便运维管理。

●集成了身份证书管理服务,通过 Fabric CA 项目提供完整的证书签发和撤销等管理功能。


整体架构

超级账本 Fabric 的整体架构,包括应用、账本、链码、区块链结构、数据库、共识、权限管理、数字证书、网络层等多个组件。

其中,账本是最核心的资源,记录合约和交易数据,应用通过发起交易调用合约来向账本中记录数据。合约执行的逻辑通过链码来实现。多个节点共同组成网络,网络运行中发生的事件可以通过事件机制通知给应用甚至其他系统。权限管理则负责在整个过程中进行合适的访问控制。

账本实现依赖于核心的区块链结构、数据库存储、共识机制等技术;链码实现则依赖容器、状态机等技术;权限管理利用了已有的 PKI 体系、数字身份证书、加解密算法等诸多安全技术。

最底层由多个节点组成 P2P 网络,彼此通过 gRPC 通道进行交互,利用 Gossip 协议进行数据同步。层次化结构提高了架构的可扩展和可插拔性,底层开发者在二次开发时仅需修改相关的模块单元。


典型工作流程

根据交易生命周期各个阶段工作负载侧重不同的特点,Fabric 将网络内节点分为 CA 节点、Orderer(排序)节点和 Peer 节点三大类。Peer 节点在逻辑上全部对应通道内的记账节点,部分 Peer 节点还可兼任背书节点(Endorser)角色。这种角色分工,可以让不同类型节点专注处理自己所擅长的业务。

●客户端创建请求:客户端应用使用 SDK 与 Fabric 网络打交道。首先,客户端从 CA 获取合法的身份证书以便加入网络内的应用通道。发起正式交易前,需要先构造交易提案(Proposal)提交给 Endorser 进行背书。客户端收集到足够(背书策略决定)的背书支持后,可以利用背书构造一个合法的交易请求,发给 Orderer 进行排序处理。客户端还可以通过事件机制来监听网络中消息,获知交易是否被成功接收。

●Endorser 节点进行背书:主要提供供客户端调用,完成对交易提案的背书(目前主要是签名)处理。收到来自客户端的交易提案后,首先进行合法性和 ACL 权限检查,检查通过则模拟运行交易,对交易导致的状态变化(以读写集形式记录,包括所读状态的键和版本,所写状态的键值)进行背书,并返回结果给客户端。

●Committer 节点更新账本:负责维护区块链结构和数据库(包括状态数据库、历史数据库、索引数据库等)。该节点定期地从 Orderer 或领导节点获取排序后的批量交易区块结构,对这些交易进行落盘前的最终检查(包括交易消息结构、签名完整性、是否重复、读写集合版本是否匹配等)。检查通过后,将合法交易的执行结果写入账本,同时构造新的区块,更新区块中 BlockMetadata [2](TRANSACTIONS_FILTER)元数据,添加合法性标记。所有 Peer 都担任 Committer 角色。

●排序节点进行排序:Orderer 为网络中所有合法交易进行全局排序,并将排序后的一批交易组合生成区块结构。Orderer 不需要与交易内容打交道。

●CA 管理身份证书:参照 PKI 架构,负责网络中所有证书的管理(签发的、撤销等)。实现位于单独的 fabric-ca 项目中。CA 在签发证书后,自身并不参与网络中的交易过程。

经过这些步骤,网络中的交易得到共识并记录到账本中,任何节点都无法推翻或篡改交易历史。

fabric 区块链

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【uniapp】调用阿里云OCR图片识别文字:

文章目录 一、效果&#xff1a;二、实现&#xff1a; 一、效果&#xff1a; 二、实现&#xff1a; 【阿里官方】高精版OCR文字识别【最新版】-云市场-阿里云 <template><view class"container"><!-- 选择图片 --><button click"imageO…

JQuery异步加载表格选择记录

JQuery异步加载表格选择记录 JQuery操作表格 首先在页面中定义一个表格对象 <table id"insts" class"table"><thead><tr><th>列1</th><th>列2</th><th>例3</th><th></th></tr>…

Linux文件系统与日志分析

一、inode和block概述 文件数据包括元信息与实际数据 文件存储在硬盘上&#xff0c;硬盘最小存储单位是“扇区”&#xff0c;每个扇区存储512字节 元信息&#xff1a;每个文件的属性信息&#xff0c;比如&#xff1a;文件的大小&#xff0c;时间&#xff0c;类型&#xff0c…

Vue使用printJS导出网页为pdf、printJS导出pdf

先放几个参考链接 感谢&#xff01; Vue使用PrintJS实现页面打印功能_vue print.js 设置打印pdf的大小-CSDN博客 前台导出pdf经验汇总 &#xff08;html2canvas.js和浏览器自带的打印功能-print.js&#xff09;以及后台一些导出pdf的方法_iqc后台管理系统怎么做到导出pdf-CSD…

java导出word套打

这篇文档手把手教你完成导出word套打&#xff0c;有这个demo&#xff0c;其他word套打导出都通用。 1、主要依赖 <!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.0</ve…

ES-极客学习第二部分ES 入门

基本概念 索引、文档、节点、分片和API json 文档 文档的元数据 需要通过Kibana导入Sample Data的电商数据。具体参考“2.2节-Kibana的安装与界面快速浏览” 索引 kibana 管理ES索引 在系统中找到kibana配置文件&#xff08;我这里是etc/kibana/kibana.yml&#xff09; vim /…

YOLOv8改进 | 损失函数篇 | SlideLoss、FocalLoss分类损失函数助力细节涨点(全网最全)

一、本文介绍 本文给大家带来的是分类损失 SlideLoss、VFLoss、FocalLoss损失函数,我们之前看那的那些IoU都是边界框回归损失,和本文的修改内容并不冲突,所以大家可以知道损失函数分为两种一种是分类损失另一种是边界框回归损失,上一篇文章里面我们总结了过去百分之九十的…

ORACLE体系结构逻辑结构-表空间、段、区和数据块

实例 实例是指在内存中分配的一块共享内存区域&#xff08;SGA&#xff09;和一组后台进程&#xff08;或线程&#xff09;&#xff0c;它们用于访问和控制数据库。3实例是Oracle数据库的运行时环境&#xff0c;它是数据库的动态部分&#xff0c;它可以启动和关闭&#xff0c;…

树莓派3B+ /+ CSI摄像头 + FFmpeg + SRS 实现直播推流

简介&#xff1a; 手头有一个树莓派3B 和一块CSI摄像头&#xff0c;想要实现一个推拉流直播的效果。 所需材料&#xff1a;开发板&#xff08;我用的是树莓派3B&#xff09;、CIS摄像头、云服务器&#xff08;用来搭建SRS服务器&#xff09; 具体实现思路&#xff1a; 使用…

MyBatis-07

MyBatis高级拓展 将Mapper接口和Mapper.xml文件打包到同一地址下 &#xff08;在resources下创建相同的文件夹结构&#xff09; com/dc/mapper创建 多层结构 com.dc.mapper创建 一层结构 分页插件 //导入依赖 <dependency><groupId>com.github.pagehelper</gr…

Redis 过期删除策略

常见的三种过期删除策略&#xff1a; 定期删除&#xff1b;惰性删除&#xff1b;定时删除&#xff1b; 定期删除策略 每隔一段时间「随机」从数据库中取出一定数量的 key 进行检查&#xff0c;并删除其中的过期key。 定期删除的实现在 expire.c 文件下的 activeExpireCycle …

Unity 编辑器篇|(一)MenuItem菜单栏

目录 1.MenuItem 属性2.创建多级菜单3.创建带快捷键的菜单4.创建带快捷键的菜单5.检查菜单是否使用6.菜单排序7.扩展右键菜单7.1 Hierarchy 右键菜单7.2 Project 右键菜单7.3 Inspector 组件右键菜单 8. AddComponentMenu 特性9. ContextMenu 特性 添加组件右键菜单 1.MenuItem…

网页内容任君采撷-右键无法复制

CSDN一年一度的博客之星评选活动已经结束&#xff0c;刚好点击来看看学习一下大佬们的博客。 发现绝大部分的博主对于知识的公开度都是非常高的&#xff0c;当然除了收费的专栏外。 其中少部分博主对自己的博文设定了一定的操作&#xff0c;无法直接使用博文中的内容。 现在大…

vulhub中的Apache SSI 远程命令执行漏洞

Apache SSI 远程命令执行漏洞 1.cd到ssi-rce cd /opt/vulhub/httpd/ssi-rce/ 2.执行docker-compose up -d docker-compose up -d 3.查看靶场是否开启成功 dooker ps 拉取成功了 4.访问url 这里已经执行成功了&#xff0c;注意这里需要加入/upload.php 5.写入一句话木马 &…

【技术科普】什么是达芬奇架构?有什么优势?

芯片架构是指芯片设计的基本结构和组织方式&#xff0c;用于实现各种计算、存储和通信功能。芯片架构通常包括处理器核心、内存、输入输出接口等组成部分&#xff0c;这些部分的设计对芯片性能和功耗有着直接的影响&#xff0c;世界上主流的芯片架构主要包括x86、ARM、PowerPC和…

大创项目推荐 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

Nacos实战之配置中心与注册中心详解

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 ChatGPT体验地址 文章目录 前言注册中心Nacos 与 Eureka 区别 安装与运行WIN版Docker 版 父工程注册中心-服务提供方微服务 pom启动类yml参考 注册中心-服务调用方微服务pomyml 参考配置类…

Avalonia学习(二十一)-自定义界面演示

今天开始继续Avalonia练习。 本节&#xff1a;自定义界面 在网上看见一个博客&#xff0c;根据需要演示一下。 前台代码 <Window xmlns"https://github.com/avaloniaui"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:vm"using:…

vulhub中的Apache HTTPD 换行解析漏洞(CVE-2017-15715)详解

Apache HTTPD 换行解析漏洞&#xff08;CVE-2017-15715&#xff09; 1.cd到CVE-2017-15715 cd vulhub/httpd/CVE-2017-15715 2.运行docker-compose build docker-compose build 3.运行docker-compose up -d 4.查看docker-compose ps 5.访问 出现这个表示安装成功 6.漏洞复现…

​安全可靠测评结果公告(2023年第1号)

安全可靠测评主要面向计算机终端和服务器搭载的中央处理器&#xff08;CPU&#xff09;、操作系统以及数据库等基础软硬件产品&#xff0c;通过对产品及其研发单位的核心技术、安全保障、持续发展等方面开展评估&#xff0c;评定产品的安全性和可持续性&#xff0c;实现对产品研…