【区块链与密码学】第3-7讲:Hyperledger Fabric技术框架详解

Hyperledger Fabric 区块链多机部署 目录 目录 Hyperledger Fabric 区块链多机部署 环境介绍 源码编译以及fabric 区块链网络部署环境准备 编译 fabric区块链相关可执行程序 编译 go 相关工具 编译 fabric基础环境 编译区块链服务相关工具 多机部署fabric网络solo共识 配置 fabric 网络用户拓扑关系 配置Orderer 节点的启动创世区块新建通道交易的相 阅读详情

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】

3.5Hyperledger Fabric的架构

在上一堂课的学习中,我们介绍了Hyperledger Fabric的基情况以及组成,今天我们来拆解其架构组成,细说Hyperledger Fabric的技术框架。

01Fabric模块-成员服务

区块链网络中的每一个参与者(包括客户端应用程序,记账节点、排序服务节点等),要想参与区块链网络,都必须具有封装在X.509数字证书中的数字身份。这些身份非常重要,因为它们确定了参与者在区块链网络中对资源的访问权限。

要使身份可以验证,它必须来自可信任的权威机构。成员服务提供商( MSP)在Fabric中就充当权威机构的角色,默认使用X.509证书作为身份,采用传统的公钥基础结构(PKI)分层模型。

PKI(Public Key Infrastructure,公钥基础设施)的目标就是实现不同成员在不见面的情况下进行安全通信(建立信任),Fabric采用的模型是基于可信的第三方机构,也就是证书颁发机构(Certification Authority,CA)签发的证书。CA会在确认申请者的身份后签发证书,同时会在线提供其所签发证书的最新吊销信息,这样使用者就可以验证证书是否仍然有效。

证书是一个包含公钥、申请者相关信息以及数字签名的文件。数字签名保证了证书中的内容不能被任何攻击者篡改,而且验证算法可以发现任何伪造的数字签名。通常情况下,PKI体系包含证书颁布机构(CA)、注册机构(RA)、证书数据库和证书存储实体。

RA是一个信任实体,它负责对用户进行身份验证以及对数据、证书或者其他用于支持用户请求的材料进行合法性审查。

CA则会根据RA的建议,给指定用户颁发数字证书,这些证书由根CA直接或分层进行认证。

(*Fabric成员服务实体示意图*)

对上图中的实体进行进一步介绍说明:

Root Certificate Authority(Root CA):根CA,代表PKI体系中信任的实体,同时也是PKI体系结构中的最顶层认证机构。

Registration Authority(RA):注册机构,是一个可信任的实体,通过它可以确定希望参与许可区块链的用户的有效性和身份信息。它通过与用户进行带外通信的方式以验证用户的身份和角色。同时RA还需要负责创建注册所需的注册凭证。

EnrollmentCertificateAuthority(ECA):在验证用户提供的注册凭证后,ECA负责发出注册证书(ECerts)。

TransactionCertificateAuthority(TCA):在验证用户提供的注册凭证后,TCA负责发出交易证书(TCerts)。

TLS Certificate Authority (TLS-CA):负责颁发TLS(Transport Layer Security,传输层安全协议)证书和凭据,以允许用户使用其网路。

Enrollment Certificates(ECerts):ECerts是长期证书,针对所有角色颁发。

TransactionCertificates(TCerts):TCerts是每个交易的短期证书。它们是由TCA根据授权的用户请求颁发的。此外,TCerts可以被配置为不携带用户身份的信息。它们使得用户不仅可以匿名地参与系统,还可以防止事务的可链接性。

TLS-Certificates(TLS-Certs):TLS-Certs携带其所有者的身份,用于系统和组件之间进行通信及维护网络级安全性。

CodeSignerCertificates(CodeSignerCerts):负责对代码进行数字签名来标识软件来源及软件开发者的真实身份,以此保证代码在签名之后不被恶意篡改。

