kotlin - 交易验证失败。同时使用不同类型的状态作为输入和输出
问题描述
我在创建 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
解决方案
问题是requireSingleCommand
. 当您创建具有输入状态的事务时,输入状态包含在另一个事务中的命令也将在此处加载。解决这种使用tx.commandsOfType<YourType>()
或任何语法。这不会抛出异常。
异常是由于single
被调用requireSingleCommand
。
推荐阅读
- django - 用 Django 和 Kubernetes 部署 prometheus,如何让它爬取 Django 应用程序?
- json - 检查数据库中的点是否显示在地图上使用模式淡入淡出、django 和传单
- php - 如何在 Drupal 中显示一个简单的自定义页面?
- javascript - 使用 MutationObserver Python 跟踪 DOM 元素内的变化
- xpath - Xpath 查询 - 如何忽略脚本标签中的内容
- ios - 使用 ViewCode 点击按钮 Swift 时滚动 ScrollView
- sequelize.js - NestJS 无法解决依赖关系 - 无法将模型存储库投入使用
- javascript - Promise 中 Reponse 代表什么
在 Javascript 中? - excel - 在列中搜索文本,在右侧的列中取值并将其向上移动 1 行
- vaadin - Vaadin 21 中的 ComboBox 不显示任何项目