java - 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
为什么我会收到此错误?我的交易是确定性的,对吧?
解决方案
推荐阅读
- powerbi - 当我们使用 USERELATIONSHIP 时,power bi 如何解决歧义?
- azure-devops-migration-tools - 运行 Azure DevOps 迁移工具所需的权限
- javascript - 使用Javascript以任何顺序使用正则表达式查找字符串中的所有匹配项
- mysql - 我们想将 PowerBI 连接到托管在外部服务器上的 mysql 数据库
- javascript - 测试依赖于 react-router@6 useSearchParams 的自定义钩子
- typescript - Solid-js 组件的打字稿类型
- c# - 将方法从递归转换为迭代
- excel - 复制/导出多列
- c++ - 下面描述的这个特定的小问题是否有设计模式?
- javascript - 从 Firebase 存储下载 json 文件