Corda State class 参与者列出重要性

Corda State class Participants list significance

我正在开发一个涉及 3 个参与方(节点)的 cordap,即。 A、B、C.

有 2 个流程:

流程1:A到B发行流程

State 对象中参与者字段的值:listOf(A, B)

结果:最新状态在节点A和节点B中可见


流 2: B 到 C 传输流

State 对象中参与者字段的值:listOf(B, C)

结果:

  1. 最新状态在节点 B 和节点 C 中可见
  2. 节点 A 中的状态不可见。 :-((节点 A 应该显示其在流程 1 中获取的状态。不应该吗?)

我的问题是,即使 A 方没有参与 Flow 2,账本更新是如何在节点 A 上发生的,为什么它的状态不可见?

注: 为了获得状态,我在每个节点上的命令下面 运行 :

run vaultQuery contractStateType: com.example.Mystate

如果 he/she 不再是参与者,则节点 A 不应再具有该状态。

the vault will store the state if it is one of the participants

https://docs.corda.net/api-states.html#the-vault

节点 A 上的分类帐将状态标记为已消耗,并将节点 A 从参与者列表中删除。只有参与者列表中的身份才能在其 ledger/database.

上具有未使用状态

状态和交易是不同的。节点 A 应该仍然完整地保留来自流程 1 的历史交易。但是它不应该再 spend/view 最新的未消费状态,因为流程 2 改变了参与者。