(*用户注册流程示意图*)

具体的用户注册流程做一个简单的介绍,成员的注册分为两个过程:

离线过程

每个用户或者Peer节点必须向RA注册机构提供身份证件(ID证明),同时这个流程必须通过带外数据(out-of-band,OOB)进行传输,以提供RA为用户创建(和存储)账户所需的证据。

RA注册机构返回用户有关的用户名和密码,以及信任锚(包含TLS-CA Cert)。如果用户可以访问本地客户端,那么客户端可以将TLS-CA证书作为信任锚的一种方式。

在线过程

用户连接客户端以请求登录系统,在这一过程中,用户将用户名和密码发送给客户端。

用户端接着代表用户向成员服务发送请求,成员服务接受请求。

成员服务将包含几个证书的包发送给客户端。

一旦客户端验证完成所有的加密材料是正确有效的,它就会将证书存储于本地数据库中并通知用户,用户注册完成。

现在来看看这些身份如何用于表示区块链网络的可信成员。这是会员服务提供商(MSP)发挥作用的地方:它通过列出其成员的身份来识别应该信任哪些根CA和中间CA是信任域的成员,或者哪些CA被授权为成员签发有效的身份。

MSP的强大不仅仅是列出谁是网络参与者或频道成员。MSP可以在它所代表的组织范围内识别参与者可能扮演的特殊角色,为网络和通道的访问权限设置奠定基础。在区块链网络中,有两个地方会出现MSP,一个是本地MSP,一个是通道MSP。

本地MSP用来定义节点和用户的权限,定义了本地层面的成员哪些有管理权哪些有参与权。

如果一个组织的节点想要加入某个通道,那么本地MSP也要加入通道的配置中,一个通道中的所有节点共享通道MSP的视图。下面来看一个例子。

(*MSP工作流程示意图*)

用户B的身份由RCA1签发,存储在本地MSP中,当B想要连接到Peer并尝试在peer上安装智能合约时,需要执行一下操作:

Peer先检查ORG1-MSP,以验证B的身份确实是ORG1的成员。验证成功后将允许install命令实现链码的安装。

B希望在通道上也实例化智能合约,那么通道上的所有组织必须都同意。因此,Peer必须先检查通道的MSP,然后才能成功提交此命令。

本地MSP仅在应用的节点或用户的文件系统上定义。因此,在物理上和逻辑上,每个节点或用户只有一个本地MSP。

由于通道MSP可用于通道中的所有节点,因此它们在通道配置中进行逻辑定义一次。其实,通道MSP也在通道中为每个节点的文件系统实例化,并通过一致性保持同步。

02Fabric模块-区块链服务

Fabric的区块链服务包含4个模块:共识管理、分布式账本、账本存储以及P2P网络协议。

共识管理用于在多个节点的分布式复杂网络中使消息达成共识。

分布式账本与账本存储负责管理区块链系统中所有的数据存储,比如交易信息、世界状态等。

P2P网络协议则是网络中节点的通信方式,负责Fabric中各节点间的通信与交互。

1. P2P网络

在Fabric的网络环境中,节点是区块链的通信实体.存在三类不同的节点,分别是客户端节 点(Client)、Peer节点(Peer)以及共识服务节点(Ordering Service Nodes或者Orderers).

客户端节点代表着终端用户实体

必须连接到Peer节点后才可以与区块链进行通信交互。

可以根据它自己的选择来连接到任意的Peer节点上,创建交易和调用交易。

在实际系统运行环境中,客户端负责与Peer节点通信提交实际交易调用,与共识服务通信请求广播交易的任务。

Peer节点负责与共识服务节点通信来进行世界状态的维护和更新

它们会收到共识服务广播的消息,以区块的形式接收排序好的交易信息,然后更新和维护本地的世界状态与账本。

Peer节点可以额外地担当背书节点的角色,负责为交易背书。每个合约代码程序都可以指定一个包含多个背书节点集合的背书策略。

