Сделка между 3 участниками с Corda - PullRequest
0 голосов
/ 17 мая 2018

У вас есть какой-нибудь пример, как выполнить несколько транзакций между участниками A, B, C. Я могу сделать это легко между двумя сторонами A и B. Проведите одно и то же обсуждение на официальном форуме Corda без результата Совместное использование транзакций несколькими узлами Является ли это возможным? У вас есть какой-нибудь пример?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Если вы выдаете новое состояние, вы можете просто изменить участников этого состояния, чтобы все стороны получили новое состояние.Вот пример, который я создал с данными KYC.Это пример обновления состояния (не выдачи нового состояния), но применяется тот же принцип - просто измените список участников, чтобы контролировать, кто будет видеть это состояние.Состояние KYC выглядит следующим образом:

@CordaSerializable
data class State(val firstName: String, val lastName: String, val accountNum: String, val owner: AbstractParty,
                 override val linearId: UniqueIdentifier = UniqueIdentifier(), val banksInvolved: List<AbstractParty> = emptyList()) : QueryableState, ContractState, LinearState {

    //Each time a TD is issued with this KYC data, the bank it is issued to is added to this banks involved list, meaning the data is now stored in that banks vault
    override val participants: List<AbstractParty> get() = banksInvolved.plus(owner)

Эта переменная участников представляет собой список всех узлов, которые будут хранить это состояние в своем хранилище (т.е. будут уведомлены о создании, обновлении состояний и т. Д.).Здесь вы также добавили бы новые узлы, чтобы они могли просматривать состояние в своем хранилище.

Затем в потоке, чтобы уведомить новый банк о том, что они получили данные KYC, мы просто добавляем состояниекак вывод с новым банком, добавленным в список banksInvolved.Это сделает этот новый банк участником с таким состоянием:

 builder.addOutputState(KYCData.first().state.copy(data = KYCData.first().state.data.copy(
                banksInvolved = KYCData.first().state.data.banksInvolved.plus(issuingInstitue)))) //Same state but with a new bank involved - i.e able to view this KYC data
0 голосов
/ 17 мая 2018

проверьте свое состояние, там можно упомянуть Список участников для транзакции.

...