在我的流程中,我想调用预定义的子流程
fun generateSpend(services: ServiceHub,
tx: TransactionBuilder,
amount: Amount<Currency>,
ourIdentity: PartyAndCertificate,
to: AbstractParty,
onlyFromParties: Set<AbstractParty> = emptySet()): Pair<TransactionBuilder, List<PublicKey>> {
return generateSpend(services, tx, listOf(PartyAndAmount(to, amount)), ourIdentity, onlyFromParties)
}
https://github.com/corda/corda/blob/master/finance/src/main/kotlin/net/corda/finance/contracts/asset/Cash.kt 中的
我的问题是如何在我的流程中获取特定节点参与者的“PartyAndCertificate”,我们的身份是否需要?
答案 0 :(得分:1)
有几种方法:
您可以使用PartyAndCertificate
方法获取自己的节点FlowLogic.ourIdentityAndCert
您可以使用以下方式获取网络上所有节点的PartyAndCertificate
:
serviceHub.networkMapCache.allNodes.flatMap { it.legalIdentitiesAndCerts }
您可以使用以下网址获取网络上特定节点的PartyAndCertificate
:
serviceHub.networkMapCache.getNodeByLegalName(CordaX500Name("ANodeOrg", "", "GB"))
?.legalIdentitiesAndCerts
?: throw FlowException("Party not found on network.")
请注意,从Corda 3.1开始,网络上的每个节点只有一个合法身份(即legalIdentitiesAndCerts
列表每个节点只包含一个项目。)