2. 共识服务

Fabric网络中的Orderers节点聚集在一起形成了共识服务

它可以看作一个提供交付保证的通信组织。

共识服务为客户端和Peer节点提供了一个共享的通信通道,还为包含交易的消息提供了一个广 播服务的功能。

共识服务可以有不同的实现方式,在v1.0版本中,Fabric将共识服务设计成了可插拔模块,可以根据不同的应用场景配置不同的共识选项。目前,Fabric提供了3种模式实现:Solo、Kafka和Ratf。

Solo是一种部署在单个节点上的简单时序服务,它只支持单链和单通道。

Kafka是一种支持多通道分区的集群共识服务,可以支持CFT(Crash Faluts Tolerance)。它容忍部分节点宕机失效,但是不能容忍恶意节点。

Raft遵循“领导者和追随者”模型,每个通道都选举一个“领导者”,它的决定将被复制给“追随者”。只要总节点数与失效节点数目满足n>=2f+1,它就允许包括领导者在内的部分节点宕机失效。

3. 分布式账本

区块链技术从其底层构造上分析,可以将其定义为一种共享账本技术。账本是区块链的核心组成部分,在区块链的账本中,存储了所有的历史交易和状态改变记录。

在Fabric中,每个通道都对应着一个共享账本,而每个连接在共享账本上的Peer节点,都能参与网络和查看账本信息,即它允许网络中的所有节点参与和查看账本信息。

账本上的信息是公开共享的,并且在每个peer节点上,都维持着一份账本的副本。

03 Fabric模块-合约代码服务

Fabric合约代码服务提供了一种安全且轻量级的方式,沙箱验证节点上的合约代码执行,提供安全容器服务以及安全的合约代码注册服务。

其运行环境是一个锁定和安全的容器,合约代码首先会被编译成一个独立的应用程序,运行于隔离的Docker容器中。在合约代码部署时,将会自动生成一组带有签名的智能合约的Docker基础镜像。在Docker容器中,Peer节点与合约代码交互过程如图所示:

(*合约代码执行流程示意图*)

步骤如下:

Peer节点收到客户端发来的合约代码执行请求后,通过gRPC与合约代码交互,发送一个合约代码消息对象给对应的合约代码。

合约代码通过调用Invoke()方法,执行getState()操作和putState()操作,向Peer节点获取账本状态数据库和发送账本预提交状态数。若要读取和写入私有数据,则通过getPrivateDate()和putPrivateDate()方法。

合约代码执行成功后将输出结果发送给Peer节点,背书节点对输入和输出信息进行背书签名,完成后应答给客户端。

点宽学园【区块链与密码学】第三单元的课程今天就结束啦!感谢同学们的一路陪伴~大家也要记得复习哦!从下一期我们将进入新的篇章,敬请期待啦~

关注点宽学园,每周持续更新区块链系列课程,小宽带你进入区块链世界。我们下节课见啦。

【区块链与密码学】课堂回顾:

区块链与密码学系列文章合集

Hyperledger Fabric 入门必读书籍 下面整理一些 Hyperledger Fabric 一些比较好的区块链书籍,仅供学习参考。 1. 区块链原理、设计与应用 1.1 书籍封面 1.2 介绍 本书由超级账本核心设计和开发者撰写,是区块链开发落地专业指南。由浅入深,系统化介绍超级账本Fabric设计精华、应用开发等。全书分为理论篇和实践篇两大部分;第1-3章介绍区块链技术的由来、核心思想及典型的应用场景;第4-5章重点介绍区块链技术中... 阅读详情

相关推荐

区块链与分布式超级帐本技术(Hyperledger Fabric或R3 Corda)

