Hyperledger Fabric1.0架构概览

2023-11-08

Hyperledger是被业界非常看到的联盟链的实现,包括IBM、Intel、R3、各个大型商业银行等都参与其中,带给我们关于区块链技术与软件工业、金融、保险、物流等领域碰撞结合的想象空间;在这个联盟中,有超过1/4的成员都来自中国,这更是我们对于它的一举一动都非常关注。很大程度上,Hyperledger和它背后的联盟体系就代表着区块链在产业环境中的未来(仅仅个人观点,欢迎拍砖,呵呵 :-))。

  作为最重要的子项目,在联盟推出Fabric 0.6版本后,最新的Fabirc 1.0 版本也即将问世,今天我们来走马观花地领略一下最新版本(1.0)的总体架构,对于这个承载产业梦想的新生事物有个基本的认识。

  说明:本文章仅仅是个概览,具体的细节可以参考官网和github站点文档;本人也只是从这些地方将信息汇集了一下,权作为是”借花献佛“了。

  Fabric1.0总体架构

  Hyperledger的fabric当前的稳定版本是0.6版,在讲解1.0版本之前,我们先看看0.6版本的总体架构:

  

  对应的0.6版本的运行时架构:

  

  0.6版本的架构特点是:

  结构简单: 应用-成员管理-Peer的三角形关系,主要业务功能全部集中于Peer节点;架构问题:由于peer节点承担了太多的功能,所以带来扩展性、可维护性、安全性、业务隔离等方面的诸多问题,所以0.6版本在推出后,并没有大规模被行业使用,只是在一些零星的案例中进行业务验证;

  针对上述问题,1.0版本做了很大的改进和重构:

  这是最新的1.0运行时架构:

  

  1.0 架构要点:

  分拆Peer的功能,将Blockchain的数据维护和共识服务进行分离,共识服务从Peer节点中完全分离出来,独立为Orderer节点提供共识服务;基于新的架构,实现多通道(channel)的结构,实现了更为灵活的业务适应性(业务隔离、安全性等方面)支持更强的配置功能和策略管理功能,进一步增强系统的灵活性和适应性;

  备注:最新的1.0版本中,上图中的Membership服务已经改名为fabric-ca

  1.0版本架构目标

  从Fabric的新架构设计的建议文档看,1.0版本的设计目标如下:

  chaincode信任的灵活性:支持多个ordering服务节点,增强共识的容错能力和对抗orderer作恶的能力2. 扩展性: 将endorsement和ordering进行分离,实现多通道(实际是分区)结构,增强系统的扩展性;同时也将chaincode执行、ledger、state维护等非常消耗系统性能的任务与共识任务分离,保证了关键任务(ordering)的可靠执行保密性:新架构对于chaincode在数据更新、状态维护等方面提供了新的保密性要求,提高系统的业务、安全方面的能力共识服务的模块化:支持可插拔的共识结构,支持多种共识服务的接入和服务实现

  架构特点

  Hyperledger fabirc 1.0 版本的在0.6版本基础上,针对安全、保密、部署、维护、实际业务场景需求等方面进行了很多改进,特别是Peer节点的功能分离,给系统架构具备了支持多通道、可插拔的共识的能力,使得Fabric脱离了0.6版本带给人的青涩感(仅仅是个”验证与演示“版的,呵呵),已经接近于工业应用的需求;

  我们现在看看 1.0版本的关键架构:

  多链与多通道

  Fabric 1.0 的重要特征是支持多chain和多channel;

  所谓的chain(链)实际上是包含Peer节点、账本、ordering通道的逻辑结构,它将参与者与数据(包含chaincode在)进行隔离,满足了不同业务场景下的”不同的人访问不同数据“的基本要求。

  同时,一个peer节点也可以参与到多个chain中(通过接入多个channel);如下图所示

  

  关于通道:通道是有共识服务(ordering)提供的一种通讯机制,类似于消息系统中的发布-订阅(PUB/SUB)中的topic;基于这种发布-订阅关系,将peer和orderer连接在一起,形成一个个具有保密性的通讯链路(虚拟),实现了业务隔离的要求;通道也与账本(ledger)-状态(worldstate)紧密相关;如下图所示:

  

  共识服务与(P1、PN)、(P1、P2、P3)、(P2、P3)组成了三个相互独立的通道,加入到不同通道的Peer节点能够维护各个通道对应的账本和状态;也其实也对应现实世界中,不同业务场景下的参与方,例如银行、保险公司;物流企业、生产企业等实体结构;我们可以看到channel机制实际上是的Fabric建模实际业务流程的能力大大增强了,大家可以发挥想象力去找到可能的应用领域

  交易(数据)流程说明

  新版本的架构变化导致新的交易流程的变化,我们简述如下:

  总体流程如下图所示:

  

  应用程序通过SDK发送请求道Peer节点(一个或多个)peer节点分别执行交易(通过chaincode),但是并不将执行结果提交到本地的账本中(可以认为是模拟执行,交易处于挂起状态),参与背书的peer将执行结果返回给应用程序(其中包括自身对背书结果的签名)应用程序 收集背书结果并将结果提交给Ordering服务节点Ordering服务节点执行共识过程并生成block,通过消息通道发布给Peer节点,由peer节点各自验证交易并提交到本地的ledger中(包括state状态的变化)

  上述过程对应的执行序列图如下:

  

  在新的架构中,Peer节点负责维护区块链的账本(ledger)和状态(State),本地的账本称为PeerLedger,其结构如下:

  

  我们可以看到,整个区块结构分为文件系统存储的Block结构和数据库维护的State状态,其中state的存储结构是可以替换的,可选的实现包括各种KV数据库(LEVELDB,CouchDB等);

  上边就是我们对Fabric 1.0版本的简要介绍,由于Fabric的复杂性,后续我也会针对1.0版本中的技术细节和实现机制进行专题说明,敬请关注;

  同时,1.0 版本的代码和文档每天都在更新,请大家关注官网和github,这里是最好学习天地。

  最后说民一下大家比较关心的版本计划:

  1.0版本的版本计划

  下边是剧透的官方开发计划,只是“Proposed“,也许随时会有变化哦:

  

  从官方公布的计划看,1.0版本应该可以在3月份完成release,让我们期待这个最新版本的诞生吧。

  备注:Fabric的1.0版本的代码已经可以初步运行起来了,可以参考万达季总的:Hyperledger Fabric V1.0– 开发者快速入门 :https://zhuanlan.zhihu.com/p/25070745

  参考文档

  官网: www.hyperledger.orgGithub地址: https://github.com/hyperledger/fabricfabric下一代共识架构提案:hyperledger/fabricFabric多通道和下一代账本设计:https://zhuanlan.zhihu.com/p/24605987


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hyperledger Fabric1.0架构概览 的相关文章

  • 【JAVASCRIPT】javascript随机生成颜色8种方法

    实现1 JavaScript代码 var getRandomColor function return function color return color 0123456789abcdef Math floor Math random
  • FFMPEG常用命令

    FFmpeg编码和支持 FFmpeg源代码中包含的编码格式很多 常见不常见的都可以在编译皮质列表中见到 可以通过的编译配置命令 configure list encoders 常见的编码器的格式有 AAC AC3 H 264 H 265 M
  • Qt中连接两个字符串,并在其中添加换行符

    Qt中连接两个字符串 并在其中添加换行符 在Qt中想要将两个字符串连接在一起 只需要在两个字符串之间加入 即可 输出显示即为两个字符串连在一起 如果想在字符串后面加入换行符 然后再连接另一个字符串 直接在字符串后面添加 n 是行不通的 这里
  • SMIL 直播协议

    Synchronized Multimedia Integration Language SMIL sma l is a World Wide Web Consortium recommended Extensible Markup Lan
  • js实现表格排序

    用js实现表格排序 第一点击以降序排列 第二次点击以升序排列 html代码 table border 1 tr th 学号 th th 名字 th th 成绩 th tr tr td 100 td tr table
  • 自建minio实现doris的快速备份与恢复

    一 概述 doris支持通过腾讯云bos 阿里云oss hdfs实现备份与恢复 但是我们公司doris部署在线下机房 如采用oss bos 大数据备份与恢复比较慢 会占用一定的带宽 如采用hdfs 担心小文件太多影响现有的hadoop集群
  • java基础总结——java面向对象讲解

    Java面向对象 对象的概念及面向对象的三个基本特征 对象的概念 Java 是面向对象的编程语言 对象就是面向对象程序设计的核心 所谓对象就是真实世界中的实体 对象与实体是一一对应的 也就是说现实世界中每一个实体都是一个对象 它是一种具体的
  • Python 进阶知识

    初级选手 Python 基础知识 Aimin20210819的博客 CSDN博客 python动态实例化对象 目录 1 Python简写法 2 Python三元运算符 3 Python获取路径和重名文件
  • 编程式事务

    Resource private TransactionTemplate transactionTemplate transactionTemplate execute transactionStatus gt List
  • Ubuntu安装Redis

    安装环境 Ubuntu 18 04 64位 一 安装 1 1 更新仓库 非必须 sudo apt update 1 2 使用 apt 从官方 Ubuntu 存储库来安装 Redis sudo apt get install redis se
  • 矩阵乘法实现卷积运算

    利用Matrix Multiplication实现Convolutions 以feature map channel 1 stride 1 padding 0为例 解决 1 如何将feature map和 filter kernel进行un
  • 原子指标和衍生/派生指标

    按照个人的理解 不加任何修饰词的指标就是原子指标 也叫度量 一般存在于olap表中 例如订单量 用户量的等等 而在原子指标上进行加减乘除或者修饰词的限定等等都是派生指标 衍生 派生指标 原子指标 时间周期 修饰词 例如 近7天订单量 近7天
  • mysql merge 引擎_【Mysql 学习】MERGE存储引擎(一)

    MERGE存储引擎 一 MERGE表的问题 MERGE存储引擎 也被认识为MRG MyISAM引擎 是一个相同的可以被当作一个来用的MyISAM表的集合 相同 意味着所有表同样的列和索引信息 你不能合并列被以不同顺序列于其中的表 没有恰好同
  • Java面试题库,极客时间百度云盘百度网盘

    一 基础知识 比较简单的一些基础入门 二 微服务构建 Spring boot 三 服务治理 Spring Cloud Euraka 四 客户端负载均衡 Spring Cloud Ribbon 五 服务器容错保护 Spring Cloud H

