Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
210 views
in Technique[技术] by (71.8m points)

kotlin - In Corda, can the output of one transaction be used by new transaction in the same flow?

There is a flow as per below scenario.
Transaction 1: Input StateA - ContractA results in output StateB - ContractA
Transaction 2: Input StateB - ContractA and no output
Is this possible in Corda? Please do share an example with response. Thanks.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Yes, this is possible. For example:

@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))
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...