交易验证失败。同时使用不同类型的状态作为输入和输出

时间:2018-09-18 06:29:17

标签: kotlin blockchain corda smartcontracts

创建Cordapp时遇到问题。 我有两种类型的状态:保单状态和索偿状态,以及它们各自的合同。 现在,我正在编写一个索赔流程,其中将策略状态作为输入,而将索赔状态作为输出。

但是我在这样做时面临着这个错误-

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

1 个答案:

答案 0 :(得分:2)

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

该异常是由于single中调用了requireSingleCommand