草庐IT

hyperledger fabric介绍

xcSpark 2023-04-11 原文

一.Hyperledger Fabric介绍

2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术。
Hyperledger Fabric是Hyperledger中的一个区块链项目,包含一个账本,使用智能合约并且是一个通过所有参与者管理交易的系统。
Hyperledger Fabric 是分布式账本解决方案的平台,以模块化架构为基础,支持不同组件的可插拔。

具备以下特点
1. 高度保密性
2. 可伸缩性
3. 弹性
4. 可扩展性

二.基本概念

区块链

共享的、通过智能合约更新的多副本交易系统,并通过协作共识机制保持账本副本一致同步。

1.分布式账本

区块链网络的核心是一个分布式账本,它记录了网络上发生的所有交易。

特点

  1. 去中心化
  2. 网络中每个参与者都保存账本的副本
  3. 网络中每个参与者共同维护账本(协作)
  4. 信息只能以“附加”的方式记录在区块链中
  5. 使用加密技术保障交易一旦被添加进账本中,无法被篡改

2.智能合约

为了持续的进行信息的更新,以及对账本进行管理(写入交易,进行查询等),区块链网络引入了智能合约来实现对账本的访问和控制。

智能合约不仅仅可用于在区块链网络中打包信息,它们也可以被用于自动的执行由参与者定义的特定交易操作。

3.共识

保持网络中所有账本交易的同步流程,就是共识。确保账本仅在交易被适当的参与者批准时更新,并且当账本更新时,它们以相同的顺序更新相同的交易。


4.为什么区块链可行

当前记录系统区块链
无法统一管理参与者身份,确认源头费力各参与者都有账本副本
明确交易耗时长共享账本、共享更新账本流程
手工签订合约减少与私人信息及处理的时间、成本和风险
数据独立,易单点故障可见性高,信任度高

5.Hyperledger Fabric 中相关概念

Hyperledger Fabric 参与者需要认证许可。

1.成员管理 MSP(Membership Service Provider)

Membership Service Provider(MSP)用来登记所有的成员。
账本数据可被存储为多种格式,共识机制可被接入或者断开,同时支持多种不同的MSP。

2.通道 channel

参与者可以建立通道channel,同一个channel中的参与者,才会拥有该channel中的账本,而其他不在此channel中的参与者则看不到这个账本。

3.共享账本 Shared Ledger

共享账本包含世界状态(world state)和交易记录(transaction log)。在Hyperledger Fabric网络中的每一个参与者都拥有一个账本的副本。

1.世界状态组件描述了账本在特定时间点的状态,它是账本的数据库。
2.交易记录组件记录了产生世界状态当前值的所有交易,它是世界状态的更新历史。
3.账本则是世界状态数据库和交易历史记录的集合。

世界状态存储数据库【可插入】。默认是LevelDB一个key-value存储数据库。
交易记录模块【非可插入】。它只是记录在区块链网络中账本数据库被使用时之前和之后的值。

4.智能合约 Smart Contracts

智能合约被称为chaincode,当一个区块链外部的一个应用程序需要访问账本时,就会调用chaincode。大多数情况下,chaincode只会访问账本的数据库组件和世界状态(world state)(比如查询),但不会查询交易记录。

5.隐私 Privacy

隐私,根据网络的需求,在一个Business-to-Business(B2B)网络中的参与者会对信息共享的程度极为敏感。然而,对于其他的网络,隐私并不是首要考虑的因素。
Hyperledger Fabric支持构建隐私保护严格的网络,也支持构建相对开放的网络。

6.共识 Consensus

共识:可插拔,根据需求选择,目前支持SOLO,Kafka以及后续会添加的SBFT (Simplified Byzantine Fault Tolerance)。
交易必须按照它们发生的顺序写入分类帐,即使它们可能在网络内不同的参与者集之间。为此,必须建立交易顺序,并且必须采用一种方法来拒绝错误(或恶意)插入分类帐的不良交易。

三. 身份 Identity

区块链网络中的不同参与者包括对等点(peers)、订购者(orderers)、客户端应用程序(client applications, )、管理员(administrators)等。这些参与者中的每一个——能够使用服务的网络内部或外部的活动元素——都有一个封装在 X.509 数字证书中的数字身份。

作用:确定了对资源的确切权限以及参与者在区块链网络中拥有的信息的访问权限

数字身份还具有 Fabric 用来确定权限的一些附加属性。

1.主体(principal)

身份和相关属性的联合提供了一个特殊的名称。 像userID 或 groupID,但更灵活一些,因为它们可以包含参与者身份的广泛属性,例如参与者的组织、组织单位、角色甚至参与者的特定身份。

