我已经读过enter link description here。
根据这篇文章,OwnableState参与者的节点将持久保留transactin副本,而不是状态副本。
根据corda文档,OwnableState是一个契约状态,可以有一个所有者。 OwnableState具有参与者属性。我已将买方和卖方添加为OwnableState的参与者,但状态仅存储在所有者保管库中,而没有参与者。但是,在LinearState状态下,两个参与者的保管库都保持不变。
我需要了解Corda中的LinearState参与者和OwnableState参与者之间的区别。
答案 0 :(得分:1)
这是节点的保管库用来决定节点是否应存储状态的逻辑:
internal fun isRelevant(state: ContractState, myKeys: Set<PublicKey>): Boolean {
val keysToCheck = when (state) {
is OwnableState -> listOf(state.owner.owningKey)
else -> state.participants.map { it.owningKey }
}
return keysToCheck.any { it in myKeys }
}
换句话说:
OwnableState
,如果OwnableState.owner
对应于节点的键之一,则节点将存储状态ContractState
和任何其他ContractState
子类,如果ContractState.participants
包含节点的键之一,则节点将存储状态