当前位置: 首页 > 知识库问答 >
问题:

在Hyperledger Fabric中读取(查询)事务流

潘涵煦
2023-03-14

我试图理解Hyperledger Fabric中的“查询”事务流。我理解Fabric中的“写”流,因为它有很好的文档记录。但是,当涉及读/查询事务时,事情就不那么清楚了。

这就是我到目前为止所理解的:

    null

提前谢了。

共有1个答案

邴子实
2023-03-14

您可能需要查看https://github.com/hyperledger/fabric-samples/blob/release/fabcar/query.js,它演示了如何使用节点SDK进行查询。您会注意到,它使用SDK提供的方便方法https://fabric-sdk-node.github.io/channel.html#querybyChainCode__Anchor来帮助方便查询。

就您在文章中概述的流程而言,步骤1和2是正确的。
此外,用于查询事务的链码函数通常使用https://godoc.org/github.com/hyperledger/fabriz/core/chaincode/shim#success helper函数来实际返回查询结果。在上面发布的示例中,https://github.com/hyperledger/fabric-samples/blob/release/fabcar/query.js#l51调用https://github.com/hyperledger/fabric-sample/blob/release/chaincode/fabcar/fabcar.go#l135。

不需要将查询事务的响应发送给订购者,尽管只要您符合背书策略就可以。感谢戴夫·恩耶尔特:

查询是chaincode调用,它读取分类帐当前状态,但不写入分类帐。chaincode函数可以查询分类帐上的某些键,或者可以查询分类帐上的一组键。由于查询不会更改分类帐状态,客户端应用程序通常不会提交这些只读事务以进行排序、验证和提交。尽管不是典型的,但客户端应用程序可以选择提交只读事务以进行订购、验证和提交,例如,如果客户端希望在分类帐链上提供可审计的证明,证明它在某个时间点了解特定的分类帐状态。对等方将验证只读事务并将其添加到分类帐链中,但不会更新分类帐当前状态。

 类似资料:
  • 据我所知,SQL事务在写查询的情况下特别有用,即当有多个涉及< code>write查询的并发事务时,如果另一个事务已经在它之前提交,一个事务将在< code>commit上得到错误,导致第一个事务可能没有更新的数据。以便它不会盲目地更新数据,也不会忘记另一个事务所做的修改。 我还了解数据库的“原子性”方面,一组操作将是原子的,在执行过程中,要么所有操作都必须成功执行,要么如果发生任何错误,则完全

  • 以下示例将演示如何在DBUtils的帮助下,使用读取查询来读取数据库表中的记录。这里演示从员工表中读取一条记录。 语法 其中, resultHandler − 对象将结果集映射到对象。 queryRunner − 对象在数据库中插入对象。 为了理解上述与DBUtils相关的概念,我们编写一个将运行读取查询的示例。创建一个示例应用程序。 更新在DBUtils入门应用中创建的文件。 编译并运行应用程序

  • 以下示例将演示如何在DBUtils的帮助下使用Read查询读取记录。 我们将从Employees Table中读取记录。 语法 (Syntax) ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class); Employee emp = queryRunner.query(conn, "S

  • 我有一个用例,我想将jdbc事务与jooq上下文混合使用。 JDBC代码如下所示: 我希望参数能够同时使用jdbc和jooq。 对于jdbc来说,使用语句非常简单。例如,像这样的图托拉尔: 为了在同一事务上执行jooq查询,我必须获得一个上下文。我找到了一个api来从数据源/连接获取DSLContext 我不清楚的是,是否/如何从语句创建jooq?

  • 问题内容: 有时,对于仅作为Select查询的存储过程,会出现以下错误: 我最初的理解是,选择查询不会锁定表,也不会导致死锁,即使它试图查询的表正在被另一个进程更新/锁定,但似乎选择查询会导致死锁,因为出色地。 如果我将隔离级别设置为查询未提交,那可以解决问题吗? 问题答案: 我的初步理解是,Select查询不会锁定表,也不会导致死锁 这种理解是错误的。SELECT查询在其分析的行上使用共享锁。共

  • 我有事务性的和正常的生产者在应用程序,是写到主题Kafka-主题如下。 事务性Kafka生产者的配置 普通生产者配置相同,只有ProducerConfig.client_id_config和ProducerConfig.Transactional_id_config未添加。 使用者配置如下 因为我将isolation.level设置为read_committed,所以它应该只使用来自订阅主题的事务