Fabric学习(二)----网络结构和交易流程

这篇具有很好参考价值的文章主要介绍了Fabric学习(二)----网络结构和交易流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Fabric官方文档:https://hyperledger-fabric.readthedocs.io/en/release-2.2/

0.前言

在前面主要介绍了fabric的安装,而fabric的一些关键概念和底层架构都不太了解,本文主要针对fabric的一些关键概念以及网络结构和交易流程进行阐述。

1.Fabric的一些优势

1.1 联盟链

传统的无许可的公链区块链(比特币、以太坊等),几乎人人都可以参加,并且每个参与者都是匿名的,为了保证安全性,使用POW、POS等资源消耗量巨大的共识协议。而Fabric是一个联盟链系统,它是一个有许可的区块链,参与者是相互认识的,而不是匿名的。许可区块链在一组已知、已识别且经常经过审查的参与者中运行区块链,这些参与者在产生一定程度信任的治理模型下运行。许可区块链提供了一种方法来保护具有共同目标但可能彼此不完全信任的一组实体之间的交互。通过依赖参与者的身份,许可区块链可以使用更传统的崩溃容错(CFT)或拜占庭容错(BFT)共识协议,这些协议不需要昂贵的挖掘。

1.2 新的交易架构

大多数现有的智能合约区块链平台都遵循 订单执行架构,其中共识协议:

  • 验证和订购交易,然后将它们传播到所有对等节点,

  • 然后每个对等点依次执行事务。

由于所有交易都是由所有节点顺序执行的,因此性能和规模是有限的。智能合约代码在系统中的每个节点上执行这一事实要求采取复杂的措施来保护整个系统免受潜在恶意合约的侵害,以确保整个系统的弹性。

Fabric 引入了一种新的交易架构,我们称之为 execute-order-validate。它通过将交易流分为三个步骤来解决订单执行模型面临的弹性、灵活性、可扩展性、性能和机密性挑战:

  • 执行交易并检查其正确性,从而为其背书,
  • 通过(可插入的)共识协议订购交易
  • 在将交易提交到分类账之前,根据特定于应用程序的背书策略验证交易

1.3 隐私和保密

在一个公共的、无需许可的区块链网络中,它利用 PoW 作为其共识模型,交易在每个节点上执行。这意味着合同本身及其处理的交易数据都不能保密。每笔交易以及实现它的代码对网络中的每个节点都是可见的。在这种情况下,我们将合约和数据的机密性换成了 PoW 提供的拜占庭容错共识。

Hyperledger Fabric 是一个许可平台,通过其通道架构和私有数据功能实现机密性。在通道中,Fabric 网络上的参与者建立一个子网络,其中每个成员都可以看到一组特定的交易。因此,只有参与通道的节点才能访问智能合约(链码)和交易的数据,从而保护两者的隐私和机密性。私有数据允许在通道上的成员之间进行收集,从而实现与通道相同的保护,而无需创建和维护单独通道的维护开销。

2.Fabric网络结构及简介

2.1 网络结构

下面展示一个fabric官网上的一个典型Fabric网络结构:

Fabric学习(二)----网络结构和交易流程

最初看到这个网络架构会非常迷茫,因为太多组件了,接下来将会一个个组件的进行介绍。

  • R1R2R3R4表示一个个的组织

  • O4表示排序节点

  • P1P2P3表示对等点(PEER)

  • CA表示证书机构

  • S5 S6表示安装在对等点的链码

  • L1 L2表示账本

  • CC1 CC2表示背书策略

  • NC4表示网络配置

