在CordaR3交易中,我可以使用仅一方知道的状态吗?

时间:2019-01-25 17:58:56

标签: kotlin transactions blockchain corda

我有2个政党(A和B) 在同一笔交易中,我要:     消耗仅由甲方知道的inputState,     产生仅由乙方知道的outputState,     产生一个甲乙双方都知道的outputState

有可能这样做吗?

2 个答案:

答案 0 :(得分:1)

从Corda 3.x开始,这是不可能的。

假设我们标记:

  • State1仅A知道的输入
  • State2仅B知道的输出
  • State3 A和B已知的输出

要让A存储State3,必须将它们发送给整个交易,包括State1State2。为了让B存储State2State3,必须将包括State1在内的整个交易发送给他们。平台目前不支持仅基于过滤的事务将状态存储在节点的保管库中。

答案 1 :(得分:0)

据我了解,这是不可行的。让我们写下您想要实现的目标:

  1. 使用仅由甲方知道的InputState
  2. 产生仅由乙方知道的OutputState
  3. 产生仅由甲方和乙方知道的OutputState

我认为这些观点无法实现:

  1. 如果甲方发起流程,那么它应该以某种方式查询仅由乙方知道的OutputState。此状态肯定不在甲方的保险库中,并且不依赖于要求“仅乙方知道的OutputState” )。
  2. 如果乙方发起了流程,那么它应该以某种方式查询或初始化仅由甲方知道的IntputState,该状态不在乙方的保险库中,也不在其依赖项之内,并且该语句通常与您的要求相矛盾。
  3. SignedTransaction是不可变的对象。为了使新国家能够进入分类帐,所有各方都应签署交易。无论如何,输入,输出状态对于所有方都是可见的。这一点也与您的要求相矛盾。