私は 2 つのチェーンコードを持っています。それらを 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] プライバシーが有効になっていると、チェーンコードとチェーンコードの相互作用がサポートされないというエラーが発生しました。
Sending ERROR Error starting Simple chaincode: エラー処理メッセージ: [72047168-5f5a-4017-862a-1329660e2076]Chaincode handler FSM cannot handle message (COMPLETED) while in state: ready
プロセスは終了コード 0 で終了しました
明らかに、プライバシーがチェーンコード間の通信を妨害します。プライバシーを維持しながら通信を可能にする方法はありますか? それとも、絶対にすべてを単一の巨大なチェーンコードに入れるのがベストプラクティスですか?
さらに、プライバシーがチェーンコード間の通信を妨害するのはなぜですか? なぜこれが起こるのか正確にはわかりません。