Flow 的发起者是否有可能绕过对其不使用的状态属性的检查?
Is it possible for initiator of a Flow to bypass check on an attribute of state it is not consuming?
场景
State1->Flow1->State2 (State1 is input and State2 is output)
State2->Flow2->State3 (State2 is input and State3 is output)
在 Flow2 中,State2 是唯一的输入状态,但 Flow2 的 Initiator 部分包含对 State1 属性的检查(通过从账本中查询)。
查询
Flow2 的发起人是否有可能绕过该检查进行欺诈?如果是,那如何预防呢?
[请注意,检查是针对 State1,它不是 Flow2 的输入状态,否则可以在 Flow2 的相关合约中进行额外检查以防止欺诈。]
没有什么可以阻止发起者绕过检查,因为它处于流程级别,所以是的,他可以进行欺诈。
防止它
- 如果流程 2 的响应者首先在他的保险库中有
State1
,那么他可以执行相同的检查,因为他不信任发起者。
- 否则,您必须提供状态 1 作为流程 2 中交易的输入,并在合约中对其进行验证。
场景
State1->Flow1->State2 (State1 is input and State2 is output)
State2->Flow2->State3 (State2 is input and State3 is output)
在 Flow2 中,State2 是唯一的输入状态,但 Flow2 的 Initiator 部分包含对 State1 属性的检查(通过从账本中查询)。
查询
Flow2 的发起人是否有可能绕过该检查进行欺诈?如果是,那如何预防呢?
[请注意,检查是针对 State1,它不是 Flow2 的输入状态,否则可以在 Flow2 的相关合约中进行额外检查以防止欺诈。]
没有什么可以阻止发起者绕过检查,因为它处于流程级别,所以是的,他可以进行欺诈。
防止它
- 如果流程 2 的响应者首先在他的保险库中有
State1
,那么他可以执行相同的检查,因为他不信任发起者。 - 否则,您必须提供状态 1 作为流程 2 中交易的输入,并在合约中对其进行验证。