我正在制作一个涉及3方(节点)的电话。 A,B,C。
有两个流程:
流程1: A到B发布流程
State对象中参与者字段的值:listOf(A,B)
结果:最新状态在节点A和节点B中可见
流程2: B到C转移流程
State对象中参与者字段的值:listOf(B,C)
结果:
我的问题是,即使A方没有参与Flow 2,分类账更新是如何在节点A上发生的,以及为什么其状态不可见?
注意: 为了获得状态,我在每个节点上运行命令:
run vaultQuery contractStateType: com.example.Mystate
答案 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改变了参与者,因此它不应该能够花费/查看最新的未消耗状态。