首页 > 解决方案 > Hyperledger Fabric:为什么添加此交易会导致ContractException [错误:无法将交易发送到orderer]?

问题描述

我正在为供应链编写智能合约,并且我已经编写了更新供应链中物品状态的交易——现在我正在尝试使用交易来获取具有特定属性的所有物品。

该交易遵循织物样本中给出的一般模式。我在这里放了代码,我认为这很简单:

    @Transaction
    public String getItems(ItemContext ctx, String feature) {
        System.out.println(ctx);

        StringBuilder results=new StringBuilder("");
        String prefix="";

        for(String itemID: Item.itemIDList) {
            String itemKey= State.makeKey(new String[] {itemID});
            Item item=ctx.itemList.getItem(itemKey);

            if(feature.equals(item.getFeature())) {
                results.append(prefix);
                results.append(itemID);
                prefix="|";
                System.out.println(itemID);
            }
        }

        return results.toString();
    }

当我注释掉这个事务时,它会正确执行。但是当我包含它时,对于我提交的任何交易,我都会收到下面显示的错误。我实际上经常遇到这个错误,但我仍然不确定我为什么会得到它!

错误如下所示:

org.hyperledger.fabric.gateway.ContractException: Failed to send transaction to the orderer
        at org.hyperledger.fabric.gateway.impl.TransactionImpl.commitTransaction(TransactionImpl.java:145)
        at org.hyperledger.fabric.gateway.impl.TransactionImpl.submit(TransactionImpl.java:96)
        at org.hyperledger.fabric.gateway.impl.ContractImpl.submitTransaction(ContractImpl.java:50)
        at org.org1.Establish.main(Establish.java:52)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:254)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The proposal responses have 2 inconsistent groups with 0 that are invalid. Expected all to be consistent and none to be invalid.
        at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
        at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2022)
        at org.hyperledger.fabric.gateway.impl.TransactionImpl.commitTransaction(TransactionImpl.java:139)
        ... 5 more
Caused by: java.lang.IllegalArgumentException: The proposal responses have 2 inconsistent groups with 0 that are invalid. Expected all to be consistent and none to be invalid.
        at org.hyperledger.fabric.sdk.Channel.doSendTransaction(Channel.java:5574)
        at org.hyperledger.fabric.sdk.Channel.sendTransaction(Channel.java:5533)
        at org.hyperledger.fabric.gateway.impl.TransactionImpl.commitTransaction(TransactionImpl.java:138)
        ... 5 more

为什么我会收到此错误?我的交易是确定性的,对吧?

标签: javahyperledger-fabrichyperledger

解决方案


推荐阅读