Corda拥有的州参与者财产

时间:2018-11-01 04:57:43

标签: corda

我已经读过enter link description here

根据这篇文章,OwnableState参与者的节点将持久保留transactin副本,而不是状态副本。

根据corda文档,OwnableState是一个契约状态,可以有一个所有者。 OwnableState具有参与者属性。我已将买方和卖方添加为OwnableState的参与者,但状态仅存储在所有者保管库中,而没有参与者。但是,在LinearState状态下,两个参与者的保管库都保持不变。

我需要了解Corda中的LinearState参与者和OwnableState参与者之间的区别。

1 个答案:

答案 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包含节点的键之一,则节点将存储状态