#hyperledger-fabric
#hyperledger-ткань
Вопрос:
Я использую hyperledger fabric 1.4 для написания цепного кода с именем task.go.In в task.go есть функция, которую я написал, называется transferBalance, которая реализует перевод между двумя учетными записями.
функция (t * TaskChaincode) балансировки переноса (прокладка-заглушка.ChaincodeStubInterface,аргументы[] строка) pb.Ответ {
if len(args) != 3{
return shim.Error("Wrong number of given parameters")
}
source := args[0]
target := args[1]
amount,err := strconv.Atoi(args[2])
if err != nil{
return shim.Error("Format conversion failed")
}
if amount <= 0{
return shim.Error("The number of designated transfer tokens must be greater than 0")
}
sacc,err := stub.GetState(source)
if err != nil {
return shim.Error("Failed to obtain account information according to the specified account")
}
if sacc == nil {
return shim.Error("The source account does not exist")
}
tacc,err := stub.GetState(target)
if err != nil {
return shim.Error("Failed to obtain account information according to the specified account")
}
if tacc== nil {
return shim.Error("The source account does not exist")
}
sval,err := strconv.Atoi(string(sacc))
if err != nil {
return shim.Error("An error occurred while processing the source account balance")
}
tval,err := strconv.Atoi(string(tacc))
if err != nil {
return shim.Error("An error occurred while processing the target account balance")
}
if sval < amount{
return shim.Error("Insufficient balance")
}
sval = sval - amount
tval = tval amount
err = stub.PutState(source,[]byte(strconv.Itoa(sval)))
if err != nil {
return shim.Error("Failed to save the status of the source account after the transfer")
}
err = stub.PutState(target,[]byte(strconv.Itoa(tval)))
if err != nil {
return shim.Error("Failed to save the status of the target account after the transfer")
}
return shim.Success([]byte("Successful tr"))
}
И я успешно установил цепной код и выполнил следующую команду для вызова вышеупомянутой функции. вызов однорангового цепного кода -n taskcc -c ‘{«Args»:[«transferBalance»,»user1_account»,»user2_account»,»2″]}’ -C myc
Я получаю сообщение об ошибке, показанное ниже: Ошибка: сбой подтверждения во время вызова. ответ: статус: 500 message:»345244204347220206345216237350264246346210267344275231351242235346227266345217221347224237351224231350257257″
Я не знаю, как решить эту проблему. И я хочу знать, что означают цифры в приведенной выше ошибке. Как я должен попытаться найти источник ошибки и решить ее. Пожалуйста, помогите мне, большое вам спасибо.
Комментарии:
1. Что ж, сообщение выглядит как строка октета, которая преобразуется в китайский, и это китайское сообщение переводится на английский как «Произошла ошибка при обработке исходного баланса счета».
2. Интерпретация чисел, предложенных в вопросе, заключается в следующем. восьмеричный в текст
3.
户余额时发生错误
Произошел этот журнал ошибок. Можете ли вы показать мне соответствующий код?4. Большое вам спасибо за ваш ответ. Я думаю, что нашел решение проблемы.
5. Не могли бы вы, пожалуйста, поделиться решением этой проблемы? Я сталкиваюсь с той же ошибкой.