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

news/2024/4/27 16:46:23/文章来源:https://blog.csdn.net/qq_47959003/article/details/136996289

写在前面:最近因为业务需要,开始学习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.luyixian.cn/news_show_1026514.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Bug】记录2024年遇到的Bug以及修复方案

--------------------------------------------------------分割线 2024.3.22------------------------------------------------------- 1、load_sample_image raise AttributeError(“Cannot find sample image: %s” % image_name) AttributeError: Cannot find sample imag…

[linux初阶][vim-gcc-gdb] OneCharter: vim编辑器

一.vim编辑器基础 目录 一.vim编辑器基础 ①.vim的语法 ②vim的三种模式 ③三种模式的基本切换 ④各个模式下的一些操作 二.配置vim环境 ①手动配置(不推荐) ②自动配置(推荐) vim是vi的升级版,包含了更加丰富的功能. ①.vim的语法 vim [文件名] ②vim的三种模式 命令…

WPF —— DockPanel、ProgressBar 控件详解

ProgressBar 控件详解 1Progress bar简介 ProgressBar:进度条控件。 WPF带有一个方便的控件用于显示进度,称ProgressBar。它的工作原理就是设置最小值和最大值然后通过递增一个值,这样就可以直观的显示当前进度情况。 2 Progress bar常用的…

DFS:从递归去理解深度优先搜索

一、深入理解递归 二、递归vs迭代 三、深入理解搜索、回溯和剪枝 四、汉诺塔问题 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public: //笔试题&#xff0c;不讲武德&#xff0c;CAvoid move(int n,vector<int>& A, vector<int>& B, ve…

前端实现浏览器自定义滚动条

前言&#xff1a; 最近有个项目&#xff0c;产品觉得浏览器默认滚动条太丑了。想美化一下&#xff0c;比如自定义颜色&#xff0c;加上圆角&#xff0c;宽高都要更改一下。我查了资料和文档总结了一下 写法&#xff0c;特此记录以便之后使用。 浏览器滚动条api 总结&#xff…

【爬取网易财经文章】

引言 在信息爆炸的时代&#xff0c;获取实时的财经资讯对于投资者和金融从业者来说至关重要。然而&#xff0c;手动浏览网页收集财经文章耗时费力&#xff0c;为了解决这一问题&#xff0c;本文将介绍如何使用Python编写一个爬虫程序来自动爬取网易财经下关于财经的文章 1. 爬…

代码随想录 Day-25

力扣题目 509.斐波那契数 思路 很理所当然的&#xff0c;可以使用递归的方式其次是用动态规划的方式&#xff0c;动态规划的核心就是递推公式。 那么递推和递归一字之差&#xff0c;有什么区别呢&#xff1f;&#xff08;递推和递归的区别&#xff09; 1、递归 class Solutio…

Java项目:77 springboot母婴商城

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本课题后端使用SpringBoot Spring Cloud框架&#xff0c;前端采用html&#xff0c;JQuery&#xff0c;JS&#xff0c;DIVCSS技术进行编程&…

Redis中AOF文件重写与同步

AOF文件的写入与同步 Redis服务器进程就是一个时间循环(loop),这个循环中的文件时间负责接收客户端的命令请求&#xff0c;以及向客户端发送命令回复&#xff0c;而时间事件则负责执行像serverCron函数这样需要定时运行的函数。因为服务器在处理文件事件时可能会执行些命令&am…

【Java程序设计】【C00416】基于(JavaWeb)Springboot的客户管理系统(含论文)

基于&#xff08;JavaWeb&#xff09;Springboot的客户管理系统&#xff08;含论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千…

C# 文件操作

文章目录 C# 文件操作创建文件运行结果 写入文件程序文件运行结果 WriteAllLines-写入多行运行结果 追加字符串运行结果追加多行字符串 读取文件ReadAllText运行结果 ReadAllLines-用数组接收读取的内容运行结果 采用流&#xff08;Stream&#xff09;的方式来读取内容运行结果…

stm32平衡车

目录 一.所需材料 二.PID算法&#xff08;简单说明&#xff09; 直立环 速度环 串级PID 三.使用到的外设 1.定时器输出比较-PWM 2.定时器编码器模式 3.编码器读取速度 4.电机驱动函数 5.外部中断 四、小车 调试 一.所需材料 1.陀螺仪MPU6050--读取三轴的加速度…

C++:梦的开始——创建第一个hello world(1)

我这里使用的编写代码的工具是Start Experimental Instance of Visual Studio 2022 你可以去微软的官网上寻找&#xff0c;并且安装 部署项目 项目就是一个文件夹&#xff0c;他将我们的数据都放到了里面&#xff0c;这就是一个项目 在Visual Studio 2022中 选择c 的空项目&a…

【Linux 08】进程概念

文章目录 &#x1f308; 01. 基本概念&#x1f308; 02. 描述进程 PCB&#x1f308; 03. 使用 ./ 的方式创建进程&#x1f308; 04. ps 查看进程&#x1f308; 05. getpid / getppid 获取进程标识符&#x1f308; 06. kill 终止指定进程&#x1f308; 07. fork 创建子进程&…

python学习14:python中的表达式

python中的表达式 1.表达式是什么呢&#xff1f; 表达式就是一个具有明确结果的代码语句&#xff0c;如11、type(‘字符串’)、3*5等 在定义变量的时候&#xff0c;如age108,等号右侧的就是表达式&#xff0c;也就是有具体的结果&#xff0c;将结果赋值给了等号左侧的变量 2.…

Linux 系统基础操作命令

当前市面上常见的系统&#xff1a;Windows、Linux、Mac OS、Android、IOS…… Linux 不太适合日常使用&#xff0c;但是非常适合用于开发。因此作为一个程序猿来说&#xff0c;Linux 都是务必要掌握的。 Linux 介绍 Linux 发行版 目前市面上比较知名的发行版有&#xff1a;R…

DNS隧道攻击

什么是DNS隧道&#xff1f; DNS隧道是一种网络通信技术&#xff0c;它利用DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;协议来建立隐蔽的通信通道。在正常情况下&#xff0c;DNS协议主要用于将域名解析为IP地址&#xff0c;但攻击者可以通过构造特殊的…

总结 | vue3项目初始化(附相应链接)

如何运行 vue 项目&#xff1a;vscode运行vue项目_vscode启动vue项目命令-CSDN博客 vue3项目搭建 目录管理 git管理&#xff1a;vue3项目搭建并git管理_git 新建vue3项目-CSDN博客 目录调整&#xff1a;vue3项目 - 目录调整-CSDN博客 vscode中快速生成vue3模板&#xff1a…

实现能效升级 | 基于ACM32 MCU的冰箱压缩机变频方案

概述 冰箱制冷系统中最重要的部件是压缩机。它从吸气管吸入低温低压的制冷剂气体&#xff0c;通过电机运转带动活塞对其进行压缩后&#xff0c;向排气管排出高温高压的制冷剂气体&#xff0c;为整个制冷循环提供源动力。这样就实现了压缩→冷凝→膨胀→蒸发 ( 吸热 ) 的制冷循环…

并查集|1971. 寻找图中是否存在路径、684.冗余连接、685.冗余连接II

目录 并查集基础 1971. 寻找图中是否存在路径 684.冗余连接 685.冗余连接II 并查集基础 并查集主要有三个功能。 寻找根节点&#xff0c;函数&#xff1a;find(int u)&#xff0c;也就是判断这个节点的祖先节点是哪个将两个节点接入到同一个集合&#xff0c;函数&#xf…