【自我提升】一、Hyperledger Fabric 概念梳理

news2024/11/27 12:51:05

写在前面:最近因为业务需要,开始学习Hyperledger Fabric了,做java全栈工程师可真难搞。现在算是啥类型的都在涉及了,现在这个技术啥都不懂,就先开个学习专栏,记录记录。顺带也给各位道友参考参考。

目录

1. 什么是hyperledger

2. 什么是Hyperledger Fabric

2.1 主要特点

2.2 应用场景

3. 关键名词

 4. 通道概念

4.1 通道的关键特性如下:

4.2 通道的工作机制:

5. 步骤简单梳理

6. 账本

6.1 个人见解

7. 链码和智能合约


我的目标:快速上手!快速掌握!快速开发!冲冲冲!

主要学习应用项目:Hyperledger Fabric

官网文档:入门 — hyperledger-fabricdocs master 文档icon-default.png?t=N7T8https://hyperledger-fabric.readthedocs.io/zh-cn/latest/getting_started.html

1. 什么是hyperledger

        Hyperledger是一个开放源代码的项目,由Linux基金会在2015年启动,旨在推动跨行业的区块链技术。Hyperledger并不是一种区块链技术,而是一个区块链项目的生态系统,包含了多个区块链和分布式账本技术的框架、库和工具集,它支持企业级的区块链应用开发。

        Hyperledger项目的目标是提供一个强健、可扩展、有高度模块化的框架,让企业能够建立自己的区块链解决方案或应用,以此来改善或简化业务流程。它主要关注的是性能、安全性和互操作性,特别适合于金融、医疗、供应链管理等领域的应用。

Hyperledger拥有多个子项目,主要有五大项目:

  • Hyperledger Fabric:一个允许组件、如共识和成员管理等,被插拔的企业级权限区块链平台。(这个是核心技术,需要重点掌握!!!)
  • Hyperledger Sawtooth:一个企业级区块链平台,用于构建、部署和运行分布式账本。Sawtooth支持可定制的区块链规则,并提供了一个新颖的共识机制——Proof of Elapsed Time (PoET)。
  • Hyperledger Indy:专注于数字身份的分布式账本。
  • Hyperledger Iroha:简单且易于使用的区块链平台,特别适用于身份管理和数字资产管理。
  • Hyperledger Besu:一个以太坊客户端,支持智能合约和私有网络以及公共网络。

其中又有五大常用工具,如下所示:

  1. CALIPER:Hyperledger Caliper是一个区块链基准测试工具,它可以测量一个特定区块链实现在不同条件下的性能,包括事务处理速度(TPS)、事务延迟、资源消耗等指标。它特别适用于Hyperledger Fabric,帮助开发者了解其区块链解决方案的性能瓶颈和优化方向。

  2. CELLO:Hyperledger Cello旨在作为区块链即服务(BaaS)平台,允许用户通过云服务或在内部环境中轻松地部署、管理和运行区块链网络。Cello通过提供多种管理功能,包括链码管理、节点配置和监控等,帮助简化区块链的管理和操作。

  3. COMPOSER:Hyperledger Composer是一个开发框架和工具集,旨在简化Hyperledger Fabric区块链的开发和部署。它允许开发者通过高级抽象和模型化语言来定义业务网络,包括资产、参与者、交易和访问控制规则,从而加快区块链应用的开发过程。值得注意的是,Composer项目已经停止维护,推荐开发者使用Fabric的原生API和工具。

  4. EXPLORER:Hyperledger Explorer是一个区块链浏览器,用于可视化和查询Hyperledger Fabric网络的信息。它允许用户查看网络的关键信息,如区块链的结构、产生的区块、交易详情、网络参与者以及智能合约(链码)。这使得监控和审计区块链网络变得更加直观和方便。

  5. QUILT:Hyperledger Quilt提供了一种跨区块链和非区块链系统的互操作性方案,通过实现Interledger协议(ILP),允许不同的支付系统之间的安全转账。Quilt的目标是使得各种区块链网络能够互相连接,支持各种货币(包括法定货币和数字货币)之间的无缝转移,促进了不同区块链生态系统之间的价值交换。

