Corda:用于验证从启动器节点接收的事务请求的用户交互

时间:2017-08-23 16:45:49

标签: corda

我们有一个用例,需要以下步骤: (1)Initiator通过UI触发事务流 (2)流程启动,由发起人签名并发送给收件人以进行验证和签名(在Corda中) (3)发起人的流程应该暂停,直到收件人通过验证合同代码验证交易并提交"已验证的"再次通过用户界面 (4)这应该重新启动发起人的流程,并且应按照Corda的预期遵循剩余的流程

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

1 个答案:

答案 0 :(得分:4)

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