2.会员服务提供者( MSP)

要使身份可验证,它必须来自受信任的权威机构。Fabric中使用会员服务提供者( MSP) 组件实现,它定义了管理该组织的有效身份的规则。
默认 MSP 实现使用 X.509 证书作为身份,采用传统的公钥基础设施 (PKI) 分层模型。

3. 身份使用的场景


去超时结账假设只能用A信用卡、B信用卡(A、B为举例使用),那对于其他卡无论是否真实及其他卡是否有余额都无效。即便有了有效的信用卡还需要商店认可才能使用。
PKI 和 MSP 以相同的方式协同工作——PKI 提供身份列表,而 MSP 说明其中哪些是参与网络的给定组织的成员。
PKI 类似卡片提供商——它分发许多不同类型的可验证身份。(如发行A卡、B卡、C卡)
MSP 就像商店接受的卡提供商列表,确定哪些身份是商店支付网络的受信任成员(参与者)。MSP 将可验证的身份转变为区块链网络的成员。(如商店仅支持A卡、B卡)

四. PKI 公钥基础设施

是一组互联网技术,可在网络中提供安全通信。将S置于HTTPS中的是 PKI ,如果您在 Web 浏览器上打开的是https的链接,您可能正在使用 PKI 来确保它来自经过验证的来源。

公钥基础设施 (PKI) 的元素。PKI 由向各方(例如,服务的用户、服务提供商)颁发数字证书的证书颁发机构组成,然后他们使用它们在与环境交换的消息中对自己进行身份验证。
CA 的证书撤销列表 (CRL) 构成不再有效证书的参考。证书的吊销可能有多种原因。例如,证书可能会因为与证书相关联的加密私有材料已经暴露而被撤销。
区块链网络不仅仅是一个通信网络,它依赖于 PKI 标准来确保各种网络参与者之间的安全通信,并确保发布在区块链上的消息得到正确的身份验证。

1.PKI 四个关键要素

  1. 数字证书 (Digital Certificates)
  2. 公钥和私钥 (Public and Private Keys)
  3. 证书颁发机构 (Certificate Authorities)
  4. 证书吊销列表 (Certificate Revocation Lists)

1.数字证书(Digital Certificates)

数字证书是一种文档,其中包含与证书持有者相关的一组属性。最常见的证书类型是符合X.509 标准的证书,它允许在其结构中对一方的识别细节进行编码。

如看作Mary身份信息

  1. Subject包含了若干属性,另X.509 证书中还有其他属性。
  2. Mary 是SUBJECT证书的主人,突出显示的SUBJECT文本显示了关于 Mary 的关键事实。
  3. Mary的公钥在证书上显示,私钥没显示,私钥必须保密。
  4. 所有属性都可以使用称为密码学的数学技术记录下来,这样篡改就会使证书失效

Mary 的 X.509 证书可看成一张无法更改的数字身份证。

2.身份验证、公钥和私钥 (Authentication, Public keys, and Private Keys)

身份验证和消息完整性是安全通信中的重要概念。

  1. 身份验证要求交换消息的各方确信创建特定消息的身份。
  2. 消息具有“完整性”意味着在其传输过程中不能被修改。

传统的身份验证机制依赖于数字签名,顾名思义,数字签名允许一方对其消息进行数字签名。数字签名还为签名消息的完整性提供了保证。
从技术上讲,数字签名机制要求每一方持有两个加密连接的密钥:

  1. 一个广泛可用并充当身份验证锚的公钥,
  2. 一个用于在消息上生成数字签名的私钥 。

数字签名消息的接收者可以通过检查附加签名在预期发送者的公钥下是否有效,来验证接收消息的来源和完整性。
私钥和各自的公钥之间的独特关系是使安全通信成为可能的加密魔法。密钥之间独特的数学关系使得私钥可用于在消息上生成签名,只有相应的公钥才能匹配,并且只能在同一消息上。

Mary 使用她的私钥对消息进行签名。任何看到签名消息的人都可以使用她的公钥来验证签名。

3.证书颁发机构(Certificate Authorities)

通常数字身份 digital identity(或简称身份)具有符合 X.509 标准并由证书颁发机构 (CA) 颁发的经过加密验证的数字证书的形式。
常见安全协议:Symantec(最初是 Verisign)、GeoTrust、DigiCert、GoDaddy 和 Comodo 等。

