Hyperledger Fabric 架构概览

news2024/11/18 23:35:46

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 区块链

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Flutter 开发实战】Dart 基础篇:常用运算符

在Dart中,运算符是编写任何程序的基本构建块之一。本文将详细介绍Dart中常用的运算符,以帮助初学者更好地理解和运用这些概念。 1. 算术运算符 算术运算符用于执行基本的数学运算。Dart支持常见的加、减、乘、除、整除以及取余运算。常见的算数运算符如…

HarmonyOS@State装饰器:组件内状态

State装饰器:组件内状态 State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI会发生对应的渲染改变。 在状态变量相关装饰器中,State是最基础的&…

3D Surface Subdivision Methods 3D 曲面细分方法

文章目录 1 介绍2 细分法3 一个简单的例子:Catmull-Clark 细分4 Catmull-Clark 细化5 Refinement Host6 Geometry Policy7 四种细分方法8 示例:自定义细分方法9 实施历史 原文地址: https://doc.cgal.org/latest/Subdivision_method_3/index.html#Chapte…

深入了解选择重传协议(Selective Repeat Protocol)

选择重传协议(Selective Repeat Protocol)是计算机网络中常用的一种数据链路层协议,用于确保数据的可靠传输。本文将深入探讨选择重传协议的原理、应用场景及优缺点。 选择重传协议的核心思想是在发送端发送数据时,每一帧都被编号…

git ssh key 配置

一、Profile Settings-->SSH Keys 我们点击这里会有详情的文档介绍生成sshkey。 ssh-keygen -t rsa -b 2048 -C "邮箱" --回车... 将生成的id_rsa.pub粘贴到如下保存 git config --global user.name "用户名" git config --global user.email "邮…

苹果电脑交互式原型设计软件Axure RP 9 mac特色介绍

Axure RP 9 for Mac是一款交互式原型设计软件,使用axure rp9以最佳的方式展示您的作品,优化现代浏览器并为现代工作流程设计。同时确保您的解决方案正确完整地构建。Axure RP 9 for Mac为您整理笔记,将其分配给UI元素,并合并屏幕注…

apk反编译修改教程系列---修改apk包名等信息 让一个应用拥有无限分身 手机电脑同步演示【九】

往期教程: apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】 apk反编译修改教程系列---简单…

Java后端开发——SSM整合实验

文章目录 Java后端开发——SSM整合实验一、常用方式整合SSM框架二、纯注解方式整合SSM框架 Java后端开发——SSM整合实验 一、常用方式整合SSM框架 1.搭建数据库环境:MySQL数据库中创建一个名称为ssm的数据库,在该数据库中创建一个名称为tb_book的表 …

Spark MLlib ----- ALS算法

补充 在谈ALS(Alternating Least Squares)之前首先来谈谈LS,即最小二乘法。LS算法是ALS的基础,是一种数优化技术,也是一种常用的机器学习算法,他通过最小化误差平方和寻找数据的最佳匹配,利用最小二乘法寻找最优的未知数据,保证求的数据与已知的数据误差最小。LS也被用…

Fastdata极数公司介绍

【写在开头】 前不久看到一句话和一个新闻,“数据作为主要生产要素,以资源化为起点,经历资产化、资本化阶段,逐步实现数据价值。” 2023年10月25日,国家数据局正式揭牌,由国家发展和改革委员会管理。 初看…

4.2 MATRIX MULTIPLICATION

矩阵-矩阵乘法,或简称矩阵乘法,在 i X j(i 行 by j 列)矩阵 M 和 j x k 矩阵 N 之间产生 i X k 矩阵P。矩阵乘法是基本线性代数子程序(BLAS)标准的重要组成部分(见第3章中的“线性代数函数”边栏…

SpringBoot-开启Actuator监控

Spring Boot Actuator是Spring Boot提供的一种管理和监控应用程序的框架,可以帮助我们了解应用程序的运行状况,提供HTTP端点来暴露应用程序的不同方面,如健康状况、指标、日志和运行时信息等。 开启Actuator监控,我们可以通过HTT…

IDEA+Git——项目分支管理

IDEAGit——项目分支管理 1. 前言2. 基础知识点2.1. 分支区分2.2. Git 代码提交规范2.3. 四个工作区域2.4. 文件的四种状态2.5. 常用命令2.6 注重点 3. IDEA分支管理 1. 前言 在Git中,分支是项目的不同版本,当开始开发一个新项目时,主分支通常…

基于Java SSM框架实现班级同学录管理系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现班级同学录管理系统演示 SSM框架 当今流行的“SSM组合框架”是Spring SpringMVC MyBatis的缩写,受到很多的追捧,“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架,通常更简单的数据源。Spri…

LabVIEW开发自动光学焊点检测系统

LabVIEW开发自动光学焊点检测系统 LabVIEW于开发了一个自动光学焊点检测系统,旨在提高电子元件焊接的质量和效率。通过利用LabVIEW的高级视觉开发模块,该系统能够准确地识别和分类电路板上的不同焊点类型,如桥接、虚焊、漏焊和多锡。这一进步…

Hibernate实战之操作MySQL数据库(2024-1-8)

Hibernate实战之操作MySQL数据库 2024.1.8 前提环境(JavaMySQLNavicatVS Code)1、Hibernate简介1.1 了解HQL 2、MySQL数据库建表2.1 编写SQL脚本2.2 MySQL执行脚本 3、Java操作MySQL实例(Hibernate)3.1 准备依赖的第三方jar包3.2 …

【S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试(3)

前言 两章我们使用大联大世平集团开发的 NXP S32K344 开发板和 NXP 官网开放的 TCP/IP stacks 例程完成了 NXP S32K3 以太网功能的开发环境搭建和软件调试,下面验证 RMII 百兆通信基本功能。没看过第一节的小伙伴请移步《【S32K 进阶之旅】 NXP S32K3 以太网 RMII 接…

《矩阵分析》笔记

来源:【《矩阵分析》期末速成 主讲人:苑长(5小时冲上90)】https://www.bilibili.com/video/BV1A24y1p76q?vd_sourcec4e1c57e5b6ca4824f87e74170ffa64d 这学期考矩阵论,使用教材是《矩阵论简明教程》,因为没…

爬虫-5-数据提取-正则,xpath

#免责声明:本文仅供学习,请遵纪守法。 ԅ(ㅂԅ)

静态网页设计——个人图书馆(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频: https://www.bilibili.com/video/BV1VN4y1q7cz/?vd_source5f425e0074a7f92921f53ab87712357b 源码:https://space.bilibili.co…