假设我在Hyperledger Fabric,ChaincodeA和ChaincodeB中有两个链码。
ChaincodeA中的某些事件必须改变ChaincodeB中的状态,例如,改变其平衡。如果ChaincodeA中使用invokeChaincode()
来调用ChaincodeB中的一些逻辑,调用putState()
来改变ChaincodeB的状态,那么在达成共识时会出现任何竞争条件吗?处理此问题的最佳做法是什么?
答案 0 :(得分:1)
在调用chaincode时,您不会更改状态,只能根据当前状态模拟事务执行。只有一旦通过订购服务将事务放入块中并到达必须通过VSCC和MVCC的对等点,它才会最终提交。 MVCC将照顾可能的竞争条件。 Transaction execution的工作原理如下:
答案 1 :(得分:0)
我低估了在两个不同频道上部署的两个链码。 chaincodeA想调用chaincodeB的方法。根据规范,它可能但仅用于读取操作。 https://godoc.org/github.com/hyperledger/fabric/core/chaincode/shim#ChaincodeStub.InvokeChaincode
请你分享代码如何从chaincodeA调用另一个chaincodeB?