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.
我的场景:
- A 发行代币给 B
- B向C下单
- C将货物发给B,并尝试启动从B取回token的流程
我的问题:
- C能知道B持有的token状态吗?
- C 能否在 "retrieving" 流中添加此令牌状态作为输入状态?
按照 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 拥有的令牌的状态。但是,您可以看到,这需要 issuer 或 B 事先了解 C。
当然,您选择的路线完全取决于您的隐私模型。
这是我的 deliverydemo source code on github.
我的场景:
- A 发行代币给 B
- B向C下单
- C将货物发给B,并尝试启动从B取回token的流程
我的问题:
- C能知道B持有的token状态吗?
- C 能否在 "retrieving" 流中添加此令牌状态作为输入状态?
按照 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 拥有的令牌的状态。但是,您可以看到,这需要 issuer 或 B 事先了解 C。
当然,您选择的路线完全取决于您的隐私模型。