Hyperledger Fabric - 正在查询区块链上的新交易

M Y*_*Yil 4 hyperledger-fabric

我们目前正在为我们的超级账本结构网络制定计划。我们确实需要知道以下问题的答案:“对区块链/世界状态的查询是否会向区块链添加另一笔交易”?

该文档告诉我们以下内容(这就是发生混乱的地方)。

  • “应用程序提交捕获世界状态变化的交易,这些交易最终被提交到分类账区块链。”
  • “区块链的结构是相互链接的块的顺序日志,其中每个块包含一系列事务,每个事务代表对世界状态的查询或更新。”

那么,是只有更新才会在区块链上产生新交易,还是也会产生查询?

Ric*_*Ntt 6

答案是否定的,您不会在区块中插入另一个交易,而是会生成一个交易来进行查询。

让我更好地解释一下:

当应用程序想要将数据插入区块链时,它会生成一个交易。应用程序将联系背书节点来提出交易建议,检查结果,只有当结果相等且正确时,交易才会发送到排序服务。排序服务是唯一被允许为区块链生成新区块的服务。排序服务接收这些交易并将它们插入到区块中,然后将区块发送到各个节点以更新其本地账本副本。

相反,当您想要进行查询时,您会生成一笔交易来与一个或多个对等方进行通信,对等方将向您发送答案,但交易到此结束。我所说的结束是指交易不会发送给订购者,当您进行查询时,他不会在任何时候联系到他。这是因为您查询对等体中包含的分类帐,这是分类帐的本地副本,并且您不会生成新的块。

因此,交易用于与对等点通信,但在这种情况下不会发送给排序者,它不会写入块内,也不用于此目的。在区块内,您只会发现提案后经应用程序批准的交易,这些交易接下来由排序服务验证并可以修改世界状态。

  • 该函数调用方法 INVOKE 进行查询,这意味着生成了一个新块。如果您使用 QUERY 方法,则只需查询账本而不生成新块 (2认同)