如何从自身调用链码函数来记录子事务

时间:2017-12-14 08:21:43

标签: go blockchain hyperledger-fabric

我们想从go语言链代码本身调用其中一个函数。这样做的原因是我们希望基于流为某些逻辑创建单独的事务块。

例如, 如果我们有一个名为' transferFund '的函数,那么我们正在阅读两个人的余额(让它成为名为' readBalance '的函数)。我们需要创建3个块:1个用于“ transferFund ”,2个用于“ readBalance

1 个答案:

答案 0 :(得分:1)

要在您的链码中调用另一个链码,您可以使用

stub.InvokeChaincode(chaincodeName, queryArgs, channelName)

如果您想在同一频道中调用链码,channelName可以为空。

来源:https://github.com/hyperledger/fabric/blob/release/examples/chaincode/go/chaincode_example05/chaincode_example05.go#L90

但是,我认为调用不会添加新事务,因为必须验证另一个代码的调用,并且您可以使用调用结果更改基于它的分类帐上的数据。所以一切都将在一次交易中结束。

还要确保区分交易

  

     

一组有序的事务,以加密方式链接到通道上的前一个块。

     

交易

     

调用或实例化提交用于排序,验证和提交的结果。调用是从分类帐读取/写入数据的请求。 Instantiate是一个启动和初始化通道上的链代码的请求。应用程序客户端收集来自支持对等方的调用或实例化响应,并将结果和认可打包到提交用于排序,验证和提交的事务中。

http://hyperledger-fabric.readthedocs.io/en/release/glossary.html