如何获取特定节点参与者的“PartyAndCertificate”?

时间:2018-05-08 13:10:17

标签: corda

在我的流程中,我想调用预定义的子流程

    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”,我们的身份是否需要?

1 个答案:

答案 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列表每个节点只包含一个项目。)