Cordapp无法执行流,因为TransactionState抱怨内部类状态与同一契约捆绑在一起

Cordapp无法执行流,因为TransactionState抱怨内部类状态与同一契约捆绑在一起,corda,Corda,我们有一个非常简单的cordapp,它通过流创建一个状态。但是,当我们运行流测试时,我们会得到一个非常奇怪的警告: [WARN] 17:07:15,982 [Mock network] contracts.TransactionState. - State class io.dazraf.multisig.contracts.MultiSigContract$MultiSigAsset belongs to contract io.dazraf.multisig.contracts.MultiS

我们有一个非常简单的cordapp,它通过流创建一个状态。但是,当我们运行流测试时,我们会得到一个非常奇怪的警告:

[WARN] 17:07:15,982 [Mock network] contracts.TransactionState. - State class io.dazraf.multisig.contracts.MultiSigContract$MultiSigAsset belongs to contract io.dazraf.multisig.contracts.MultiSigContract, but is bundled with contract MultiSigContract in TransactionState. Annotate MultiSigAsset with @BelongsToContract(MultiSigContract.class) to remove this warning. {actor_id=Only For Testing, actor_owning_identity=O=Mock Company 1, L=London, C=GB, actor_store_id=TEST, fiber-id=10000001, flow-id=0d663be3-b2e4-4a72-bb49-ba80867f1698, invocation_id=29075169-0b94-4167-8c9d-689b28b7337f, invocation_timestamp=2020-01-15T17:07:15.161Z, origin=Only For Testing, session_id=29075169-0b94-4167-8c9d-689b28b7337f, session_timestamp=2020-01-15T17:07:15.161Z, thread-id=209}
state类是契约的内部类,不需要@BelongsToContract注释。将state类移动到顶层并按指定的方式对其进行注释并不能解决问题

我们这里有一个复制机项目,有完整的来源:


感谢您的帮助。谢谢。

在合同代码中,合同ID必须是完全限定的名称。即

class MultiSigContract : Contract {
companion object {
  const val CONTRACT_ID: ContractClassName = "io.dazraf.multisig.contracts.MultiSigContract"
}
...
而不是:

class MultiSigContract : Contract {
companion object {
  const val CONTRACT_ID: ContractClassName = "MultiSigContract"
}
...

你确定这是原因吗?这只是一个警告;您在节点的日志中看到任何错误声明了吗?没关系,我只是在Slack上看到问题已经解决了。