与分布式超级账本技术(如Hyperledger Fabric或R3 Corda)相比,以太坊区块链保持了相似性和差异性。在对区块链和分布式超级账本平台进行有根据的评估及其为企业带来的价值时,根据平台的核心功能和特征对平台进行分类是有用的。由于区块链源自密码学和数据配置的原则,某些功能可以在协调的数据库系统中复制,而其他功能仅在真正的区块链环境中可行。 在本文中,我们将评估面向平台的主要企业的基本业...

mongo_node的专栏 2491

1. Hyperledge Fabric 简介—1

1. Hyperledge Fabric 简介 Hyperledger Fabric Hyperledger Fabric 是一个开源企业级许可分布式账本技术 (DLT) 平台,专为在企业环境中使用而设计,与其他流行的分布式账本或区块链平台相比,它提供了一些关键的差异化功能。 Fabric 具有高度模块化和可配置的架构,Fabric 支持以 Java、Go 和 Node.js 等通用编程语言编写的智能合约的分布式账本平台。 Fabric 平台也是经过许可的,这意味着与公共无许可网络不同,参与者是彼此认识的

hello_baby6的博客 1113

Hyperledger Fabric java sdk 链码访问快速上手【无痛】

在超级账本Fabric区块链中,应用通过节点的RPC协议接口访问链码。Java应用可以使用官方提供的Fabric-sdk-java开发包来实现对链码的访问,开发包封装了Fabric区块链的GRPC链码访问协议,有利于开发人员聚焦于业务逻辑。不过Fabric-sdk-java的文档质量保持了Hyperledger Fabric产品一贯的不知所云,看起来实在是...

rejames的博客 2878

大数据区块链Hyperledger Fabric教程--Peer命令(超详细讲解)

Hyperledger Fabric是一个用于构建区块链应用程序的企业级框架。在Hyperledger Fabric中,Peer(节点)是网络中的参与者,负责维护分类账(ledger)和执行智能合约。peer有不同的子命令,每个命令都可以让指定的 peer 节点执行特定的一组任务。Peer 在 Hyperledger Fabric 中是网络的关键组成部分,通过其分布式的特性、智能合约执行、背书机制、共识参与等功能,确保了整个区块链网络的正常运行、可靠性和安全性。

专注 AI、大数据、Python、爬虫、数据分析可视化、机器学习、推荐算法、知识图谱、大模型应用与全栈系统开发,长期沉淀真实项目案例、源码解析、系统设计、部署经验与工程化实践,分享可运行、可复用、可落地的技术方案。 3483

Hyperledger Fabric与HoneyBadgerBFT集成实战

在第一章中,我们将介绍Hyperledger Fabric,这是Linux基金会主导的一个开源项目,它推动了区块链技术在企业级应用中的发展。我们将概述Fabric 1.x版本,这是目前广泛使用的稳定版本,它为构建和部署企业级区块链网络提供了安全可靠的框架。Hyperledger是由Linux基金会管理的一个开放源代码合作项目,旨在推动区块链技术在多个行业的应用。Hyperledger Fabric是该项目的一个子项目,其设计目标是提供一个模块化和可扩展的开源框架,用于构建企业级区块链网络。

weixin_34471637的博客 666

区块链开源实现Hyperledge Fabric(一)

一、概述 1.1 介绍 Hyperledger Fabric是Linux基金会所主导的Hyperledger(超级账本)的项目之一。Hyperledger Fabric旨在作为开发模块化体系结构的区块链应用程序的基础,以便诸如共识和会员服务等组件可以即插即用。它使用容器技术来托管构成系统应用逻辑的智能合约(也称为链代码)。 简而言之,Hyperledger Fabric是为企业构建的领先的开源、通用区块链结构。 1.2 逻辑架构 成员管理:会员注册、身份保护、交易审计、内部保密等; 账本管理:存储交易记录、交易数据的管理等; 交易管理:部署交易、调用交易等; 智能合约:实现了业务逻辑的代码;

区块链技术和Hyperledger Fabric介绍

