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

写在前面:最近因为业务需要,开始学习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全栈入门区块链第一天的程序员,先导个人感觉概念到这就差不多了。应用才是王道,看专栏,第二部分,等你部署一遍 ,再回来看一遍概念,基本就通透了许多。

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

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

相关文章

文献阅读工具-->Adobe pdf + 有道词典

Adobe pdf 有道词典 最近一直在考虑用什么文献阅读工具,痛点无非就是想用翻译功能,Adobe pdf的添加注释已经很好用了,使用了zotero,感觉不行(不能直接对原文件修改,有副本,麻烦)。…

vue + LogicFlow 实现流程图展示

vue LogicFlow 实现流程图展示 1.背景 部门主要负责低代码平台,配置端负责配置流程图,引擎端负责流程执行,原引擎端只负责流程执行控制以及流程历史列表展示。现在提出个新的要求,认为仅历史记录不直观,需要在展示完…

Unity学习日记 11.单词识别游戏

目录 1.返回鼠标单击对象的名字 2.鼠标拖动移动对象 3.实现鼠标跟随 4.场景准备工作 5.判断图片与框配对 6.根据配对结果放置图片 1.返回鼠标单击对象的名字 步骤: 创建一个ShowName的脚本,并挂载在摄像机上 RaycastHit2D hitInfo;void Update(){…

Tensorflow2.0笔记 - 使用compile,fit,evaluate,predict简化流程

本笔记主要用compile, fit, evalutate和predict来简化整体代码,使用这些高层API可以减少很多重复代码。具体内容请自行百度,本笔记基于FashionMnist的训练笔记,原始笔记如下: Tensorflow2.0笔记 - FashionMnist数据集训练-CSDN博…

【旅游景点项目日记 | 第一篇】项目服务架构、数据库表设计

Gitee仓库地址:travel-server:景点旅游项目服务端 文章目录 1.项目服务架构2.数据库设计2.1用户服务—travel_ums2.1.1 ums_user—用户表 2.2景点服务—travel_ams2.2.1 ams_attraction—景点表1.2.2 ams_resource_type—资源类型表 2.3票务服务—trabel…

前端框架的简单介绍

html html-结构 盖房子之前先划三室二厅 (超文本标记语言)(可以实现一切的文本) css css-样式 在房里添家具 (层叠样式单)(化妆在脸上叠加) javascript(js) javascript(js)-交互(行为) 我点击你打开 供显示信息的元…

持续集成与版本控制的相关概念

目录 一、持续集成 1.1 持续集成基本概念 1.1.1 持续集成的含义 1.1.1.1 持续集成流程是依赖产品版本迭代和版本分支而产生的 1.1.1.2 持续集成流程中包含的内容 1.1.2 传统打包模式说明 1.1.2.1 传统打包模式概述 1.1.2.2 传统打包模式问题 1.1.3 持续集成模式 1.1.…

GIt的原理和使用(五)

目录 多人协作 多人协作一 准备工作 协作开发 多人协作二 准备工作 额外场景 申请单合并分支 更推荐写法 远程分支删除后,本地git branch -a依然能看到的解决办法 多人协作 多人协作一 目标:在远程master分支下的file.txt文件新增代码“aaa”…

Adobe推出20多个,企业版生成式AI定制、微调服务

3月27日,全球多媒体领导者Adobe在拉斯维加斯召开“Summit 2024”大会,重磅推出了Firefly Services。 Firefly Services提供了20 多个生成式AI和创意API服务,支持企业自有数据对模型进行定制、微调,同时可以与PS、Illustrator、Ex…

压测k8s服务资源不足怎么处理

副本 在Kubernetes(简称K8s)中,Pod是最小的调度单元,而Pod的副本则是指同一个Pod的多个实例。在实际应用中,经常需要创建多个Pod的副本来增加应用的容错性和可伸缩性。 k8s的pod副本的负载均衡 Kubernetes中的Pod副本…

区块链食品溯源案例实现(二)

引言 随着前端界面的完成,我们接下来需要编写后端代码来与区块链网络进行交互。后端将负责处理前端发送的请求,调用智能合约的方法获取食品溯源信息,并将结果返回给前端。 通过前后端的整合,我们可以构建一个食品溯源系统&#xf…

Tensorflow CUPTI could not be loaded 解决

使用conda在指定环境安装cudatoolkit和cudnn后出现 CUPTI could not be loaded问题 conda install cudatoolkit11.0.3 conda install cudnn8.0.5.39 将本机C:\Program Files\NVIDIA Corporation\Nsight Systems xxxx\target-windows-x64 包含cupti的文件均复制到 D:\xxx\cond…

mysql高阶之(视图)

目录 视图概念 视图概念 视图是基于一个或多个表的SQL查询结果的虚拟表。视图并不实际存储数据,而是保存了查询的定义。当你查询视图时,数据库引擎会按照视图的定义执行底层的SQL查询。 (一)视图作用 视图的主要作用时一张表或多…

如何用Flask中的Blueprints构建大型Web应用

本文分享自华为云社区《构建大型Web应用Flask中的Blueprints指南》,作者: 柠檬味拥抱。 什么是Blueprints? 什么是Blueprints? Blueprints是Flask中的一种模式,用于将应用程序分解为可重用的模块。每个蓝图实际上是…

AES加密解密算法

一,AES算法概述 AES属于分组加密,算法明文长度固定为128位(单位是比特bit,1bit就是1位,128位等于16字节) 而密钥长度可以是128、192、256位 当密钥为128位时,需要循环10轮完成加密&#xff0…

鸿蒙雄起!风口就在当下,你如何抉择?

近年来,华为自主研发的鸿蒙操作系统(HarmonyOS)引起了广泛的关注和讨论。鸿蒙系统不仅标志着华为在软件领域的一次重大突破,也预示着全球智能设备市场格局的潜在变化。本文将深入探讨鸿蒙系统的兴起、其在市场上的表现以及对程序员…

html页面使用@for(){},@if(){},利用jquery 获取当前class在列表中的下标

基于以前的项目进行修改优化,前端代码根据List元素在html里进行遍历显示 原先的代码: 其中,noticeGuide.Id是标识noticeGuide的唯一值,但是不是从0开始的【是数据库自增字段】 但是在页面初始化加载的时候,我们只想…

搜维尔科技:【应急演练】【工业仿真】救援模拟演练可视化仿真项目实施

安全救援综合演练系统是一套面向公共安全事故、预案管理、应急救援模拟演练的虚拟仿真解决方案,它为警察、消防以及专门的应急救援保障部门提供一个综合的应急救援培训和仿真演练平台。平台主要通过设计不同的事故模型和特定的灾难场景,定制不同的应急救…

鸿蒙OS开发实例:【工具类封装-emitter组件间通信】

import Emitter from ohos.events.emitter; import pasteboard from ohos.pasteboard; MyEmitterUtil 是一个针对 HarmonyOS 的事件驱动编程封装类,主要用于组件间的通信和数据传递。 使用要求: DevEco Studio 3.1.1 Release 或更高版本API 版本&…

苍穹外卖02(新增员工,重复内容异常处理器,绑定当前用户ThreadLocal,日期格式问题,分页查询,启用禁用,编辑员工)

目录 一、员工管理-新增员工 1.需求分析和设计 2.代码开发 3 功能测试 接口文档测试 前后端联调测试 4 代码完善一:增加异常处理器 5 代码完善二:绑定当前用户名 (1) 准备ThreadLocal工具类 (2) 修改拦截器代码 (3) Service里获取当前用户 小…