使用 CORDA 流创建原子事务的最佳方式
Best way to create Atomic Transactions using CORDA Flows
我有一个用例,我需要向多个交易方发送数据,但交易方需要彼此保持匿名。从对方那里收回背书后,我需要提交整个交易。需要保持整个事务的原子性
使用 Flows 实现此目标的最佳方法是什么。
为此,您需要使用保密身份。机密身份在状态中表示为 AnonymousParty
class:
class MyState(val party: AnonymousParty): ContractState {
override val participants = listOf<AnonymousParty>(party)
}
Party
和 AnonymousParty
之间的区别在于 AnonymousParty
仅通过 public 键识别参与者。只要每个交易参与者为交易生成一个新的 public 密钥,他们的身份以及他们对状态的参与都是保密的。
要创建涉及机密身份的交易,您必须执行以下操作:
- 发起流程的一方 - 让我们称她为爱丽丝 - 必须知道所有交易对手的身份(知道从谁那里收集签名)
- Alice 与每个交易对手一起运行
SwapIdentitiesFlow
以自动为所有参与者创建机密身份
- Alice 在构建交易时使用这些机密身份
- Alice 收集所有交易对手的签名
- 爱丽丝完成交易
每一方最终都会在他们的保险库中进行交易,但每一方都只通过匿名 public 密钥进行识别,因此每一方的参与都对他们的同行保密。
您可以在此处找到有关此 API 的文档:https://docs.corda.net/api-identity.html. You can find an example usage of confidential identities here: https://github.com/joeldudleyr3/whistleblower。
我有一个用例,我需要向多个交易方发送数据,但交易方需要彼此保持匿名。从对方那里收回背书后,我需要提交整个交易。需要保持整个事务的原子性
使用 Flows 实现此目标的最佳方法是什么。
为此,您需要使用保密身份。机密身份在状态中表示为 AnonymousParty
class:
class MyState(val party: AnonymousParty): ContractState {
override val participants = listOf<AnonymousParty>(party)
}
Party
和 AnonymousParty
之间的区别在于 AnonymousParty
仅通过 public 键识别参与者。只要每个交易参与者为交易生成一个新的 public 密钥,他们的身份以及他们对状态的参与都是保密的。
要创建涉及机密身份的交易,您必须执行以下操作:
- 发起流程的一方 - 让我们称她为爱丽丝 - 必须知道所有交易对手的身份(知道从谁那里收集签名)
- Alice 与每个交易对手一起运行
SwapIdentitiesFlow
以自动为所有参与者创建机密身份 - Alice 在构建交易时使用这些机密身份
- Alice 收集所有交易对手的签名
- 爱丽丝完成交易
每一方最终都会在他们的保险库中进行交易,但每一方都只通过匿名 public 密钥进行识别,因此每一方的参与都对他们的同行保密。
您可以在此处找到有关此 API 的文档:https://docs.corda.net/api-identity.html. You can find an example usage of confidential identities here: https://github.com/joeldudleyr3/whistleblower。