简称BT(Blockchain technology),也称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录,同时数据不可篡改。开放式账本项目(Open Ledger Project)是超级账本(Hyperledger)前身,由Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,在2015年底IBM宣布加入到开放式账本项目(Open Ledger Project)后,该项目更名为超级账本(Hyperledger)。

dnice的博客 1858

刚入职,软件测试岗,有点迷茫不知道下一步怎么提升自己

软件测试前景和发展都是不错,已经入了软件测试这行业就坚挺下去

大白的博客 2219

走进Hyperledger Fabric:企业区块链技术的简明介绍

在数字化浪潮席卷全球的今天,区块链技术以其去中心化、透明化和安全性的特点,正逐渐渗透到各行各业,成为推动数字化转型的重要力量。而Hyperledger Fabric,作为企业级区块链技术的杰出代表,正以其独特的优势,引领着企业区块链应用的新潮流。

AntonyCheng的博客 1498

Node-Red系列教程——NodeRed通过OPC UA读取数据并写入mysql

NodeRed通opcua读取西门子数据并存入mysql

鲸鱼姐的专栏 1万+

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作: 软件是AWR 14版本

钢丝 2万+

【区块链与密码学】第3-6讲:一课读懂Hyperledger Fabric

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 3.4 Hyperledger Fabric 随着比特币,以太坊和其他一些衍生技术的普及,区块链,分布式账本和分布式技术在企业应用的需求也在增长。但是,企业案例还需要一些特殊的性能特征,而这些性能特征是目前公有区块链技术不能提供的。 Hyperledger Fabric是一个...

Digquant的博客 818

告别付费!手把手教你用DataV.GeoAtlas获取全国街道级GeoJSON数据(附完整避坑指南)

本文详细介绍了如何免费使用阿里云DataV.GeoAtlas工具获取全国街道级GeoJSON数据。通过可视化选取、格式转换、数据校验等步骤,提供了一套完整的避坑指南和工作流,帮助前端和可视化开发者高效解决高精度地图数据获取难题,节省成本并提升开发效率。

weixin_29085865的博客 902

“Hyperledger Fabric 是假区块链!”

作者 | Stuart Popejoy 编译 | 王国玺 出品 |区块链大本营(blockchain_camp) 自 Libra 发布以来,沉寂已久的区块链社区又活跃了起来,一些探索区块链业务的公司也在暗地里较劲不甘落后。相信你也注意到了,这些大公司往往都对现有比特币、以太坊等区块链视而不见。这是因为它们深知数据的重要性,因而不会选用比特币、以太坊这些把数据开源公开的公有区块链,而...

优快云资讯 2817

STM32内存大小与地址的对应关系以及计算方法

1、概述 在计算机中要访问存储区,都是通过地址来进行访问的,包括所有的外设(比如串口、内存、硬盘等),都对应有一个访问地址,地址就相当于门牌号,有了门牌号,我们才知道操作的是哪一个区域、哪一个外设。 最被大家熟知的是计算机内存,计算机内存有4G、8G,16G等等,对于程序员而言,要在代码中操作这些内存,肯定得知道内存的地址,此外,还需要会计算地址与内存大小的计算方法与对应关系。STM32作为微

Ace's Blog 4万+

高压脉冲发生器的各种电路图

高压脉冲发生器的各种电路图

qq_65102825的博客 5906

区块链入门--准备搭建自己的区块链

最近在B站上看到一个Hyperleger Fabric搭建自己的区块链的视频,把里面的内容整理了出来。个人认为其中如何下载安装Docker,利用Hyperleger中的插件,实际搭建的过程讲述的并不清楚,但是对于需要准备的知识这一部分还是大有裨益。 文章目录区块链技术简述技术名词区块链的类型 三种区块链特点区块链平台应用场景区块链技术组成部分P2P网络协议P2P网络实现密码学-Hash密码学-加解...

kali_Chenye的博客 6885

[数字电路]用与非门实现BCD译码器驱动数码管

