3rd 方是否可以检查他不知道的状态,并将该状态作为输入状态添加到流中?

Can 3rd party check the state that he does not know, and add this state in a flow as a input state?

这是我的 deliverydemo source code on github.

我的场景:

  1. A 发行代币给 B
  2. B向C下单
  3. C将货物发给B,并尝试启动从B取回token的流程

我的问题:


按照 Joel 的建议,我尝试在我的 OrderDeliveredFlow 中发送一些请求并从 PartyC 上的 PartyB 接收 StateAndRef。

不幸的是,JAVA 似乎不支持 "unwrap",但 Kotlin 支持。 在我添加一个用于发送和接收的小段后 Java.String 并在一个可行的流程中展开它 - 我的令牌问题流程,这个流程会出现这个错误 - .

我认为一个可能的解决方案是在 Kotlin 中创建一个新的流程,就像 "CollectSignaturesFlow" 一样。 否则,我必须将我的 Java 代码翻译成 Kotlin。

C 不知道代币状态的存在,所以不能自己将它们添加到交易中。

相反,C 应该要求 B 发送她想要花费的代币状态,并将它们添加到交易中。

流程代码类似于:

val otherPartySession = initiateFlow(otherParty)
val tokenState = otherPartySession.receive<StateAndRef<Cash.State>>().unwrap { it }
txBuilder.addInputState(tokenState)

作为 Joel 回答的替代方法。您可以考虑添加 C 作为令牌状态的参与者。

例如在 Kotlin 中,other 将设置为 C

override val participants: List<AbstractParty> get() = listOf(issuer, owner, other)

C 然后会知道 B 拥有的令牌的状态。但是,您可以看到,这需要 issuerB 事先了解 C

当然,您选择的路线完全取决于您的隐私模型。