在启用隐私的链代码之间传递查询

Passing queries between chaincodes with privacy enabled

我有两个链码——我们称它们为 A 和 B——我试图让 A 在启用隐私的设置中调用 B 上的方法。下面显示了我尝试进行的那种调用的示例。

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
}

但是,每当我尝试 运行 时,它会在终止我的链代码之前给出以下错误消息:

[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

显然隐私会干扰链码-链码通信。有没有办法解决这个问题,在保持隐私的同时实现通信?还是将所有内容完全放入一个巨大的链代码中是最佳实践?

此外,为什么隐私会干扰链代码与链代码之间的通信?我不明白为什么会这样。

这似乎是 hyperledger 的一个已知问题,正在处理中。因此,目前没有解决方法,但将来处理此问题时可能会有。

Relevent Issue