【发布时间】:2018-05-22 17:22:37
【问题描述】:
非参与方可以更新corda中的状态吗?在我的用例中,我需要由非参与者更新状态。那可能吗?或者我可以在一个状态中声明一个可以为空的参与者吗?
【问题讨论】:
标签: corda
非参与方可以更新corda中的状态吗?在我的用例中,我需要由非参与者更新状态。那可能吗?或者我可以在一个状态中声明一个可以为空的参与者吗?
【问题讨论】:
标签: corda
participants 字段或owner 字段未定义谁可以更新状态:
participants 和所需的签名者之间不需要有任何对应关系。它们可以完全不同。
【讨论】:
LinearState 中的任何participants 或OwnableState 中的owner 都只能更新账本上存在的状态。
可以为空的参与者:
您可以在 State 类中定义可空的 Party? 字段,然后如果它具有非空值,那么您可以添加它 participants Corda 状态列表。
data class DummyTestState(val partyA: Party,
val partyB: Party?,
val messageNote: String,
override val linearId: UniqueIdentifier = UniqueIdentifier(),
override val participants: List<AbstractParty> = listOf(partyA)
) : LinearState
【讨论】:
partyB 具有非空值,则只有它可能。您可以编写一个流来更新现有状态以设置partyB 的值并将其添加到participants 列表中。
newState = state.copy(partyB=partyB,participants=listOf(partyA, partyB!!))