第三方可以检查他不知道的状态,并在流中将此状态添加为输入状态吗?

时间:2018-07-27 03:20:12

标签: corda

这是我的deliverydemo source code on github

我的情况:

  1. A向B发行令牌
  2. B向C下订单
  3. C将货物交付给B,并尝试启动从B检索令牌的流程。

我的问题:

  • C可以知道B拥有的令牌状态吗?
  • C可以在“检索”流中将此令牌状态添加为输入状态吗?

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

不幸的是,似乎JAVA不支持“展开”,但Kotlin却支持。 在添加一小段用于发送和接收Java.String并在可行的流程(令牌发行流程)中取消扭曲后,该流程将引发此错误-"missing parameter name at index 0 {}"

我认为可能的解决方案是像“ CollectSignaturesFlow”一样在Kotlin中创建新流程。 否则,我必须将Java代码转换成Kotlin。

2 个答案:

答案 0 :(得分:1)

C并不知道令牌状态的存在,因此不能自己将它们添加到事务中。

相反,C应该要求B传送她要花费的令牌状态,并将其添加到交易中。

流代码看起来像:

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

答案 1 :(得分:1)

替代乔尔的答案。您可以考虑添加 C 作为令牌状态的参与者。

例如在Kotlin中,其他设置为 C

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

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

自然,您采取的所有方式都取决于您的隐私模型。