**在上图中,我们考虑,现在有R1、R2、R3 和 R4 四个组织一起开发一个联盟链,他们将建立和开发 Hyperledger Fabric 网络。**R4 已被指定为网络发起方——它已被授予设置网络初始版本的权力。R4 无意在网络上进行商业交易。R1 和 R2 需要在整个网络内进行专用通信,R2 和 R3 也是如此。组织 R1 有一个客户端应用程序,可以在通道 C1 内执行业务交易。组织 R2 有一个客户端应用程序,它可以在通道 C1 和 C2 中执行类似的工作。组织 R3 有一个客户端应用程序可以在通道 C2 上执行此操作。对等节点 P1 维护与 C1 关联的分类帐 L1 的副本。对等节点 P2 维护与 C1 关联的账本 L1 的副本和与 C2 相关联的账本 L2 的副本。对等节点 P3 维护与 C2 关联的账本 L2 的副本。网络根据网络配置 NC4 中指定的策略规则进行管理,网络受组织 R1 和 R4 的控制。通道 C1 根据通道配置 CC1 中指定的策略规则进行管理;通道受组织 R1 和 R2 控制。通道 C2 根据通道配置 CC2 中指定的策略规则进行管理;通道受组织 R2 和 R3 控制。有一个订购服务 O4,它作为 N 的网络管理点服务,并使用系统通道。订购服务还支持应用通道 C1 和 C2,用于将交易排序到区块中进行分发。这四个组织中的每一个都有一个首选的证书颁发机构。

2.2 排序节点

Fabric网络中,一个排序服务的启动,意味着网络形成了。上图中O4表示排序节点(ordering node),由组织R4创建起来,在上图中,他被R4通过网络配置策略创建,它用来给通道C1和C2中的所有交易进行排序,是维护共识的重要节点之一。

  • 交易数据需要先进行打包,然后再写入到区块中 (类似区块链中的矿工的工作)
  • 为什么要进行排序?
    • 解决双花问题。
    • 每发起一笔交易都会被orderer进行排序,通过特别的算法去解决双花问题。

除了他们的排序角色之外,排序者还维护允许创建频道的组织列表。这个组织列表被称为“联盟”,列表本身保存在“orderer system channel”(也称为“ordering system channel”)的配置中。默认情况下,此列表及其所在的频道只能由订购者管理员编辑。请注意,一个排序服务可能会保存多个这样的列表,这使得联盟成为 Fabric 多租户的载体。

2.3 CA

CA是证书颁发机构,它用于向管理员和网络节点颁发证书。Fabric是一个有许可的区块链,正需要这种身份保证。CA4在我们的网络中起着关键作用,因为它分发 X.509 证书,可用于将组件识别为属于组织 R4。CA 颁发的证书也可用于签署交易,以表明组织认可交易结果——这是其被接受到分类账上的先决条件。

证书到成员组织的映射是通过称为成员服务提供商 (MSP)的结构实现的 。网络配置 NC4 使用命名的 MSP 来标识 CA4 分发的证书的属性,这些证书将证书持有者与组织 R4 相关联。然后 NC4 可以在策略中使用这个 MSP 名称来授予来自 R4 的参与者对网络资源的特定权限。此类策略的一个示例是确定 R4 中可以向网络添加新成员组织的管理员。

2.4 对等节点(peer)

在上图中,P1P2P3分别为组织R1R2R3的对等节点,由各个组织创建,用来存储和同步账本数据,还有一些特殊的peer也有背书功能。在其上维护者账本l和S。在上图中,可以看到,P1有一个账本L1和一个链码S1,而P2有两个账本和两个链码,这是因为账本和链码是基于通道进行创建的,通道的概念请看下面。

  • 用户通过客户端工具对数据进行提交操作,数据写入到一个peer节点中。
  • peer节点之间的数据同步是Fabric框架做好的,不需要我们实现,具体实现机制后面会提到。

2.5 通道

通道是一种主要的通信机制,联盟成员可以通过它相互通信。通道最初由具有权限的网络配置者创建,一个网络中可以有多个通道,一个对等点可以加入多个通道。在上图中,P1和P2处在同一个通道C1中,P2和P3处在另一个通道C2中,通道内的通信外部是不可知的,就算是作为网络配置者的R4也不行。有效的保证的安全性,在同一个通道中,对等点的数量没有限制,所有的对等点在本地上通过共识维护一个一致性账本,同时通过链码的手段提供查询和修改账本的接口。其中,我们可以将 L1 视为物理托管在 P1 上,但 逻辑上托管在通道 C1 上。

2.6 账本

每个通道都有一个一致性账本,它物理托管在通道中所有的对等节点中(peer)。它包含两个部分,一部分为世界状态,世界状态在物理上实现为一个数据库,以提供简单高效的账本状态存储和检索。正如我们所见,账本状态可以有简单的或复合的值,为了适应这一点,世界状态数据库的实现可能会有所不同,从而允许有效地实现这些值。世界状态数据库的选项目前包括 LevelDB 和 CouchDB。

