Cordapp не может выполнить поток, потому что TransactionState жалуется, что внутреннее состояние класса связано с тем же контрактом - PullRequest
0 голосов
/ 15 января 2020

У нас есть очень простой шнур приложения, который создает состояние с потоком. Однако, когда мы запускаем тесты потока, мы получаем довольно странное предупреждение:

[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}

Класс состояния является внутренним классом контракта и не должен нуждаться в аннотации @BelongsToContract. Перемещение класса состояний на верхний уровень и аннотирование его в соответствии с указаниями не решает проблему.

У нас есть проект репродуктора с полным исходным кодом: https://github.com/dazraf/corda-multi-sig-reproducer

Любая помощь с благодарностью получена. Спасибо.

1 Ответ

1 голос
/ 16 января 2020

В коде контракта 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"
}
...
...