Не удается получить BlockInfo на основе идентификатора транзакции с использованием Fabric Java SDK - PullRequest
0 голосов
/ 12 декабря 2018

Я использую Fabric Java SDK, чтобы запросить мой цепной код, запущенный на Hyperledger Fabric v1.3.Вот шаги, которые я пытался сделать:

  • Создать ChannelCLient и использовать метод queryByChainCode () , я получил коллекцию ProposalResponse.

  • На каждом ProposalResponse я могу получить полезную нагрузку и транзакции из метода getTransactionID ().

  • После этого использовать идентификатор транзакции, полученный из шагавыше, чтобы запросить BlockInfo методом queryBlockByTransactionID () .Потому что я хочу получить правильный хеш блока, который содержит мою транзакцию.

Но я получил сообщение об ошибке 500 Не удалось получить блок для txID ... error Запись не найдена в индексе

Мой код выглядит следующим образом:

FabricClient fabClient = new FabricClient(adminUserContext);

        ChannelClient channelClient = fabClient.createChannelClient(Config.CHANNEL_NAME);

        Channel channel = channelClient.getChannel();
        Peer peer = fabClient.getInstance().newPeer(Config.ORG1_PEER_0, Config.ORG1_PEER_0_URL);
        EventHub eventHub = fabClient.getInstance().newEventHub("eventhub01", "grpc://localhost:7053");
        Orderer orderer = fabClient.getInstance().newOrderer(Config.ORDERER_NAME, Config.ORDERER_URL);
        channel.addPeer(peer);
        channel.addEventHub(eventHub);
        channel.addOrderer(orderer);
        channel.initialize();

        String transactionId = "";
        Logger.getLogger(QueryChaincode.class.getName()).log(Level.INFO, "Query ");
        Collection<ProposalResponse>  responsesQuery = channelClient.queryByChainCode(chaincode, "query", args);
        for (ProposalResponse pres : responsesQuery) {
            transactionId = pres.getTransactionID();
            String stringResponse = new String(pres.getChaincodeActionResponsePayload());
            Logger.getLogger(QueryChaincode.class.getName()).log(Level.INFO, stringResponse);
            System.out.println("transactionID is:" + transactionId + " chaincode id is: " + pres.getChaincodeID()
            + " peer name is: " + pres.getPeer().getName());
            result += stringResponse;
        }
        BlockInfo blockInfo = channel.queryBlockByTransactionID(transactionId);

Кто-нибудь может мне помочь, как запросить блокировку на основе идентификатора транзакции?

Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...