【自我提升】一、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全栈入门区块链第一天的程序员,先导个人感觉概念到这就差不多了。应用才是王道,看专栏,第二部分,等你部署一遍 ,再回来看一遍概念,基本就通透了许多。

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

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

相关文章

「媒体宣传」媒体邀约几种常见方法!-51媒体

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体邀约的常见方法确实包括电话邀约、邮件邀约、社交媒体邀约以及通过媒体公关公司代邀约等。 电话邀约:这是一种直接且高效的方式,可以通过电话与媒体记者沟通&…

HTTP请求走私!!!(一)

想都是问题,做才是答案 什么是请求走私? HTTP请求走私是针对于服务端处理一个或者多个接收http请求序列的方式,进行绕过安全机制,实施未授权访问一种攻击手段,获取敏感信息,并直接危害其他用户。 Web 应用…

大语言模型(LLM)token解读

1. 什么是token? 人们经常在谈论大模型时候,经常会谈到模型很大,我们也常常会看到一种说法: 参数会让我们了解神经网络的结构有多复杂,而token的大小会让我们知道有多少数据用于训练参数。 什么是token?比…

Hadoop+Spark大数据技术 第三次作业

第三次作业 1.简述HDFS Shell三种操作命令hadoop fs、hadoop dfs、hdfs dfs的异同点。 相同点 用于与 Hadoop 分布式文件系统(HDFS)交互。可以执行各种文件系统操作,如文件复制、删除、移动等。 不同点 hadoop fs、hadoop dfs已弃用&#xf…

使用vue构建一个简单实用的春节红包插件!

摘要:本文将介绍如何使用Vue.js构建一个简单实用的春节红包插件。该插件通过模拟红包的打开和关闭过程,以及金额的随机分配,为春节红包活动提供了一个有趣且互动的体验。 一、引言 在春节这个充满欢乐和祝福的时刻,红包成为了传递…

node.js项目初始化操作

项目环境Vscode 1.新建一个文件夹node.js(xx.js) 2.右键点击node.js,点击打开终端 我在VScode打开终端 输入npm init初始化项目没反应。 解决方法:进入文件夹node.js,出入cmd跳转到终端 重新输入npm init命令 正确结果如下图 后续命令按下…

【Leetcode】2580. 统计将重叠区间合并成组的方案数

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给你一个二维整数数组 ranges ,其中 ranges[i] [starti, endi] 表示 starti 到 endi 之间(包括二者)的所有整数都包含在第 i 个区间中。 你需要…

Tunes不能读取iPhone的内容,请前往iPhone偏好设置的摘要选项卡,然后单击恢复以将此iPhone恢复为出厂设置

重启itunes: 参考链接: https://baijiahao.baidu.com/s?id1642568736254330322&wfrspider&forpc 人工智能学习网站: https://chat.xutongbao.top

插值表达式、Vue指令、指令补充

vue上手步骤 <body><!-- vue2语法 --><!-- 1.准备容器&#xff1a;一会vue就会把数据展示到这里 --><div id"app"><!-- 4.使用{{ }}即可显示数据 &#xff0c;{{}}就是插值表达式--><p>姓名&#xff1a;{{uname}}</p><…

开源AI引擎|企业合同管理:自然语言处理与OCR技术深度融合

一、企业应用&#xff1a;合同智能管理 结合NLP和OCR技术&#xff0c;企业可以构建智能化的合同管理系统&#xff0c;实现合同的自动化审查、风险评估和知识抽取。这样的系统不仅能够提高合同处理的效率&#xff0c;还能够降低人为错误&#xff0c;加强风险控制。 例如&#x…

vue3+threejs新手从零开发卡牌游戏(十八):己方场上手牌添加画线

手牌上场后&#xff0c;点击己方怪兽区卡牌会跟随鼠标移动画出线条&#xff0c;之后可以通过判断鼠标移动到对方场地的某卡牌进行战斗操作&#xff0c;代码主要改动在game/index.vue文件。 1.添加鼠标移动监听事件&#xff08;移动端&#xff09;&#xff1a; window.addEven…

