Кажется, я неправильно понимаю, как Hyperledger Fabric обрабатывает запрос.В настоящее время я использую fabric-go-sdk для запроса ресурса из бухгалтерской книги, например
asset, err := client.Query(channel.Request{ChaincodeID: someCCname, Fcn: "query", Args: [][]byte{[]byte(someID)}})
Когда моя система загружена (много новых транзакций, не связанных с запросом), я иногда получаю следующеесообщение об ошибке:
Не удалось подтвердить индоссамент: Код статуса клиента индоссанта: (3) ENDORSEMENT_MISMATCH.Описание: ProposalResponsePayloads не совпадают.
Почему требуется подтверждение, если данные запрашиваются только?Мне кажется, что сообщение об ошибке указывает на то, что несколько пиров ответили на запрос по-разному.Означает ли это, что у одних равных уже есть актив, внесенный в бухгалтерскую книгу, а у других нет? Следует отметить, что запрос выполняется очень скоро после создания актива и не выполняется последовательно.
Код цепочки запросов очень прост и минимален:
func (c *TestChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response {
data, err := stub.GetState(args[0])
if err != nil {
return shim.Error(err)
}
if data== nil {
return shim.Error(err)
}
return shim.Success(data)
}