I have two chaincodes - let's call them A and B - and I am trying to get A to invoke a method on B, in a setup that has privacy enabled. An example of the sort of call I'm trying to make is shown below.
func (e *ChaincodeA) someFuncOnChaincodeA(stub *shim.ChaincodeStub, args []string) ([]byte, error) {
//Do stuff
newArgs := []string{"somevalue1","somevalue2"}
msg, err := stub.InvokeChaincode(chaincodeBName,"someFuncOnChaincodeB",args)
if err != nil{
fmt.Println(err.Error())
}
return msg, err
}
However, whenever I try to run this, it gives me the following error messages before killing my chaincode:
[72047168]Error chaincode-chaincode interactions not supported for with privacy enabled.
Sending ERROR Error starting Simple chaincode: Error handling message: [72047168-5f5a-4017-862a-1329660e2076]Chaincode handler FSM cannot handle message (COMPLETED) with payload size (0) while in state: ready
Process finished with exit code 0
Evidently privacy interferes with chaincode-chaincode communications. Is there any way around this, to enable communications while maintaining privacy? Or is it a best-practice to put absolutely everything into a single gigantic chaincode?
Additionally, why does privacy interfere with chaincode-chaincode communications? I don't understand exactly why this occurs.