Corda:用于验证从发起节点收到的交易请求的用户交互

Corda: User interaction for verifying the transaction request received from the initiator node

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

中的预期遵循剩余的过程

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

请参阅 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 启动时,用户将提供此参数。