另一部分区块链,世界状态包含与一组业务对象的当前状态相关的一组事实,而区块链是关于这些对象如何到达其当前状态的事实的历史记录。区块链记录了每个分类帐状态的每个先前版本以及它是如何更改的。(注意,里面不是所有交易都是完成的,有一部分的交易被标记为无效,原因具体看交易流程)。

但是,将分类账呈现为一个单一的世界状态和单一的区块链,但这有点过于简单化了。实际上,每个链码都有自己的世界状态,与所有其他链码分开。世界状态位于命名空间中,因此只有同一链码中的智能合约才能访问给定的命名空间。

2.7 链码和客户端

链码和以太坊的智能合约非常相似,但是Fabric的链码可以通过GO、JAVA等语言进行编写,非常方便。链码编写后,和一致性账本一样,我们可以将链码 视为物理托管在对等节点 上,但 逻辑上部署在通道上。客户端可以使用fabric的SDK进行链码的调用,来查询或者更新通道上的一致性账本。

在上图中,A1A2A3表示的是客户,首先,客户也需要一个合理的身份,其身份由CA进行维护。在完成身份认证后,A就可以用自己的身份(不同身份具有不同权限)去调用通道上的链码来查询和更新账本了。

2.8 开发人员分组

Fabric学习(二)----网络结构和交易流程

3.Fabric交易流程

Fabric的交易流程可以理解为是 执行—排序—验证的三大步过程。

首先在交易前要明确几点:

  • 用户已经经过了CA认证,交易包括查数据或者写数据,不同的操作需要不同的身份权限。
  • 交易需要背书策略,背书策略可以是很简单的,也是可以很复杂的,由链码安装时保证,主要是为了保证此次交易满足一些特定条件,一个最简的背书策略如下:
    • 组织A中的成员必须同意
    • 组织B中的成员也必须同意

3.1 执行阶段:

  • 客户端给背书节点(peer节点中的一种)发送交易提案(就是发送调用链码功能的请求)

  • 背书节点对交易提案进行4点验证

    • 格式是否正确;

    • 在之前没有被提交过;

    • (客户端的)签名是否有效;

    • 提交者/客户端是否被授权执行此次提案的操作。

  • 如果以上验证都通过,背书节点就将提案输入作为所调用链码函数的参数,对当前状态数据库模拟执行链码

  • 执行完后,返回经过背书节点签名的执行结果(读写集)给客户端。

  • 然后客户端收集所有背书,直到满足所有的背书策略。

  • 如果应用程序的请求仅仅是查询账本,则应用程序将检查并提取查询响应信息,查询到此结束,更新账本还需要以下阶段。文章来源地址https://www.toymoban.com/news/detail-492121.html

3.2 排序阶段:

  • 客户端满足背书策略后,将提案、执行结果和背书组装成交易,发送给排序服务
  • 排序服务不查看交易具体信息,只是简单的按通道、按时间顺序对接收的交易进行排序,并为每个通道创建区块(注意:排序服务接收到交易的顺序并不一定是交易被打包进入区块的顺序。且创建区块时,一般都是有一定数量的交易再一起打包,保证效率)。
  • 排序节点将区块发送到通道上的所有主节点(leader peer),由主节点向其它peers分发交易。

3.3 验证阶段:

  • 当每个peer接收到新区块后,会对其中包含的交易进行验证,以确保满足背书策略,以及确保账本当前状态的"读集"变量没有变化(因为"读集"是由当前区块中的交易执行生成的)。
  • 然后每个peer将区块追加到本地的区块链副本上,并将"写集"提交到当前状态数据库。