证书颁发机构将证书分发给不同的参与者。这些证书由 CA 进行数字签名,并将参与者与参与者的公钥绑定在一起(以及可选的完整属性列表)。因此,如果一个人信任 CA(并且知道它的公钥),它可以相信特定参与者绑定到证书中包含的公钥,并拥有包含的属性,通过验证参与者证书上的 CA 签名。
证书可以广泛传播,因为它们既不包括参与者的私钥,也不包括 CA 的私钥。因此,它们可以用作信任锚,以验证来自不同参与者的消息。
CA 也有一个证书,它们可以广泛使用。这允许给定 CA 颁发的身份的消费者通过检查证书是否只能由相应私钥的持有者 (CA) 生成来验证他们。
在区块链环境中,每个希望与网络交互的参与者都需要一个身份。在这种情况下,您可能会说一个或多个 CA可用于从数字角度定义组织的成员。

1.根 CA、中间 CA 和信任链(Root CAs, Intermediate CAs and Chains of Trust)

CA 有两种形式:根 CA和中间CA。
由于根 CA(Symantec, Geotrust 等)必须将数亿个证书安全地分发给互联网用户,因此将这个过程分散到所谓的中间 CA上是有意义的。
这些中间 CA 的证书由根 CA 或其他中间机构颁发,允许为链中任何 CA 颁发的任何证书建立“信任链”。
这种追溯根 CA 的能力不仅允许 CA 的功能扩展,同时仍然提供安全性——允许使用证书的组织放心地使用中间 CA——它限制了根 CA 的暴露,如果受到损害,将危及整个信任链。另一方面,如果中间 CA 受到损害,则风险会小得多。

只要每个中间 CA 的证书的颁发 CA 是根 CA 本身或对根 CA 有信任链,就在根 CA 和一组中间 CA 之间建立信任链

2.Fabric CA

Fabric CA是一个私有根 CA 提供者,能够管理具有 X.509 证书形式的 Fabric 参与者的数字身份。
由于 Fabric CA 是针对 Fabric 根 CA 需求的自定义 CA,因此它本质上无法提供 SSL 证书以供浏览器中的一般或自动使用。但是,由于必须使用某些CA 来管理身份(即使在测试环境中),所以 Fabric CA 可用于提供和管理证书。使用公共/商业根或中间 CA 来提供标识也是可能的,而且是完全合适的。

4.证书吊销列表(Certificate Revocation Lists)

它只是对 CA 知道由于某种原因而被吊销的证书的引用列表。如CRL 就像一张被盗信用卡的列表。
当第三方想要验证另一方的身份时,它首先检查颁发 CA 的 CRL 以确保证书没有被吊销。
验证者不必检查 CRL,但如果他们不这样做,他们就会冒着接受受损身份的风险。

使用 CRL 检查证书是否仍然有效。如果冒名顶替者试图将受损的数字证书传递给验证方,则可以首先根据颁发 CA 的 CRL 检查它,以确保它没有被列为不再有效。
注意:被吊销的证书与即将到期的证书非常不同。吊销的证书尚未过期——从其他方面来看,它们是完全有效的证书。

五.会员资格 Membership

如何使用这些身份来代表区块链网络的受信任成员。
会员服务提供商 (MSP) ,它通过列出其成员的身份或通过识别来确定信任域的成员(例如组织),确定哪些根 CA 和中间 CA 是受信任的哪些 CA 被授权为其成员颁发有效身份,或者——通常情况下——通过两者的结合。