Hello,大家好。这里是xdd_core,好久不见。今天来和大家聊聊大一数字电路课程的一个课设。# Key word:BCD Decoder,Proteus8.x,NAND Gate,Digital Circuit# 流程:Proteus8.x仿真电路并绘制PCB导出Gerber文件打样,最终实物验证。# 以下为我对这个课设的report(里面对整个设计做了详细介绍,并设计了完整的验证电路) 感谢观看,仅供参考,未经作者允许,禁止转载/抄袭,本文已上传至数据库,查重必挂QAQ BCD to 7-Segme

xddcore的博客 6012

如何使用Hyperledger Fabric和Composer构建区块链网络

by Haardik 由Haardik 如何使用Hyperledger Fabric和Composer构建区块链网络 (How to build a blockchain network using Hyperledger Fabric and Composer) 新的区块链开发人员教程 (A tutorial for new blockchain developers) Before I ...

1928

uniapp(全端兼容) - 最新详细实现瀑布流列表及布局设计,uni-app全平台兼容的瀑布流示例,view容器自适应瀑布流布局,图片瀑布流布局、图像+文字卡片式瀑布流,类似小红书(详细示例代码)

uni-app,瀑布流,安卓app,苹果app,微信小程序,移动端,H5网页,手机网站,微信小程序、支付宝小程序,手机app端,nvue,瀑布流布局,如何实现图片瀑布流,怎么做文字+图像瀑布流,uniapp仿小红书笔记瀑布流效果,uniAPP仿快手抖音布局列表,瀑布流列表详细教程,编译所有平台都能用的瀑布流列表,商品瀑布流列表,图文列表,小程序瀑布流,页面触底懒加载,瀑布流插件,详细示例代码教程,uni-app H5实现瀑布流效果,uniapp小程序做瀑布流,纯css瀑布流,用uniapp写瀑布流商品列表,

✅ 精选推荐文章 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

使用Hyperledger Fabric Java SDK构建与部署区块链网络的技术实践

使用Hyperledger Fabric Java SDK构建与部署区块链网络的技术实践 前言:区块链网络开发的核心要素 在现代区块链解决方案架构中,网络作为后端基础设施,而应用程序前端则通过SDK与网络进行通信。Hyperledger Fabric作为企业级区块链框架,提供了多语言SDK支持,其中Java SDK因其在企业系统中的广泛应用而备受关注。本文将深入解析如何利用Hyperledger ...

gitblog_00667的博客 420

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

HyperLedger Fabric和区块链是什么关系?

这两年,区块链技术大火,不管是国外的IBM、AWS 等IT巨头企业,还是国内的BAT互联网巨头,纷纷推出了自己的区块链项目。虽然,不同的区块链项目有不同的特点,但是都支持HyperLedger Fabric。那么,HyperLedger Fabric是什么?能发挥什么价值?其中有哪些组成模块?接下来,我们将逐一分析。在了解HyperLedger Fabric是什么之前,我们先来普及一个概念。什么是...

weixin_34146410的博客 584

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Hyperledger Fabric 实战(一):什么是 Hyperledger Fabric ?

为什么80%的码农都做不了架构师?>>> ...

weixin_34273481的博客 1202

hyperledger fabric

token: token是一种身份验证方式。 传统身份验证: 传统方式是使用session,即在用户登录时记录用户信息并生成一个ID,客户端在下一次访问时会带着这个ID,因此直接验证ID即可。而这份记录就是session,存在服务端中,可能需要定期清理。 换成token: 实际上和传统的方式没有多大区别,只是把ID换成token的信息:head,payload,signature。只是t...

hellowangld的博客 639
上一篇: 【区块链与密码学】第3-6讲:一课读懂Hyperledger Fabric
下一篇: 【区块链与密码学】第4-1讲:区块链应用价值从何处体现?
Dig Quant
博客等级 码龄7年 124粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值