首页 > 解决方案 > 交易验证失败。同时使用不同类型的状态作为输入和输出

问题描述

我在创建 Cordapp 时遇到问题。我有两种类型的状态 Policy State 和 Claim State 以及它们各自的合同。现在我正在编写一个索赔流程,其中将政策状态作为输入,并应生成索赔状态作为输出。

但是我这样做时遇到了这个错误-

java.util.concurrent.ExecutionException: net.corda.core.contracts.TransactionVerificationException$ContractRejection: Contract verification failed: Required com.example.contract.PolicyContract.Commands.Create command, contract: com.example.contract.PolicyContract, transaction: B6F0A0B895B477153530F060B264FE85BAA8F29BA922A546BEC6300A255667C7

我附上我的保单合同、ClaimContract 和 ClaimFlow-

PolicyContract- https://ideone.com/giz7uX

ClaimContract- https://ideone.com/3GM4UF

ClaimFlow- https://ideone.com/BobTsy

标签: kotlinblockchaincordasmartcontracts

解决方案


问题是requireSingleCommand. 当您创建具有输入状态的事务时,输入状态包含在另一个事务中的命令也将在此处加载。解决这种使用tx.commandsOfType<YourType>()或任何语法。这不会抛出异常。

异常是由于single被调用requireSingleCommand


推荐阅读