Может ли государство Корда работать с несколькими контрактами? - PullRequest
0 голосов
/ 18 марта 2019

API Corda явно не связывает государство и его контракт, что позволяет мне потенциально использовать разные контракты в разных транзакциях с одним и тем же классом состояния.

transactionBuilder1
    .addOutputState(MyState(), MyStateContract::class.qualifiedName!!)

...
transactionBuilder2
    .addOutputState(MyState(), SecondContract::class.qualifiedName!!)

В какой ситуации мне может понадобиться такая гибкость?Каковы недостатки при указании названия контракта вместе с государством?

// A hypothetical implementation of Corda API

@CordaSerializable
interface ContractState {
    val participants: List<AbstractParty>
    val contractClassName: String
}    

....
transactionBuilder
    .addOutputState(MyState())

A Отказ от ответственности:

Обратите внимание, что это вопрос WHY ,Я просто ищу вариант использования, который я могу пропустить.У меня все работает.Мне НЕ нужен обходной путь.

1 Ответ

2 голосов
/ 20 марта 2019

Да, в Corda 3.x вы можете ссылаться на любой контракт для данного штата;вероятно, это было сделано с учетом гибкости.

Corda 4.x устанавливает для вас связь между государством и контрактом, позволяя вам аннотировать государства, с которыми контракт управляет ими.Если состояния являются внутренними классами класса контракта, эта связь является автоматической. Соответствующая документация .

Вы можете прочитать обсуждение различных поверхностей атаки в этом отношении и того, как они обрабатываются ЗДЕСЬ .

...