随机推荐

  • 全国计算机等级考试题库二级C操作题100套(第80套)

    第80套 给定程序中 函数fun的功能是 将形参n中 各位上为偶数的数取出 并按原来从高位到低位的顺序组成一个新的数 并作为函数值返回 例如 从主函数输入一个整数 27638496 函数返回值为 26846 请在程序的下划线处填入正确的内容
  • BT 种子 tracker 磁链

    磁链 磁链是什么 传统的种子和磁链的区别 https baike baidu com item E7 A3 81 E5 8A 9B E9 93 BE E6 8E A5 5867775 在使用迅雷时 磁链会先下载一个种子文件 然后才开始下载正
  • 执行hexo d部署到github出错

    我的github已经配置了ssh key 并且执行 ssh T git github com能连接到github 但是在我执行hexo d想要将博客部署到github却出错了 利用http localhost 4000 访问本地发现已经部署
  • 服务器安装msyql成功后没有密码无法进入mysql的解决方法

    服务器安装免安装版MySQL成功后遇到的问题 服务器安装msyql成功后没有密码无法进入mysql的解决方法 今天在远程服务器上安装MySQL数据库 本来安装好了 可是登录时一直都是需要密码 在网上也找到相应的方法 在my ini文件中的
  • Linux系统看门狗应用编程

    目录 看门狗应用编程介绍 打开设备 获取设备支持哪些功能 WDIOC GETSUPPORT 获取 设置超时时间 WDIOC GETTIMEOUT WDIOC SETTIMEOUT 开启 关闭看门狗 WDIOC SETOPTIONS 喂狗 W
  • 使用conda安装了cudatoolkit11.7和cudnn8.6, paddle却报错:Cannot load cudnn shared library. Cannot invoke method

    问题来源 近日 使用paddle官方的conda安装命令安装最新版的paddle conda install paddlepaddle gpu 2 4 1 cudatoolkit 11 7 c https mirrors tuna tsin
  • javascript常用排序算法(图文详解)

    文章目录 冒泡排序 原理 时间复杂度 空间复杂度 稳定性 演示效果 代码实现 选择排序 原理 时间复杂度 空间复杂度 稳定性 演示效果 代码实现 插入排序 原理 时间复杂度 空间复杂度 稳定性 演示效果 代码实现 快速排序 原理 时间复杂度
  • 玩转GitHub!7个实用工具,打造完全不同的GitHub

    全文共2395字 预计学习时长9分钟 图源 freebuf GitHub平台是最受欢迎的版本控制存储库之一 拥有不计其数 多种编程语言编写的公共项目 你可以用它分配团队协作工作 也可以从无数软件项目中一些最常使用的开源库中学习 并见机发表见
  • mysql报错error2002_mysql中异常出错ERROR:2002的处理办法分享

    软件安装 装机软件必备包 SQL是Structured Query Language 结构化查询语言 的缩写 SQL是专为数据库而建立的操作命令集 是一种功能齐全的数据库语言 在使用它时 只需要发出 做什么 的命令 怎么做 是不用使用者考虑
  • 实用的集成学习模型调优策略SWA

    集成学习介绍 强力的集成学习算法主要有2种 基于Bagging的算法和基于Boosting的算法 基于Bagging的代表算法有随机森林 而基于Boosting的代表算法则有Adaboost GBDT XGBOOST 集成学习的思想同样适用
  • ES特定场景性能优化

    1 Overview 本文主要介绍一下Elasticsearch 后文简称ES 做相关基准测试的流程 及分享一些我们做过的一些测试结论 简要说明下我们使用情况 宽表的用户画像OLAP分析场景 集群规模200节点 数据量30T左右全热数据 2
  • java设置超链接字体大小_(四十八)Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性...

    1 程序结构图 2 MainActivity java中的代码 packagecom example setlinkdemo importjava io IOException importorg xmlpull v1 XmlPullPar
  • windows10解决“引用的账户当前已锁定”问题

    背景 多次输入密码之后 提示 引用的账户当前已锁定 可能无法登录 怀疑是多次输入错误的密码导致的 适用场景 多次输错密码之后 想起自己正确的密码 解决方案 按住 shift 的同时 点击关机图标 右下角 后选择 重启 进入 选择一个选项 界
  • wpf基于DevExpress实现折线图的两种方法

    以上为简单实现效果 具体需要什么样式需要自己再去好好调试 WPF实现折线图一般有三种方法 XAML文件 XAML C 代码 C 代码 今天主要结束前二者 方法一 XAML实现
  • python变量与常量

    变量与常量 一 什么是变量 变量就是指可以变化的量 量指的是事物的状态 比如人的年龄 性别 身高 体重 变量有三大组成部分 变量名 赋值符 变量值 变量名 指向赋值符右侧值的内存地址 通过内存地址去访问实际的值 赋值符 将变量值的内存地址绑
  • 二叉树——求两个节点的最近公共祖先

    题目 给定一颗二叉树的头结点 和这颗二叉树中2个节点n1和n2 求这两个节点的最近公共祖先 思路 利用后序遍历实现 对于当前节点cur 如果节点为null或者等于n1或n2中的一个 则直接返回cur 先处理左右子树 左子树返回left 右子
  • python编写一个函数判断一个数是否为偶数_26 python语言编写判断奇数偶数 动态输出菱形 eval函数编写一个控制台版的计算器...

    练习题 判断奇数偶数 1 编写Python程序 实现判断变量x是奇数还是偶数的功能 2 改写第1题 变量x需要从Python控制台输入 第1题 coding utf 8 x 5 a x 2 print a if a 0 print x的值为
  • python yuv转rgb

    注意 yuv 也有很多种格式 cv2 COLOR YUV2BGR NV12 对应的格式 所有格式C https docs opencv org 4 2 0 d8 d01 group imgproc color conversions htm
  • PHP实现苹果(IOS)内购(IAP)

    反反复复经过多次重写 内部需要 发现苹果使用PHP来验证苹果内购数据是否正确并不是一件很难的事情 我把我的一些心得写出来 以供以后有这方面需求的小伙伴参考 以PHP语言为例 谁让PHP是最好的语言呢 首先要知道苹果内购分沙箱环境和正式环境
  • Hyperledger Fabric1.0架构概览

    Hyperledger是被业界非常看到的联盟链的实现 包括IBM Intel R3 各个大型商业银行等都参与其中 带给我们关于区块链技术与软件工业 金融 保险 物流等领域碰撞结合的想象空间 在这个联盟中 有超过1 4的成员都来自中国 这更是