Cordapp 无法执行流程,因为 TransactionState 抱怨内部 class 状态与同一合约捆绑在一起
Cordapp fails to execute flow because TransactionState complains that inner class state is bundled with same contract
我们有一个非常简单的 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}
状态 class 是合约的内部 class,不需要 @BelongsToContract
注释。将状态 class 移动到顶层并按指定对其进行注释并不能解决问题。
我们这里有一个包含完整源代码的复制器项目:
https://github.com/dazraf/corda-multi-sig-reproducer
感谢收到的任何帮助。谢谢
在合约代码中,CONTRACT_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"
}
...
我们有一个非常简单的 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}
状态 class 是合约的内部 class,不需要 @BelongsToContract
注释。将状态 class 移动到顶层并按指定对其进行注释并不能解决问题。
我们这里有一个包含完整源代码的复制器项目: https://github.com/dazraf/corda-multi-sig-reproducer
感谢收到的任何帮助。谢谢
在合约代码中,CONTRACT_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"
}
...