Hyperledger Fabric: ENDORSEMENT_MISMATCH в запросе актива - PullRequest
5 голосов
/ 24 мая 2019

Кажется, я неправильно понимаю, как 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)
}
...