corda - 3rd 方可以检查他不知道的状态,并将此状态添加到流中作为输入状态吗?
问题描述
我的场景:
- A 向 B 发放代币
- B 向 C 下订单
- C 将货物交付给 B,并尝试启动从 B 取回令牌的流程。
我的问题:
- C 可以知道 B 拥有的令牌状态的状态吗?
- C 可以在“检索”流中添加此令牌状态作为输入状态吗?
根据 Joel 的建议,我尝试在我的 OrderDeliveredFlow 中发送一些请求并从 PartyB 上的 PartyC 接收 StateAndRef。
不幸的是,似乎 JAVA 不支持“解包”,但 Kotlin 支持。在我添加一个用于发送和接收 Java.String 的小段并在一个可行的流程中解开它之后 - 我的令牌发布流程,这个流程会引发这个错误 - "missing parameter name at index 0 {}"。
我认为一个可能的解决方案是在 Kotlin 中创建一个新流程,就像“CollectSignaturesFlow”一样。否则,我必须将我的 Java 代码翻译成 Kotlin。
解决方案
C 不知道令牌状态的存在,因此不能自己将它们添加到事务中。
相反,C 应该要求 B 发送她想要花费的令牌状态,并将它们添加到交易中。
流程代码如下所示:
val otherPartySession = initiateFlow(otherParty)
val tokenState = otherPartySession.receive<StateAndRef<Cash.State>>().unwrap { it }
txBuilder.addInputState(tokenState)
推荐阅读
- php - Magento 回滚
- python-3.x - Python 3:从 numpy 数组中选择随机对元素而不重复
- ios - 带有 Alamofire 和 ObjectMapper 的 Swift 4.0 没有这样的模块“ObjectMapper”
- javascript - 如何在我的网站上隐藏代码/文件?
- python - 在 python 下拟合时选择步长
- optimization - 使用 scipy.optimize curve_fit 在 Python 中进行曲线拟合
- javascript - 使用javascript处理诺基亚按钮连续点击
- ajax - 动态添加/删除输入字段以形成(Symfony 3 事件/Ajax)
- vb.net - 从文本文件添加到列表视图的第一项只是添加了两次
- tensorflow - Tensorflow-没有名为“object_detection.protos”的模块