有关hyperledger fabric介绍的更多相关文章

  1. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  2. H2数据库配置及相关使用方式一站式介绍(极为详细并整理官方文档) - 2

    目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式

  3. Spring Cloud Gateway 服务网关的部署与使用详细介绍 - 2

    为什么需要服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关,客户端只能在本地记录每个微服务的调用地址,当需要调用的微服务数量很多时,它需要了解每个服务的接口,这个工作量很大。有了网关之后,网关作为系统的唯一流量入口,封装内部系统的架构,所有请求都先经过网关,由网关将请求路由到合适的微服务。使用网关的好处1)简化客户端的工作。网关将微服务封装起来后,客户端只需同网关交互,而不必调用各个不同服务;(2)降低函数间的耦合度。一旦服务接口修改,只需修改网关的路由策略,不必修改每个调用该函数的客户端,从而减少了程序间的耦合性(3)解放开发

  4. ruby - Vim 详细介绍了 Rails 的自动完成功能 - 2

    我发现python的细节自动完成很好RubyonRails有类似的方法描述吗? 最佳答案 有篇不错的文章"UsingVIMasacompleteRubyonRailsIDE"其中引用rails.vim.这似乎是RailsforVIM的实际标准。(不过,我还没有使用过它,但很快就会尝试。)这允许你做很多与Rails相关的任务,但对自动完成没有帮助。还有一篇"RubyAutocompleteinVim"(遗憾的是不再可用)这就是您要搜索的内容。我不知道,理解Rails的所有插件魔法和元编程的东西是否足够聪明。它至少在vim的配置中提到了

  5. 华为防火墙简单介绍 - 2

    防火墙防火墙分类第一代防火墙:包过滤防火墙包过滤防火墙的缺点第二代防火墙:代理防火墙第三代防火墙:状态防火墙第四代防火墙:UTM防火墙第五代防火墙:下一代防火墙华为防火墙介绍安全策略防火墙的会话表防火墙分类第一代防火墙:包过滤防火墙属于第一代防火墙技术,在没有专用防火墙设备时,一般由路由器实现该功能。将网络上传送数据包的IP首部以及TCP/UDP首部,获取发送源的IP地址和端口号,以及目的地的IP地址和端口号,并将这些信息作为过滤条件,决定是否将该分组转发至目的地网络分组过滤的执行需要设置访问控制列表。访问控制列表也可以称为安全策略(简称策略)或安全规则(简称规则)。类似于进站检票的做法,符合

  6. Qt样式表之 QSS 语法介绍;QLineEdit、 - 2

     内容来自Qt样式表之QSS语法介绍-3YL的博客Qt样式表是一个可以自定义部件外观的十分强大的机制,可以用来美化部件。Qt样式表的概念、术语和语法都受到了HTML的层叠样式表(CascadingStyleSheets, CSS教程)的启发,不过与CSS不同的是,Qt样式表应用于部件的世界。类型选择器QPushButton匹配QPushButton及其子类的实例ID选择器QPushButton#okButton匹配所有objectName为okButton的QPushButton实例。 CSS常用样式1CSS文字属性注:px:相对长度单位,像素(Pixel)。pt:绝对长度单位,点(Point

  7. Android对话框的详细介绍(提示对话框,自定义对话框) - 2

    简介:我们都知道在Android开发中,当我们的程序在与用户交互时,用户会得到一定的反馈,其中以对话框的形式的反馈还是比较常见的,接下来我们来介绍几种常见的对话框的基本使用。前置准备:(文章最后附有所有代码)我们首先先写一个简单的页面用于测试这几种Dialog(对话框)代码如下,比较简单,就不做解释了一、提示对话框(即最普通的对话框)首先我们给普通对话框的按钮设置一个点击事件,然后通过AlertDialog.Builder来构造一个对象,为什么不直接Dialog一个对象,是因为Dialog是一个基类,我们尽量要使用它的子类来进行实例化对象,在实例化对象的时候,需要将当前的上下文传过去,因为我这

  8. 技术分享 | observer 资源水位介绍 - 2

    作者:郭斌斌爱可生DBA团队成员,负责项目日常问题处理及公司平台问题排查。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。OceanBase集群界面会展示Observer的资源水位,今天简单了解一下资源水位的数值代表的含义以及关联参数现有test_1集群,只有一个sys租户Sys租户的资源配置:Cpu:2.5-5Memory:3G-3GUnit:1集群的资源水位信息以10.186.63.198为例,浅看一下cpu、内存、磁盘的含义以及相关联参数cpu:2.5/17核2.5代表observer上已经分配给租户的cpu核数,该数值是租户的MinCPU

  9. (一)专题介绍:移动端安卓手机改造成linux服务器&linux服务器中安装软件、部署前后端分离项目实战 - 2

    快捷目录前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法三、Linux服务器部署前后端分离项目流程1.前提准备(安装必要软件,搭建环境):2.前后端分离项目的详细部署过程:总结前言总体概述:本篇文章隶属于“手机改造服务器部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目

  10. 涡旋光束基本概念介绍 - 2

    涡旋光束及其MATLAB实现前言涡旋光束的基本概念常见的涡旋涡旋光束涡旋光束的产生方法前言笔者新开一块专栏,专门用于讨论整理总结涡旋光束的相关内容,从基本的概念出发,推导相关的公式,并结合MATLAB进行相关的仿真,不清楚这个专栏会更新多少期,我会分享部分的代码,全部的代码有需要的话可以私聊我。当然大家对这个专栏感兴趣的话,欢迎积极交流。涡旋光束的基本概念​涡旋光束(vortexbeam)是指携带光学涡旋,具有exp(imϕ)exp(im\phi)exp(imϕ)相位分布的光束,其中mmm表示相位拓扑电荷数,ϕ\phiϕ是柱坐标下的方位角。之前的分享中笔者已经说明了部分的激光光束的表达式,想要

随机推荐