Corda可拥有的状态参与者属性

Corda可拥有的状态参与者属性,corda,Corda,我读过 根据本文,OwnableState参与者的节点将持久化为TransactionCopy,而不是state copy 根据corda文档,OwnableState是一个合同状态,可以有一个所有者。OwnableState具有参与者属性。我已在OwnableState中将买方和卖方添加为参与者,但状态仅存储在Owners vault中,而不是参与者。但是,在LinearState状态下,将在两个参与者vault上持久化 我需要了解corda中LinearState参与者和OwnableSta

我读过

根据本文,OwnableState参与者的节点将持久化为TransactionCopy,而不是state copy

根据corda文档,OwnableState是一个合同状态,可以有一个所有者。OwnableState具有参与者属性。我已在OwnableState中将买方和卖方添加为参与者,但状态仅存储在Owners vault中,而不是参与者。但是,在LinearState状态下,将在两个参与者vault上持久化


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

以下是节点vault用于决定节点是否应存储状态的逻辑:

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 }
}
internal fun isRelevant(状态:ContractState,myKeys:Set):布尔值{
val keysToCheck=何时(状态){
is OwnableState->listOf(state.owner.owningKey)
else->state.participants.map{it.owningKey}
}
返回keystecheck.any{it in myKeys}
}
简言之:

  • 对于
    OwnableState
    ,如果
    OwnableState.owner
    对应于节点的一个键,则节点将存储状态
  • 对于
    ContractState
    和任何其他
    ContractState
    子类,如果
    ContractState,则节点将存储状态。参与者
    包含节点的一个键