相册清理大师-手机重复照片整理、垃圾清理软件

相册清理大师是一款超级简单实用的照片视频整理工具。通过便捷的操作手势&#xff0c;帮助你极速整理相册中的照片和视频、释放手机存储空间。 【功能简介】 向上滑动&#xff1a;删除不要的照片 向左滑动&#xff1a;切换下一张照片 向右滑动&#xff1a;返回上一张照片 整理分…

excel使用技巧-自动计算过滤后的数据(=SUBTOTAL(109,B2:B110))

语法&#xff1a;SUBTOTAL(function_num,ref1,ref2, …) Function_num 为 1 到 11&#xff08;包含隐藏值&#xff09;或 101 到 111&#xff08;忽略隐藏值&#xff09;之间的数字&#xff0c;指定使用何种函数在列表中进行分类汇总计算。对应的含义如下面表格所示&#xff1…

Java常用的API

跟着黑马的Java学习视频学者本篇常用的API Math public static int abs(int a) {return (a < 0) ? -a : a; }public static double ceil(double a) {return StrictMath.ceil(a); }public static double floor(double a) {return StrictMath.floor(a); }public static doub…

学习JavaEE的日子 Day29 yield,join,线程的中断,守护线程,线程局部变量共享,线程生命周期

Day29 多线程 12. 线程的礼让 Thread.yield(); 理解&#xff1a;此方法为静态方法&#xff0c;此方法写在哪个线程中&#xff0c;哪个线程就礼让 注意&#xff1a;所谓的礼让是指当前线程退出CPU资源&#xff0c;并转到就绪状态&#xff0c;接着再抢 需求&#xff1a;创建两个…

Kimi和ChatGPT做古诗词阅读理解,谁更胜一筹?

前几天发过一篇Kimi整理会议的体验教程&#xff0c;没想到大家很感兴趣&#xff0c;这次再来拿Kimi做古诗词阅读理解看看&#xff0c;同时也对比下ChatGPT的效果。 ChatGPT是几乎家喻户晓的AI大模型&#xff0c;Kimi和它对比有哪些异同点呢&#xff1f; 首先它们都是基于对话…

【Flink架构】关于FLink BLOB的组织架构:FLIP-19: Improved BLOB storage architecture:官网解读

文章目录 一. BlobServer架构1.BlobClient2. BlobServer3. BlobCache4. LibraryCacheManager 二、BLOB的生命周期1. 分阶段清理2. BlobCache的生命周期3. BlobServer 三、文件上下载流程1. BlobCache 下载2. BlobServer 上传3. BlobServer 下载 四. Flink中支持的BLOB文件类型1…

uniapp流浪动物救助小程序Java宠物领养小程序springboot

uniapp流浪动物救助小程序Java宠物领养小程序springboot 代码40块&#xff0c;需要的私聊 前台基于uniapp小程序 后台管理基于springbootvue前后端分离项目 开发语言&#xff1a;Java 框架&#xff1a;springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xf…

VTK 示例 基本的流程-事件交互、球体、

流程可以总结如下&#xff1a; 导入所需的头文件&#xff1a; 首先&#xff0c;导入了一系列 VTK 头文件&#xff0c;这些文件包含了所需的类和函数声明。 创建对象&#xff1a; 创建了两个球体&#xff08;一个较大&#xff0c;一个较小&#xff09;&#xff0c;一个平面&…

FANUC机器人KAREL语言程序结构(入门)

一、karel语言程序结构 FANUC机器人keral语言编程结构如下图所示&#xff1a; Keral指令对应的基础用法如下所示&#xff1a; 二、创建一个简单的写屏程序 依照对应的karel语法写写入下列程序 运行对应的程序进行测试&#xff1a;