首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >INVOKE_CHAINCODE失败:存在事务ID

INVOKE_CHAINCODE失败:存在事务ID
EN

Stack Overflow用户
提问于 2020-07-08 22:12:32
回答 1查看 220关注 0票数 2

我有一个包含两个合同的链码,以便第二个合同调用第一个合同的一个事务,如下所示:

代码语言:javascript
复制
class ContractA implements ContractInterface{
     .....
     @Transaction
     public boolean trans1(MyContext ctx, String data) {
         ...
         return result;
     }
}

class ContractB implements ContractInterface{
     .....
     @Transaction
     public boolean trans2(MyContext ctx, String data) {
         ...
         Chaincode.Response response = ctx.getStub().invokeChaincode(chaincodeId,
                    new String[]{ContractA:trans1, "data"});
         ...
     }
}

在执行invokeChaincode期间,trans2失败,错误是:"INVOKE_CHAINCODE失败:事务ID存在“。根据文档,不会通过调用invokeChaincode来创建其他事务,因此,使用相同的事务ID创建调用是正确的。

是错误还是我在设计中做错了什么?

事先非常感谢,罗克萨纳

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-10 02:57:43

执行ctx.getStub().invokeChaincode(chaincodeId, new String[]{ContractA:trans1, "data"});是要求对等方执行链码以对调用本身进行链码编码。不支持递归调用链码。

这里的错误消息可能会得到改进,但本质上,资源被分配给与txid相关联的链码调用,然后在事务完成时清除。因为您的事务已经与您的链码交互,这些资源已经存在,并且试图创建它们将导致您看到返回的错误。

如果希望在自己的链码中调用另一个函数,只需将其作为正常函数调用,而不是试图通过链码存根调用它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62804430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档