【问题标题】:Corda: User interaction for verifying the transaction request received from the initiator nodeCorda:用于验证从发起节点收到的交易请求的用户交互
【发布时间】:2018-11-20 00:07:29
【问题描述】:

我们有一个需要以下步骤的用例: (1)Initiator通过UI触发事务流 (2) 流程被发起,由发起者签名并发送给接收者进行验证和签名(在 Corda 中) (3) 发起者的流程应该被暂停,直到接收者通过验证合约代码来验证交易并通过 UI 再次提交“验证” (4) 这应该会重新启动发起者的流程,并且应该按照 Corda 中的预期执行剩余的流程

几周前有人提到 Corda 尚不支持用户交互;这个功能还没有吗?将来,我们甚至可能希望通过 UI 添加状态属性,因为它使我们能够灵活地提出我们想要的交易,而不是硬编码。知道这在未来的版本中是否可行吗?

【问题讨论】:

    标签: corda


    【解决方案1】:

    请参阅 Negotiation Cordapp 示例,了解如何在实践中发挥作用 here

    目前尚未实现暂停用于人机交互的流(从 Corda V3.0 开始)。

    相反,您可以通过向您的状态添加状态标志来实现:

    class FooState(
        override val participants: List<Party>,
        val accepted: Boolean) : ContractState
    

    你会有三个命令:

    interface Commands : CommandData {
        class Propose : Commands
        class Reject: Commands
        class Accept: Commands
    }
    

    还有两个流程:

    • 提议流程:在此流程中,发起者创建并签署Propose 交易,以使用Propose 命令和accepted 标志将状态发布到账本上设置为false

    • 接受流程:在此流程中,接收者:

      • 创建一个Reject 事务,该事务消耗提议的状态并且不输出任何内容。该状态已从分类帐中删除并被有效拒绝
      • 创建一个Accept 事务来更新建议的状态,使acceptedtrue。该状态现已被接受,并且该事实已记录在分类帐上

    您需要为接受流程提供一个参数,用于确定是否接受提案。当流通过 API 或直接通过 RPC 启动时,用户将提供此参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 1970-01-01
      • 2021-03-06
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多