Обработка многократного одобрения в ткани hyperledger - PullRequest
1 голос
/ 22 мая 2019

У меня есть приложение, в котором мне нужно одобрить несколько организаций.Цепной код хорошо работает, когда не указана политика одобрения.Но когда я даю политику подтверждения AND ('Org1.member', 'Org2.member'), обновление, выполненное с помощью цепного кода, не фиксируется.

Цепной код вызывается с использованием Java SDK.Ниже приведен фрагмент кода:

public String[] invoke1() throws Exception {

    HFClient client;
    Channel sdkChannel;
    String chaincode;
    String function;
    String args[];

    chaincode= config.getChaincode();
    args= config.getArgs();
    function= config.getFunction();


    client=  HFClient.createNewInstance();
    client.setCryptoSuite(CryptoSuite.Factory.getCryptoSuite());
    client.setUserContext(config.getUser());

    sdkChannel = client.newChannel(config.getChannel());
    sdkChannel.addPeer(client.newPeer(config.getPeer1Name(), config.getPeer1Url(), config.getPeer1Properties()));  //anchor peer Org1
    sdkChannel.addPeer(client.newPeer(config.getPeer2Name(), config.getPeer2Url(), config.getPeer2Properties()));  //anchor peer Org2
    sdkChannel.addOrderer(client.newOrderer(config.getOrdererName(), config.getOrdererUrl(), config.getOrdererProperties())); // orderer
    sdkChannel.initialize();

    final TransactionProposalRequest proposalRequest = client.newTransactionProposalRequest();
    final ChaincodeID chaincodeID = ChaincodeID.newBuilder()
            .setName(chaincode)
            .build();
    // chaincode name
    proposalRequest.setChaincodeID(chaincodeID);
    // chaincode function to execute
    proposalRequest.setFcn(function);
    // timeout
    proposalRequest.setProposalWaitTime(60000);
    // arguments for chaincode function
    proposalRequest.setArgs(args);

    System.out.println(proposalRequest.getChaincodeEndorsementPolicy());
    // Sending transaction proposal

    final Collection<ProposalResponse> responses = sdkChannel.sendTransactionProposal(proposalRequest, sdkChannel.getPeers());
    sdkChannel.sendTransaction(responses, client.getUserContext());
    String ret[]= new String[responses.size()];
    int i= 0;
    for (ProposalResponse resp : responses) {
        System.out.println(resp.getStatus());
        if (!resp.isVerified()
                || resp.getStatus() != ProposalResponse.Status.SUCCESS) {
            String str= "Error while executing chaincode from peer " + resp.getPeer().getName() + " status: "+ resp.getStatus() + ". Messages: " + resp.getMessage()+ ".";
            throw new RuntimeException(str);
        }
        else
            ret[i++]= new String(resp.getChaincodeActionResponsePayload());
    }
    System.out.println(sdkChannel.sendTransaction(responses));
    return ret;
} 

Выполнение цепного кода на узле привязки завершается успешно, однако внесенные цепным кодом изменения не фиксируются.Ниже приведен журнал одноранговой связи: enter image description here

Может кто-нибудь, пожалуйста, помогите мне с этим.

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