2. 什么是Hyperledger Fabric

        Hyperledger Fabric是一个开源的企业级权限区块链平台,旨在为各种行业应用提供一个稳定、安全、可扩展的区块链基础设施。作为Hyperledger项目下的一个主要框架,Fabric特别适用于企业级的应用场景,它支持智能合约(在Fabric中称为链码)的执行,并能够处理复杂的业务逻辑。

2.1 主要特点

  1. 权限化网络:与公有区块链不同,Fabric允许建立一个权限化的网络环境,网络参与者需要身份验证,这有助于满足企业对隐私和安全的需求。

  2. 模块化和可扩展性:Fabric设计时就考虑到了模块化,各个组件(如共识机制、成员服务、链码等)都可以独立替换,以适应不同的业务需求。

  3. 链码:链码是运行在Fabric网络上的智能合约,用于编码业务逻辑。链码可以用多种编程语言编写,如Go、Java和Node.js,为应用提供了高度的灵活性。

  4. 通道:Fabric通过引入“通道”(Channel)的概念,支持在同一个网络中创建私有的子网络,使得不同组织之间可以安全地交换信息,而不被网络上的其他组织所见。

  5. 共识机制:Fabric采用的是可插拔的共识机制,可以根据业务需求选择适合的共识算法。这种灵活性使得Fabric能够更好地适应不同的应用场景。

  6. 性能和效率:由于采用了高效的共识机制和优化的交易流程,Fabric能够实现高吞吐量和低延迟的交易处理,满足企业应用的需求。

2.2 应用场景

        由于其高度的可定制性和权限化特性,Fabric被广泛应用于各种行业,如金融服务、供应链管理、医疗保健、零售和电子政务等。企业和组织可以利用Fabric搭建自己的区块链解决方案,以实现数据共享、流程自动化、身份验证、供应链可视化等目标。

