Отсутствуют подписи для транзакции 58C11D для ключей: DL9YufujsPipKTb8fjj82ogVS1s67PBWD3vn2fGzjUbEnN, подписавшими: нотариус - PullRequest
0 голосов
/ 10 июня 2019

Я использую Corda Version 4.

Мой CorDapp имеет четыре узла - Нотариальный узел (проверка), «Узел A», «Узел B» и «Узел C». Ниже приведены потоки, определенные в приложении -

Поток 1: «Узел A» подписывает и отправляет торговый запрос на «Узел B». «Узел C» также уведомляется.

Ниже приведен мой код для потока 1:

val tx = TransactionBuilder(notary).withItems(
              StateAndContract(tradeProposal, IOU_CONTRACT_ID),
              Command(IOUContract.Commands.Issue(),     listOf(tradeProposal.sender.owningKey)))
              .addAttachment(secHash)
tx.setTimeWindow(serviceHub.clock.instant(), 180.seconds)
val signedTx = serviceHub.signInitialTransaction(tx)
signedTx.verify(serviceHub)
val NodeBFlow = initiateFlow(NodeB)
val NodeCFlow = initiateFlow(NodeC)
subFlow(FinalityFlow(signedTx, listOf(NodeBFlow ,NodeCFlow )))
return signedTx.tx.outRef<State>(0)

Поток 2: «Узел B» одобряет заявку на торговлю, подписывает ее самостоятельно, получает подпись от A и закрывает сделку. «Узел C» также уведомляется.

val tx = TransactionBuilder(notary).
withItems(
latestRecord,
StateAndContract(newState, IOU_CONTRACT_ID),
Command(IOUContract.Commands.Completed(),
newState.participants.map { it.owningKey }))
tx.setTimeWindow(serviceHub.clock.instant(), 600.seconds)
tx.verify(serviceHub)
val partSignedTx = serviceHub.signInitialTransaction(tx)
val NodeAFlow = initiateFlow(newState.sender)
val NodeCFlow = initiateFlow(newState.recipient2)
val fullySignedTx = subFlow(CollectSignaturesFlow(partSignedTx,     setOf(NodeAFlow ,NodeCFlow)))
return subFlow(FinalityFlow(fullySignedTx, listOf(NodeAFlow ,NodeCFlow)))

Я получаю следующую ошибку при выполнении потока 1 -

Missing signatures on transaction 58C11D for keys:         aL9YufujsPipKTb8fjj897654322ogVS1s67PBWD3vn2fGzjUbEnN, by signers: notary
net.corda.core.transactions.SignedTransaction$SignaturesMissingException:     Missing signatures on transaction 58C11D for keys:         aL9YufujsPipKTb8fjj897654322ogVS1s67PBWD3vn2fGzjUbEnN, by signers: notary

1 Ответ

2 голосов
/ 11 июня 2019

Нотариус выдает эту ошибку, потому что NodeC включен в FinalityFlow (который отправляет транзакцию нотариусу), однако он не является частью подписывающих лиц для транзакции

Если вы хотите уведомить Node Cне делая его обязательным участником и подписавшим сделку, вы хотите использовать настройку типа «наблюдатель», вы можете найти пример кода здесь:

https://docs.corda.net/tutorial-observer-nodes.html

  • РазработчикОтношения на R3
...