Corda State 类参与者名单意义

Sha*_*war 2 corda

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

有2个流程:

流程 1: A 到 B 发行流程

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

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


流程 2: B 到 C 传输流程

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

结果 :

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

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

注意: 为了获取状态,我在每个节点上运行以下命令:

run vaultQuery contractStateType: com.example.Mystate
Run Code Online (Sandbox Code Playgroud)

小智 5

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

the vault will store the state if it is one of the participants
Run Code Online (Sandbox Code Playgroud)

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

节点 A 上的分类帐将状态标记为已消耗,并将节点 A 从参与者列表中删除。只有参与者列表中的身份才能在其分类帐/数据库中具有未使用状态。

状态和交易是不同的。节点 A 应该仍然拥有 Flow 1 中完整的历史交易。但是由于 Flow 2 改变了参与者,它应该不能再消费/查看最新的未消费状态。