В Corda может ли вывод одной транзакции использоваться новой транзакцией в том же потоке? - PullRequest
0 голосов
/ 22 октября 2018

Существует поток согласно сценарию ниже.Транзакция 1: Состояние ввода A - Контракт A приводит к выходу Состояние B - Контракт AТранзакция 2: Состояние ввода B - Контракт A и нет выводаЭто возможно в Корде?Пожалуйста, поделитесь примером с ответом.Спасибо.

1 Ответ

0 голосов
/ 23 октября 2018

Да, это возможно.Например:

@InitiatingFlow
@StartableByRPC
class TwoTransactionFlow(val inputStateAndRefA: StateAndRef<StateA>) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        val notary = serviceHub.networkMapCache.notaryIdentities[0]

        // Creating, signing and finalising the first transaction.
        val txBuilderOne = TransactionBuilder(notary)
                .addInputState(inputStateAndRefA)
                .addOutputState(StateB(), ContractA.ID)
                .addCommand(ContractA.Commands.Transfer(), ourIdentity.owningKey)

        val signedTxOne = serviceHub.signInitialTransaction(txBuilderOne)
        val notarisedTxOne = subFlow(FinalityFlow(signedTxOne))

        // Creating, signing and finalising the second transaction.
        val stateRefB = StateRef(notarisedTxOne.id, 0)
        val stateAndRefB = serviceHub.toStateAndRef<StateB>(stateRefB)

        val transactionBuilderTwo = TransactionBuilder(notary)
                .addInputState(stateAndRefB)
                .addCommand(ContractA.Commands.Exit(), ourIdentity.owningKey)

        val signedTransactionTwo = serviceHub.signInitialTransaction(transactionBuilderTwo)
        subFlow(FinalityFlow(signedTransactionTwo))
    }
}
...