Corda State类参与者列出了重要性

时间:2018-03-19 11:31:19

标签: corda

我正在制作一个涉及3方(节点)的电话。 A,B,C。

有两个流程:

流程1: A到B发布流程

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

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

流程2: B到C转移流程

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

结果:

  1. 最新状态在节点B和B中可见。节点C
  2. 节点A中没有状态可见。 :-((节点A应显示其在流程1中获得的状态。不应该吗?)
  3. 我的问题是,即使A方没有参与Flow 2,分类账更新是如何在节点A上发生的,以及为什么其状态不可见?

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

    run vaultQuery contractStateType: com.example.Mystate
    

1 个答案:

答案 0 :(得分:3)

如果他/她不再是参与者,则节点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.只有参与者列表中的身份才能在其分类帐/数据库中具有未消耗状态。

国家和交易是不同的。节点A仍然应该从流程1中保持历史事务的完整性。但是,由于流程2改变了参与者,因此它不应该能够花费/查看最新的未消耗状态。