Blockchain 流的发起方是否可以绕过对其未使用的状态属性的检查?

Blockchain 流的发起方是否可以绕过对其未使用的状态属性的检查?,blockchain,corda,fraud-prevention,Blockchain,Corda,Fraud Prevention,场景 State1->Flow1->State2 (State1 is input and State2 is output) State2->Flow2->State3 (State2 is input and State3 is output) 在Flow2中,State2是唯一的输入状态,但是Flow2的启动器部分包含State1属性的检查(通过从分类账查询) 查询 Flow2的发起人是否有可能绕过该检查进行欺诈?如果是的话,如何预防呢 [请注意,检查处于状态1

场景

State1->Flow1->State2 (State1 is input and State2 is output) 
State2->Flow2->State3 (State2 is input and State3 is output)
在Flow2中,State2是唯一的输入状态,但是Flow2的启动器部分包含State1属性的检查(通过从分类账查询)

查询

Flow2的发起人是否有可能绕过该检查进行欺诈?如果是的话,如何预防呢


[请注意,检查处于状态1,而状态1不是Flow2的输入状态,否则可能会在Flow2的相关合同中进行额外检查以防止欺诈。]

没有任何东西可以阻止发起人绕过检查,因为它处于流级别,所以他可以进行欺诈

为了防止它

  • 如果流2的响应者首先在其保险库中有
    State1
    ,则他可以执行相同的检查,因为他不信任发起人
  • 否则,您必须在流程2中提供状态1作为事务的输入,并在合同中验证它

  • 从Corda 4.0中,您将获得参考状态,这些状态在这样的场景中可能很有用,正如Adrian所说,您不能“强制”另一个节点使用包含特定检查的特定版本的流。要么需要将支票添加到合同中(因此它适用于所有人),要么需要让第二方成为所需的签字人,并且他们可以在签字前进行检查。