Hyperledger Fabric 2.4 Fabric Gateway文档翻译

2024-05-07 06:08

本文主要是介绍Hyperledger Fabric 2.4 Fabric Gateway文档翻译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

翻译:原文地址

Fabric Gateway是Hyperledger Fabric v2.4 在peers上增加的一项服务,为向网络提交事务提供简单的小型的API。之前客户端SDK的需求,比如从不同组织的peers中收集交易背书,在v2.4中通过使用Fabric Gateway服务,只需要一个peer运行一个应用进程即可提交事务。

写客户端应用

使用Fabric2.4,写客户端应用可以用到 Fabric Gateway 的一些API,而且流程经过了优化。这些API如同v1.4版本时介绍的高水平编程模型。

Fabric Gateway 管理如下事务步骤:

  • 评估交易提案。这将在一个peer上调用职能合约并返回结果给客户端。这个操作通常用于查询当前账本的状态而不是用于账本更新。gateway优先选择同一个组织的peer作为the gateway peer ,且选择的是账本中区块最高的peer。如果gateway的组织内没有合适的peer,此时会从其他组织中选择peer。
  • 背书(签署)交易提案。gateway会收集足够的背书来满足联合签名策略,将准备好的交易envelope返回给客户端,让其进行签名。
  • 提交交易。提交交易事务到order服务上,提交到账本中。
  • 等待提交状态事件。让客户端可以等待交易提交到账本后的结果,获取交易状态码
  • 接收链码事件。这会允许客户端应用根据链码执行后返回的数据进行响应。

Fabric Gateway 客户端的 API组合Endorse/Submit/CommitStatus 动作到一个 SubmitTransaction函数,来做到一行代码实现交易事件。或者,可以使用单个操作来支持灵活的应用程序模式。

客户端应用API

Fabric Gateway及其API设计的目的是,让客户端应用开发者能够专注于业务逻辑,而不必关系Fabric的基础架构逻辑。因此,API提供了组织和合约的逻辑抽象,而不是对操作抽象也不是对链码和peer的抽象。【旁注——很明显,管理API希望公开这些操作抽象,而不是管理API】

Fabric当前支持以下三种客户端应用编程语言:

  • Go 查看GO API
  • Node,查看Node API
  • Java,查看 Java API

 gateway怎么背书(签署)交易提案

为了交易事务成功提交到账本中,需要满足背书策略要求的背书数量。获取一个组织的背书需要联系组织中的一个peer,并让它在自己复制的账本上模拟执行。peer通过调用链码来模拟执行交易事务,以交易的名称和参数做标记,建立一个读写集合。这个读写集包含了当前账本状态和执行交易后的状态。

应用于事务的背书策略或多个策略之和取决于正在调用的链码函数的实现,可以使以下各项的组合:

  • 链码背书策略。channel的组织成员在批准链码时同意的策略。如果链码函数调用了另一个链码,则两方策略都需要满足。
  • 私有数据集合背书策略。如果链码向私有数据中写入一个状态,则该集合的认可策略将覆盖该状态的链码策略。
  • 如果链码函数从私有数据集合中读取数据,则它将仅限于该集合成员的组织。
  • 基于状态的背书策略(SBE)。这些策略也被称为密钥级签名策略,可应用于单独的状态,并将覆盖链码策略或者私有数据集合的策略。背书策略存贮在账本上,可以通过交易事务更新。

应用于交易事务的背书策略组合是在链码运行是确定的,不一定是从静态分析得出的。gateway使用以下过程代表客户端管理交易背书的复杂性:

  • gateway从组织中选择peer做背书,选择的是最高块高度的peer。假设在gateway peer组织内的peer都是被联系它的客户端所信任的。
  • 在选定的peer上模拟交易提案。该模拟获取有关访问状态的信息,因此,需要将背书策略结合起来(包括peer上任何独立地基于状态的背书策略)。
  • 捕获的背书策略被组装入ChaincodeInterest 协议结构,并将其传递给发现服务,以得出特定于交易事务的背书计划。
  • gateway通过请求满足计划中所有政策所需来批准应用批准计划。对于每个组织,gateway peer会选取组织中区块最高的peer

gateway是依靠discovery service 来获取需要联系的peer和order的信息,并计算交易事务需要背书所需哪些peer。所以在gateway服务开启的peer上,discovery service也要开启。

gateway背书进程对私密数据有严格的限制,数据会以临时数据的方式在组织中传递,因为私密数据往往是敏感和个人数据,不能在全部组织中传递。对于这种情况,gateway需要限制背书组织为私密数据集合的成员(或读或写)。如果限制没有满足背书策略,gateway会返回error到客户端,而不是继续将私密数据在组织间传递,因为这可能会被私密数据拒绝访问。这种情况下客户端应用需要写清楚 explicitly define which organizations should endorse。

指明背书peer

在某些情况下,一个客户端应用必须明确指定需要哪些组织来审议和背书交易提案。例如,临时数据经常包含个人或敏感信息只能写入到私密数据集合,因此需要限制背书组织集合。这些情况下,客户端应用指明背书组织,以满足隐私和背书需求;gateway需要从指定的背书组织中选取区块最高的peer。但是,如果客户端指明的背书组织没有满足背书策略,交易依然会获取指明的peer的背书,并提交到order,但在验证和提交阶段,所有peer会使交易无效。这次无效会记录在账本上,但交易不会写入到状态任何peer的状态数据库中。

重试和错误处理

gateway处理节点有重试连接,错误和延时处理。

重试

gateway会使用discovery service的信息来重试连接不可以用peer和node。如果一个组织运行了多个peer或order节点,那另一个合格的节点会被尝试连接。如果一个组织背书交易时失败,那另一个组织会被尝试。如果一个组织一致背书失败,一组满足条件的组织会成为新的目标。只有没有了满足背书策略的peer可用,gateway才会停止尝试。gateway会一致尝试,直到所有可能的背书peer都被试过。

错误处理

Fabric gateway通过gRPC联系网络中的peer和order。如果gateway请求错误源于peer和order的网络(也就是gateway外部),gateway会返回错误,端口,和组织ID信息给客户端在details字段中。如果details字段为空,那错误来自原gateway peer。

超时

Fabric gateway的评估和背书方法向外部的gateway发送gRPC请求。为了限制客户端需要等待响应的时间,core.yaml中的peer.gateway.endorsementTimeout可以再gateway中重置。

Fabric gateway客户端api也提供了默认设置和单次调用超时设置的机制。

接收事件

gateway 提供了简单的接受chaincode events的API。客户端API提供了一种机制,可以使用特定于语言的习惯用法来处理这些事件。

这篇关于Hyperledger Fabric 2.4 Fabric Gateway文档翻译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/966535

相关文章

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

Python批量调整Word文档中的字体、段落间距及格式

《Python批量调整Word文档中的字体、段落间距及格式》这篇文章主要为大家详细介绍了如何使用Python的docx库来批量处理Word文档,包括设置首行缩进、字体、字号、行间距、段落对齐方式等,需... 目录关键代码一级标题设置  正文设置完整代码运行结果最近关于批处理格式的问题我查了很多资料,但是都没

Spring Boot 3 整合 Spring Cloud Gateway实践过程

《SpringBoot3整合SpringCloudGateway实践过程》本文介绍了如何使用SpringCloudAlibaba2023.0.0.0版本构建一个微服务网关,包括统一路由、限... 目录引子为什么需要微服务网关实践1.统一路由2.限流防刷3.登录鉴权小结引子当前微服务架构已成为中大型系统的标

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由