使用CORDA流创建原子事务的最佳方法

时间:2018-01-30 19:30:24

标签: corda

我有一个用例,我需要将数据发送给多个对方,但各方需要彼此保持匿名。在从对方收回背书后,我需要提交整个交易。需要保持整个交易的原子性。

使用Flow实现此目标的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

为此,您需要使用机密身份。机密身份由AnonymousParty类在州内表示:

class MyState(val party: AnonymousParty): ContractState {
    override val participants = listOf<AnonymousParty>(party)
}

PartyAnonymousParty之间的区别在于AnonymousParty仅通过公钥识别参与者。只要每个交易参与者为交易生成新的公钥,他们的身份以及他们在该州的参与将是秘密的。

要创建涉及机密身份的交易,您必须执行以下操作:

  • 启动流程的一方 - 让我们称她为爱丽丝 - 必须知道所有交易对手的身份(知道从谁那里收集签名)
  • Alice与每个对手方运行SwapIdentitiesFlow以自动为所有参与者创建机密身份
  • Alice在构建交易时使用这些机密身份
  • Alice收集所有交易对手的签名
  • Alice完成交易

每一方最终都会在他们的保险库中进行交易,但每一方只能通过匿名公钥识别,因此每一方的参与都会被同行保密。

您可以在此处找到有关此API的文档:https://docs.corda.net/api-identity.html。您可以在此处找到机密身份的示例用法:https://github.com/joeldudleyr3/whistleblower