我有一个简单的Invoke函数,它根据参数调用2个方法,如下所示:
func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response {
fmt.Println("chaincode_custom Invoke")
function, args := stub.GetFunctionAndParameters()
if function == "addProduct"{
return t.addProduct(stub, args)
} else if function == "addProccesingInput"{
return t.addProccesingInput(stub, args)
return shim.Error("Invalid invoke function name.")
}
我可以调用addProduct方法,但是当我调用addProccesingInput方法时,它会给出以下错误:
错误:[client-utils.js]:sendPeersProposal - 拒绝承诺:错误:链码错误(状态:500,消息:无效的调用函数名称。) at /home/test/Desktop/blockchain/xyz/node_modules/grpc/src/node/src/client.js:554:15 [2018-02-28 07:41:39.987] [ERROR] invoke-chaincode - 调用链码提案很糟糕 [2018-02-28 07:41:39.988] [DEBUG] invoke-chaincode - 无法发送提案并收到所有好的ProposalResponse [2018-02-28 07:41:39.991] [ERROR] invoke-chaincode - 无法调用链码。原因:无法发送提案并收到所有良好的ProposalResponse (node:114605)UnhandledPromiseRejectionWarning:未处理的promise promise(拒绝id:7):错误:无法调用chaincode。原因:无法发送提案并收到所有良好的ProposalResponse
另见下面的addProccesingInput方法
func (t *SimpleChaincode) addProccesingInput(stub shim.ChaincodeStubInterface, args []string) pb.Response {
var err error
//Update Batch data
bAsBytes, err := stub.GetState(args[0])
var bch MilkProduct
err = json.Unmarshal(bAsBytes, &bch)
if err != nil {
return shim.Error(err.Error())
}
bch.BatchStatus="In Process"
var tx Transaction
tx.Pasturization=args[1]
tx.Adulteration=args[2]
tx.Status="In Process"
tx.TransTime=time.Now().UTC().String()
tx.Temprature=args[3]
bch.Transactions = append(bch.Transactions, tx)
//Commit updates batch to ledger
btAsBytes, _ := json.Marshal(bch)
err = stub.PutState(bch.BatchId, btAsBytes)
if err != nil {
return shim.Error(err.Error())
}
return shim.Success(nil)
}
我正在使用Fabric 1.1 Alfa With Node SDK