Corda API并未明确链接国家及其合同,这使我有可能在具有相同状态类的不同交易中使用不同的合同。
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())
请注意,这是一个为什么问题。我只是在寻找可能会丢失的用例。一切都为我工作。我不需要解决方法。
答案 0 :(得分:2)
是的,在Corda 3.x中,您可以引用给定状态的任何合同。可能会记住灵活性。
Corda 4.x通过允许您注释合同所管辖的州来为您建立州与合同之间的链接。如果状态是合同类的内部类,则此关联是自动的。 Relevant documentation。
您可以阅读有关这方面的各种攻击面及其处理方法的讨论HERE。