Как получить "PartyAndCertificate" конкретного участника узла? - PullRequest
0 голосов
/ 08 мая 2018

В моем потоке я хочу вызвать предопределенный подпоток

    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 голосов
/ 08 мая 2018

Есть несколько способов:

  • Вы можете получить свой собственный узел 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 будет содержать ровно один элемент на узел).

...