创建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
答案 0 :(得分:2)
问题是requireSingleCommand
。当您创建具有输入状态的事务时,也会在此处加载输入状态已包含在另一个事务中的命令。要解决此问题,请使用tx.commandsOfType<YourType>()
或任何语法。这不会引发异常。
该异常是由于single
中调用了requireSingleCommand
。