名词补充:

  1. 公有链:是完全开放的区块链网络,任何人都可以参与网络的维护、读取、发送交易并参与到其共识过程中。比特币和以太坊是最著名的公有链例子。公有链的特点是去中心化、透明度高、无需许可。

  2. 私有链:是受限的区块链网络,网络的访问和参与权限被一个组织或集体所控制。私有链适用于企业内部应用,其中数据的隐私和控制权是关键考虑因素。私有链提供了更高的交易处理速度和效率,但牺牲了一定程度的去中心化。

  3. 联盟链:介于公有链和私有链之间,它由多个组织共同维护。参与其中的每个组织都可以参与到区块链的管理和共识过程中。联盟链适合于多个组织之间需要共享数据但又希望保持一定控制权和隐私的场景。

  4. 智能合约:是存储在区块链上的自执行合约,其中条款由代码直接编写。智能合约可以自动执行、控制或文档化相关事件和行为的法律条款。智能合约使得在没有中介的情况下,可信地执行合约成为可能,广泛应用于自动化交易、去中介化应用(DApp)等场景。(个人理解:一个满足条件的回调函数

3. 关键名词

节点(Node)

网络中的一个独立计算实体。节点可以承担不同的角色,包括但不限于客户端(提交交易)、背书节点(对交易进行背书)和排序服务(打包交易进区块)
智能合约(Chaincode)在 Hyperledger Fabric 中,智能合约被称为 Chaincode,是运行在区块链网络上的业务逻辑,负责读取或更改账本的状态
通道(Channel)通道是 Fabric 中实现数据隔离和保密的一种机制,允许一组特定的参与者之间进行私密交易,每个通道都有自己独立的账本。
账本(Ledger)账本是区块链网络中记录所有事务历史的不可变数据库。在 Fabric 中,账本由区块链(用于记录交易的历史记录)和世界状态(记录当前数据状态的数据库)组成。
背书策略(Endorsement Policy)定义了交易在被认定为有效之前需要哪些参与者的背书(即认可)。这是一种确保交易一致性和完整性的机制。
排序服务(Ordering Service排序服务是 Fabric 网络中的一个组件,负责接收所有网络交易,将它们排序形成区块,然后分发给所有通道的参与者。
组织(Organization)Fabric 网络中的参与者,可以代表一个或多个用户。每个组织都可以拥有并操作一个或多个节点,并且可以参与一个或多个通道。
对等节点(Peer)对等节点是网络中的一个节点,负责持有账本的副本、处理交易、执行链码以及与其他对等节点通信以保持账本数据的一致性。
区块(Block)区块链中的基本单位,用于记录一定数量的交易。每个新区块都会被添加到链的末端。
世界状态(World State)记录了账本当前状态的数据库,简化了数据查询和更新的过程。它是对最新的交易结果的快照。
MSP(Membership Service Provider)成员身份服务提供者,负责在 Fabric 网络中管理用户和节点的身份认证,确保交易参与者的身份和角色得到确认。
CA(Certificate Authority)证书授权中心,负责发放和管理数字证书,以支持网络中的身份验证和安全通信。
背书节点(Endorsing Peer)一种特殊的对等节点,负责执行链码(智能合约),验证交易逻辑,并对交易进行背书。
提交节点(Committing Peer)网络中的节点,负责接收排序服务产生的区块,验证区块内的交易,并将有效交易更新到账本和世界状态中。
锚节点(Anchor Peer)在使用通道进行通信时,每个组织指定的对等节点,用于跨组织的发现和通信。
共识机制(Consensus一组规则和过程,网络中的不同节点使用这些规则和过程来验证交易,达成一致,并维护账本的一致性和完整性。
配置区块(Configuration Block)包含有关网络配置(如策略、成员身份等)的信息的特殊区块。这是通道或系统链的第一个区块。
策略(Policy)定义了在特定操作(如链码部署或更新账本)期间必须满足的规则和条件。
资产(Asset)在区块链网络中可以被交易或转移的任何有价值的东西,通常通过智能合约进行管理。

 4. 通道概念

        在Hyperledger Fabric中,通道(Channel)是一个非常重要的概念,它允许网络中的一组特定参与者之间建立一个私有的子网络,实现数据隔离和保密。每个通道代表了一个独立的链,具有自己的账本和智能合约(链码),仅通道内的成员可以访问和交互。

4.1 通道的关键特性如下:

  1. 隐私保护:通过通道,Fabric能够支持敏感业务操作的隐私需求,因为通道内的交易数据和账本信息仅对通道成员可见。

  2. 数据隔离:在同一Fabric网络中,可以创建多个通道,每个通道的账本数据互相隔离,确保了数据的安全性和隐私性。

  3. 灵活性和可扩展性:组织可以根据业务需求加入或创建新的通道,这种灵活的通道管理方式使得网络可以根据实际需要灵活扩展。

  4. 效率:由于通道将网络参与者和交易范围限定在一个较小的群体内,可以提高交易处理的效率,降低延迟。

4.2 通道的工作机制:

  • 创建和加入:网络中的一个或多个组织可以共同创建一个通道,并邀请其他组织加入。加入通道的组织需要在其自己的节点上配置通道,从而成为通道的成员。

  • 账本和链码:每个通道有自己独立的账本和链码(智能合约)。通道成员之间的交易只会记录在该通道的账本中,并且只有该通道的成员能够访问和执行链码。

  • 隔离与互动:尽管通道提供了数据隔离的功能,但组织仍然可以根据需要跨通道进行交互,例如,一个组织可以同时是多个通道的成员。

节点与通道的有什么关系?

  • 隶属关系:节点通过加入通道来参与网络中的特定交易和合约执行。一个节点可以加入多个通道,根据其业务需求与不同的组织进行交互。

  • 数据隔离:通道内的交易记录和账本数据仅对该通道的成员节点可见。这种机制使得节点可以在保障数据隔离和隐私的前提下,参与到多个通道中。

  • 链码执行:在一个通道中,交易是通过执行链码(智能合约)来进行的。链码执行的结果需要由通道内的背书节点验证并背书。最终,交易结果被提交到所有Peer节点的账本中,但只限于该通道的Peer节点。

  • 灵活性和扩展性:通过加入或创建新的通道,节点(尤其是Peer节点)可以灵活地扩展其在网络中的参与度。这为企业提供了一种高度可控的方式来管理其在区块链网络中的数据和业务逻辑。

5. 步骤简单梳理

        通过上述一些基础概念的了解,可以大概梳理一下整个流程。以便于掌握个大致体系,然后再慢慢探索补全。(PS:先看基础,个人实际上是边搭建、边看官网文档,边写笔记的。搭建部分可以见专栏)

  1. 构建区块链网络基础设施:首先,需要设置网络的基础架构,包括排序服务(Orderer服务)和一些初始的Peer节点。这些基础设施组件不特定于任何通道。

  2. 创建组织:在网络中定义不同的组织。组织是网络中的主要实体,代表了不同的参与者。

  3. 创建Peer节点:为每个组织创建Peer节点。这些节点将会存储账本数据和执行链码(智能合约)。

  4. 创建和配置通道:创建通道,并为通道配置参与的组织。通道是一个逻辑结构,使得组织之间可以私密地交换信息。

  5. 将组织加入到通道中:在通道创建好之后,需要将一个或多个组织加入到通道中。这一步实际上涉及到配置组织的Peer节点,使其成为通道的成员。

  6. 部署链码到Peer节点:开发链码(智能合约),并将其安装在通道中的一个或多个Peer节点上。链码需要在通道中被实例化,以便在该通道上执行业务逻辑。

  7. 将Peer节点加入到通道中:虽然在第5步中组织已经加入到通道,但实际上是通过配置组织的Peer节点来实现的。这一步确保了Peer节点能够参与通道中的交易处理和账本维护。

  8. 交易和链码执行:一旦链码被部署,网络中的参与者(通过客户端应用)就可以发起交易,这些交易将由链码处理,并被记录在通道的账本中。

6. 账本

        在Hyperledger Fabric中,账本实际上是存储在Peer节点上的。每个加入到特定通道的Peer节点都会维护该通道的一个账本副本。Fabric采用了分布式账本技术,每个Peer节点都保存有完整的账本副本,包括世界状态和交易历史。这样做的目的是为了确保数据的一致性和可靠性,同时提高网络的容错性。

如何理解世界状态和账本之间的关系?账本又是如何进行更新的?

        在Hyperledger Fabric中,账本由两个主要部分组成:世界状态(World State)和交易日志(区块链)

世界状态与账本的关系

  1. 世界状态:世界状态是一个数据库(默认情况下是LevelDB或CouchDB),用于存储网络中所有资产的当前状态。它以键值对的形式存储,使得数据的读取效率非常高。世界状态提供了一个快照,反映了最近一次交易后的资产状态。

  2. 交易日志(区块链):交易日志是账本的不可变部分,记录了从网络创建开始的所有交易历史。它是一个持续增长的记录,每当有新的交易被验证并提交时,这个交易就会被添加到交易日志中。

账本的更新过程

账本的更新遵循以下基本步骤:

  1. 交易提案:客户端向网络提交一个交易提案,请求执行链码(智能合约)。

  2. 背书:指定的背书节点执行链码,并对交易结果进行背书(即验证交易并签名)。背书节点在执行链码时会读取世界状态,但此时不会更新世界状态。

  3. 交易提交:客户端收集必要的背书,将交易发送给排序服务。排序服务将交易打包成区块。

  4. 区块分发:排序服务向所有Peer节点分发新的区块。

  5. 交易验证和提交:每个Peer节点验证区块中的每笔交易(检查背书策略是否满足,以及交易的有效性)。验证通过后,Peer节点将这些交易写入交易日志,并根据这些交易更新世界状态。

6.1 个人见解

        这里的账本概念,我认为可以用java中的事务来去理解。世界状态可以看成一个数据库,区块链(交易日志)可以看成一个记录日志的。如果交易失败,就发生事务回滚,数据库的值不会更新,但是过程却被交易日志记录了。这也就是:不论交易成功还是失败都可以将日志记录,如果失败则不会更新数据库的值。

7. 链码和智能合约

        智能合约可以理解为定义的一个方法或函数,这个方法里面写了一些校验逻辑。一般情况下,简单来说这两个可以认为是一个概念。但是深入理解后,一个链码可以打包部署多个智能合约,然后将这个链码部署到节点上去。如果想看更严谨的说法,就去官方文档吧。

        作为一个入门java全栈入门区块链第一天的程序员,先导个人感觉概念到这就差不多了。应用才是王道,看专栏,第二部分,等你部署一遍 ,再回来看一遍概念,基本就通透了许多。

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

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

相关文章

crypto-聪明的小

如图 暗示为栅栏密码 差行输入得到flag

【Android Studio3.5.2安装以及错误错误解决】

前言 下面是博主在安装Android studio时遇到的一些问题,并且花费很长时间寻找解决方法,经过了血和泪的教训下面将自己在安装过程中遇到的查看的资料贴出来(感谢各位大佬的文章帮助本闲狗解答疑惑,此处贴出原文链接,如…

用python,将有道词典中的生词导入扇贝单词

我试过有道词典和扇贝单词,个人感觉扇贝单词记忆功能非常好用,但是扇贝单词没有pc版,而有道在这方面就做的很好。博主平时都是用有道查生词,那有没有办法将有道词典中的生词导入扇贝中呢?下面的过程看上去很复杂&#…

一文搞定防盗链设计

大家好,我是蓝胖子,在涉及到图片或者视频链接时,通常都会提到防盗链,这一节我将会从防盗链的含义到落地,向大家展示如何设计资源的防盗链。 防盗链的含义与作用 防盗链,顾名思义,是为了防止资…

差分与前缀和

目录 差分法 例题:大学里的树木要打药 前缀和 例题:大学里的树木要维护 差分法 差分法的应用主要是用于处理区间问题,当一个数组要在很多不确定的区间,加上相同的一个数,我们如果每个数都进行加法操作的话&#x…

数据结构01 线性表

#include<stdio.h>/* 如果没有使用&符 void test(int x){ */ void test(int & x){x 1024;printf("test函数内部 x %d\n", x);} int main(){int x 1;printf("调用test前 x %d\n", x);test(x);printf("调用test后 x %d\n", …

4.机器学习-十大算法之一线性回归算法(LinearRegression)案例讲解

机器学习-十大算法之一线性回归算法案例讲解 一摘要二个人简介三什么是线性回归四LinearRegression使用方法五糖尿病数据线性回归预测1.数据说明2.导包3.导入数据4.脱敏处理5.抽取训练数据和预测数据6.创建模型7.预测8.线性回归评估指标9.研究每个特征和标记结果之间的关系.来分…

网络体系结构概述

目录 1. OSI/RM参考模型1.1. 物理层1.2. 数据链路层1.3. 网络层1.4. 传输层1.5. 会话层1.6. 表示层1.7. 应用层 2. TCP/IP参考模型3. 理解OSI七层模型 网络体系结构是线代网络技术的整体蓝图。 1. OSI/RM参考模型 开放互联参考模型&#xff08;Open System Interconnection/…

CH347

动态库封装实例 import ctypes# Load the CH347DLL library ch347dll ctypes.WinDLL(CH347DLLA64.dll) # Update the filename if necessary# Define the argument and return types for CH347OpenDevice ch347dll.CH347OpenDevice.argtypes [ctypes.c_ulong] ch347dll.CH3…

Selinux安全策略文件

在Selinux框架中&#xff0c;安全策略都是写在te文件中&#xff0c;以adb.te 文件为例 allow adbd shell_data_file:dir create_dir_perms;策略的基本格式是&#xff1a; rule_name source_type target_type :object_class perm_setrule_name 规则名。常见的规则名有allow,ne…

无问芯穹 MaaS AI 平台公测免费试用笔记:一

本篇文章聊聊正在公开测试的平台&#xff0c;无问芯穹的 MaaS 服务&#xff0c;包含了平台使用体验和一些小技巧。 因为测试给的免费卡时比较少&#xff0c;估计想完成完整测试或许需要一些时间&#xff0c;额外用一些账号进行。就先记录下常规折腾过程吧&#xff0c;让再次“…

element-ui message 组件源码分享

今日简单分享 message 组件的源码&#xff0c;主要从以下四个方面来分享&#xff1a; 1、message 组件的页面结构 2、message 组件的 options 配置 3、mesage 组件的方法 4、个人总结 一、message 组件的页面结构 二、message 组件的 options 配置 前置说明&#xff1a;m…

Centos7 安装 Oracle19c

下载oracle预安装包 wget http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 下载19c安装包 https://www.oracle.com/cn/database/technologies/oracle-database-software-downloads.html#19c 选择…

OpenLayers6实战,OpenLayers实现鼠标拖拽绘制三角形,OpenLayers自定义绘制特殊图形

专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解使用OpenLayers如何绘制三角形。 OpenLayers本身是可以通过多边形绘制来绘制自行绘制三角形的,但是这种绘制方式是通过鼠标点击每个点来实现线条链接的,不支持固定的三角形这种特殊图形绘制的。 因此本章我们通过自定义…

Express.js项目实战(1)—— 我的藏书馆

首先新建文件夹——myLibrary 在vscode中点击文件>点击 Duplicate Workspace(以工作区的方式打开文件夹myLibrary) 点击duplicate Workspace&#xff08;打开工作区&#xff09; 之后&#xff0c;会出现以下界面 点击打开文件夹&#xff0c;选择新建的文件夹&#xff0c;会出…

服务器托管让服务器管理更轻松高效

在信息化飞速发展的今天&#xff0c;服务器作为企业数据处理和信息存储的核心设备&#xff0c;其管理的重要性日益凸显。服务器托管&#xff0c;作为一种高效、专业的服务器管理方式&#xff0c;正逐渐成为众多企业的首选。那么&#xff0c;服务器托管究竟是如何让服务器管理更…

GEE:基于光谱距离方法的变化检测(以滑坡为例)

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine(GEE)平台上,使用光谱向量距离度量方法进行变化检测的代码。代码中使用哨兵数据的光谱向量,并以检测滑坡为例进行演示。 结果如下图所示, 文章目录 一、参考内容1.1 光谱距离1.2 点积二、代码链接三、完整代码一…

Linux中查看文件内容的命令

文章目录 一、七类常见的Linux的文件二、显示命令三、分页显示四、显示文件前后内容五、压缩、解压缩六、补充 一、七类常见的Linux的文件 字符文件类型-普通文件&#xff0c;包括纯文本文件、二进制文件、各种压缩文件等。在find命令中&#xff0c;type 选项中用 f来表示d目录…

GoogleNet神经网络介绍

一、简介 GoogleNet&#xff0c;也称为GoogLeNet&#xff0c;是谷歌工程师设计的一种深度神经网络结构&#xff0c;它在2014年的ImageNet图像识别挑战赛中取得了冠军。该神经网络的设计特点主要体现在其深度和宽度上&#xff0c;通过引入名为Inception的核心子网络结构&#x…

【Jmeter+Influxdb+Grafana性能监控平台安装与部署】

JmeterInfluxdbGrafana性能监控平台安装与部署 前言Influxdb安装与连接Jmeternfluxdb下载&#xff08;winodws&#xff09;Grafana安装与配置 前言 我们在性能测试过程中&#xff0c;在需要较大并发时&#xff0c;为了尽量避免使用GUI界面来节省资源&#xff0c;通常使用命令行…