到了这里,关于Fabric学习(二)----网络结构和交易流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络奇缘】- 计算机网络|分层结构|深入学习ISO模型

    🌈个人主页:  Aileen_0v0 🔥系列专栏: 一见倾心,再见倾城  ---  计算机网络~ 💫个人格言: \\\"没有罗马,那就自己创造罗马~\\\" 回顾链接: 这篇文章是关于深入学习OSI模型七层结构, “书山有路勤为径,学海无涯苦作舟。” 话不多说,开始学习之旅⛵吧~   目录 OSI七层结构回顾

    2024年02月05日
    浏览(64)
  • ResNet网络结构,BN以及迁移学习详解

     网络中的亮点: 1.超深的网络结构(超过1000层) 2.提出residual(残差)模块 3.使用Batch Normalization加速训练(丢弃dropout) 左边是将卷积层和池化层进行一个简单的堆叠所搭建的网络结构 20层的训练错误率大概在1%~2%左右 56层的训练错误率大概在7%~8% 所以通过简单的卷积层和池化

    2024年02月11日
    浏览(41)
  • hyperledger fabric 交易结构以及解析

    Fabric 1.0源代码分析(43) Tx(Transaction 交易)_yinchengmvp的技术博客_51CTO博客 Hyperledger Fabric的区块结构 交易结构Hyperledger Fabric区块和交易结构解析_51CTO博客_区块链 hyperledger fabric

    2024年02月12日
    浏览(35)
  • 大数据深度学习ResNet深度残差网络详解:网络结构解读与PyTorch实现教程

    本文深入探讨了深度残差网络(ResNet)的核心概念和架构组成。我们从深度学习和梯度消失问题入手,逐一解析了残差块、初始卷积层、残差块组、全局平均池化和全连接层的作用和优点。文章还包含使用PyTorch构建和训练ResNet模型的实战部分,带有详细的代码和解释。 深度

    2024年01月18日
    浏览(49)
  • yolov7论文学习——创新点解析、网络结构图

    1、提出了E-ELAN,但是只在yolov7-e6e中使用到。 2、yolov7基于拼接模型的缩放方法,在yolov7x中使用到。 3、将重参数化卷积应用到残差模块中或者用到基于拼接的模块中去。RepConvN 4、提出了两种新的标签分配方法 1、 ELAN yolov7使用大量的ELAN作为基础模块。 这么多堆叠其实对应了

    2024年01月17日
    浏览(47)
  • 【Java实战项目】基于ssm的数据结构课程网络学习平台

    🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹 赠送计算机毕业设计600个选题excel文件,帮助大学选题。 赠送开题报告模板,帮助书写开题报告。 作者完整代码目录供你选择: 《Springboo

    2024年01月18日
    浏览(51)
  • 【人工智能】神经网络、M-P_神经元模型、激活函数、神经网络结构、学习网络参数、代价定义、总代价

    ⚫ 输入:来自其它n个神经元传递过来的输入信号 ⚫ 处理:输入信号通过带权重的连接进行传递, 神经元接受到总输入值将与神经元的阈值进行比较 ⚫ 输出:通过激活函数的处理以得到输出

    2024年02月16日
    浏览(55)
  • 图神经网络论文笔记(一)——北邮:基于学习解纠缠因果子结构的图神经网络去偏

    作者 :范少华 研究方向 :图神经网络 论文标题 : 基于学习解耦因果子结构的图神经网络去偏 论文链接 :https://arxiv.org/pdf/2209.14107.pdf         https://doi.org/10.48550/arXiv.2209.14107   大多数图神经网络(GNNs)通过学习输入图和标签之间的相关性来预测不可见图的标签。然而,

    2024年02月07日
    浏览(46)
  • 大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解

    本文全面探讨了卷积神经网络CNN,深入分析了背景和重要性、定义与层次介绍、训练与优化,详细分析了其卷积层、激活函数、池化层、归一化层,最后列出其训练与优化的多项关键技术:训练集准备与增强、损失函数、优化器、学习率调整、正则化技巧与模型评估调优。

    2024年02月01日
    浏览(44)
  • 利用GAT(图论分析工具箱)构建并分析大脑结构协变网络学习笔记

    前面我学习了利用DTI构建白质纤维脑网络,并采用GRETNA计算了小世界网络属性。阅读文献发现可以利用灰质体积或皮层指标(皮层厚度、折叠指数、沟深)等构建结构协变网络再进行网络拓扑属性的计算。因此,我采用前面提取的灰质体积和皮质数据进行了结构协变网络分析

    2024年04月16日
    浏览(101)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包