hyperledger fabric v1.0使用查询更改分类帐的方法

时间:2017-07-20 02:15:02

标签: hyperledger hyperledger-fabric

在讨论v1.0示例时,我遇到了困惑。

据我了解,查询不会更改分类帐,因为它是在本地执行的(例如,没有订购,提交,认可)。

但这是来自来电者的观点。在链代码中,它只是在给定所有CA和信息有效的情况下执行客户端调用的任何内容。

例如,如果我打电话

peer chaincode query -C mychannel -n chaincode -c '{"Args":["query", "a"]}'

这没关系。它只是查询一个。

但如果我打电话

peer chaincode query -C mychannel -n chaincode -c '{"Args":["**invoke**", "a"]}'

如果调用涉及在分类帐上书写,那么行为会是什么?

另一方面,如果我在查询方法上调用invoke

(e.g. peer chaincode invoke ~~~ {"Args":["query", "a"]}) 

会有什么行为?

据我了解,实际的链码无法区分是查询还是调用。它只是执行链码方法。

我远吗?

1 个答案:

答案 0 :(得分:1)

确实这有点令人困惑,特别是考虑到使用cli工具时不太明显的事情。这是事情,当你使用peer cli命令调用时,流程如下:

  
      
  1. 您将交易提案发送给支持同行
  2.   
  3. 支持同伴执行交易模拟并签署结果
  4.   
  5. 客户收到结果并将其发送至订购服务
  6.   
  7. 订购服务削减了块
  8.   
  9. 阻止交付给同行
  10.   
  11. 同行验证交易
  12.   
  13. 最终阻止附加到区块链
  14.   

现在有不同之处,当您使用query参数键运行peer cli时,它只会执行:

  
      
  1. 您将交易提案发送给支持同行
  2.   
  3. 支持同伴执行交易模拟并签署结果
  4.   

因此,由于结果不会发送到订购服务,因此对最终的对等状态没有影响,因为即使您的链代码进行了任何更改,它也不会被提交。