hyperledger fabric介绍

2023-11-20

一.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 被授权为其成员颁发有效身份,或者——通常情况下——通过两者的结合。

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

hyperledger fabric介绍 的相关文章

  • python3.6+wamp配置python脚本环境(Windows)

    最近学到ajax 教程里需要用到wamp 这里就不介绍wamp了 wamp包含了apache服务器 但其默认只支持php脚本 而本人没学过php 所以希望降低学习成本 于是动手修改apache配置文件 网上有很多修改的教程 但我尝试了很多种

随机推荐

  • 5. handle方法详解-handler获取

    文章目录 1 概览 2 handle方法回顾 3 HandlerMappings继承关系 4 getHandlerInternal 4 1 RequestMappingInfoHandlerMapping getHandlerInterna
  • 包管理

    8 包管理 8 1 Go Modules是什么 Go语言通过包管理来封装模块和复用代码 这里我们只介绍Go Modules管理方法 Go Modules于Go语言1 11版本时引入 在1 12版本正式支持 是由Go语言官方提供的包管理解决方
  • VC从系统进程中查找并杀掉指定进程

    写程序的时候 有时候会调用别 别人写的 的程序的EXE 有的时候还会隐藏这个EXE 但是由于你的程序退出时并没有关闭这个EXE 只是隐藏了 所以在系统的进程查看窗口里面还是会看到的 这样当你下次再执行你自己的程序 还要调用这个程序的时候就会
  • [转载]解决PPPOE宽带拨号经常掉线的一种方法(适合刷了第三方固件的无线路由)

    文章作者 姜南 Slyar 文章来源 Slyar Home www slyar com 转载请注明 谢谢合作 最近在进行下载或看视频等大量占用网络带宽的行为时 宽带PPPOE连接非常不稳定 经常自动掉线 严重影响我的下载进程和看视频的乐趣
  • MariaDB数据库的主从配置

    1 前置工作 首先准备两台可以互相ping通的机器 两台机器可以互为主从 示例 10 210 23 77主服务器 10 20 84 183从服务器 2 安装 在两台机器上各自安装数据 解压MariaDB安装包 tar zxvf MariaD
  • 基于深度学习的无人机在室内走廊环境中的视觉导航

    与激光雷达和雷达不同 使用单目摄像头作为无人机传感器的优势之一是它能够检测各种视觉特征 例如颜色 纹理和形状 这种适应性使其能够在各种室内和室外环境中表现良好 将单目摄像头用于无人机的另一个好处是 它允许更轻巧和灵活的设计 该摄像机不需要额
  • 5 个免费的受欢迎的 SQLite 管理工具

    SQLite Expert Personal Edition SQLite Expert 提供两个版本 分别是个人版和专业版 其中个人版是免费的 提供了大多数基本的管理功能 SQLite Expert 可以让用户管理 SQLite3 数据库
  • 区块链中的哈希算法

    区块链中的密码学 密码学在区块链中的应用主要有两个 哈希算法与非对称加密算法 这次主要对哈希算法进行详细的说明 哈希算法 哈希算法的特点有 1 输入可以为任意大小的字符串 2 产生固定大小的输出 3 可以在合理的时间内算出输出值 若要满足密
  • input框限制输入40个字符_input标签的 maxlength 属性(HTML限制最大输入字数)

    实例 下面这个 HTML 表单带有最大长度分别是 85 和 55 个字符的两个输入字段 Name Email 亲自试一试 定义和用法 maxlength 属性规定输入字段的最大长度 以字符个数计 maxlength 属性与 或 配合使用 语
  • centos 修改时间

    文章目录 centos 修改时间 1 查询时间常用命令 2 修改时区 3 修改时间 3 1 手动修改时间 3 2 联网修改时间 centos 修改时间 Centos系统时间分为系统时间和硬件时间 二者必须都修改 重启系统才会永久生效 背景
  • 深入分析linux内核的内存分配函数devm_kzalloc

    在分析驱动代码的时候 经常会遇到使用devm kzalloc 为一个设备分配一片内存的情况 devm kzalloc 是内核用来分配内存的函数 同样可以分配内存的内核函数还有devm kmalloc kzalloc kmalloc 它们之间
  • Android简单的反编译嵌入例子

    简单的反编译嵌入例子 1 创建一个源工程 2 创建一个转接类 如Ed Sdk java 3 在转接类里面建立一个空方法A 方法A需要被调用 4 创建一个库工程 2 创建一个库转接类 如Ed Sdk java 类名方法名变量名完全相同 6 在
  • Java和Scala中泛型类的继承

    Java和Scala中泛型类的继承 1 泛型的学习 2 泛型类的继承 1 泛型的学习 参考 Java编程的逻辑一书 马骏昌编写的 对泛型的讲解很详细 这里着重补充一下关于泛型类的继承 2 泛型类的继承 这里主要有三种情况 存在父类 clas
  • 利用TBDBitmapData对象查找两张图片上的不同

    利用TBDBitmapData对象查找两张图片上的不同 从右上角开始利用双层循环遍历两图上的所有象素点 并相互比较 不完整代码如下 procedure TForm1 Button5Click Sender TObject var Bmp1
  • [人工智能-深度学习-53]:循环神经网络 - LSTM长短记忆时序模型的简化:门控循环网络GRU模型

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121599096 目录 第1章 前序知
  • HTML开始历程Day01

    1 HTML 其实就是网页基本结构 CSS 功能 美化网页 不让网页太单调 JS 功能 能让网页动起来 产生很多的交互行为 HTML是什么 Hyper Text Markup Language 超文本标记语言 服务器端口号 路径位置 HTM
  • Linux下用命令行编译运行Java总结

    最近使用腾讯云的Cloud Studio写Java 只能使用命令行进行编译运行 趁此机会 学习一下Linux的一些常用命令 平时windows下IDE用习惯了 现在用命令行进行编译运行 发现其实问题还是挺多的 所以写下这篇文章 1 java
  • WordPress主题开发 — 模版循环(条件判断、多个循环、新建查询和文章循环)

    循环是 WordPress 通过主题模板文件输出文章的默认机制 在循环中 WordPress 遍历当前页面获取到的所有文章 然后使用主题中的模版标签将其格式化并输出 我们可以用 WordPress 循环来做很多事情 例如 在网站首页显示多个
  • java IO、NIO、AIO详解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 IO流 同步 阻塞 二 NIO 同步 非阻塞 三 NIO2 异步 非阻塞 正文 回到顶部 概述 在我们学习Java的IO流之前 我们都要了解几个关键词 同步与异步 sy
  • hyperledger fabric介绍

    一 Hyperledger Fabric介绍 2015年 Linux基金会启动了Hyperledger项目 目标是发展跨行业的区块链技术 Hyperledger Fabric是Hyperledger中的一个区块链项目 包含一个账本 使用智能