Merge pull request #1377 from corda/mnesbit-fix-notary-demo

Fix notary demo
This commit is contained in:
Matthew Nesbit 2017-09-01 11:28:21 +01:00 committed by GitHub
commit 8ae09f1fb3

View File

@ -1,10 +1,9 @@
package net.corda.notarydemo.flows package net.corda.notarydemo.flows
import co.paralleluniverse.fibers.Suspendable import co.paralleluniverse.fibers.Suspendable
import net.corda.core.contracts.Amount import net.corda.core.contracts.CommandData
import net.corda.core.contracts.Contract import net.corda.core.contracts.Contract
import net.corda.core.contracts.ContractState import net.corda.core.contracts.ContractState
import net.corda.core.contracts.Issued
import net.corda.core.flows.FlowLogic import net.corda.core.flows.FlowLogic
import net.corda.core.flows.StartableByRPC import net.corda.core.flows.StartableByRPC
import net.corda.core.identity.AbstractParty import net.corda.core.identity.AbstractParty
@ -12,8 +11,6 @@ import net.corda.core.identity.Party
import net.corda.core.transactions.LedgerTransaction import net.corda.core.transactions.LedgerTransaction
import net.corda.core.transactions.SignedTransaction import net.corda.core.transactions.SignedTransaction
import net.corda.core.transactions.TransactionBuilder import net.corda.core.transactions.TransactionBuilder
import net.corda.finance.GBP
import net.corda.finance.contracts.asset.Cash
@StartableByRPC @StartableByRPC
class DummyIssueAndMove(private val notary: Party, private val counterpartyNode: Party, private val discriminator: Int) : FlowLogic<SignedTransaction>() { class DummyIssueAndMove(private val notary: Party, private val counterpartyNode: Party, private val discriminator: Int) : FlowLogic<SignedTransaction>() {
@ -21,23 +18,27 @@ class DummyIssueAndMove(private val notary: Party, private val counterpartyNode:
override fun verify(tx: LedgerTransaction) {} override fun verify(tx: LedgerTransaction) {}
} }
data class DummyCommand(val dummy: Int = 0): CommandData
data class State(override val participants: List<AbstractParty>, private val discriminator: Int) : ContractState { data class State(override val participants: List<AbstractParty>, private val discriminator: Int) : ContractState {
override val contract = DoNothingContract override val contract = DoNothingContract
} }
@Suspendable @Suspendable
override fun call() = serviceHub.run { override fun call(): SignedTransaction {
// Self issue an asset // Self issue an asset
val amount = Amount(1000000, Issued(myInfo.legalIdentity.ref(0), GBP)) val state = State(listOf(serviceHub.myInfo.legalIdentity), discriminator)
val issueTxBuilder = TransactionBuilder(notary = notary) val issueTx = serviceHub.signInitialTransaction(TransactionBuilder(notary).apply {
val signers = Cash().generateIssue(issueTxBuilder, amount, serviceHub.myInfo.legalIdentity, notary) addOutputState(state)
val issueTx = serviceHub.signInitialTransaction(issueTxBuilder, signers) addCommand(DummyCommand(),listOf(serviceHub.myInfo.legalIdentity.owningKey))
})
serviceHub.recordTransactions(issueTx) serviceHub.recordTransactions(issueTx)
// Move ownership of the asset to the counterparty // Move ownership of the asset to the counterparty
val moveTxBuilder = TransactionBuilder(notary = notary)
val (_, keys) = Cash.generateSpend(serviceHub, moveTxBuilder, Amount(amount.quantity, GBP), counterpartyNode)
// We don't check signatures because we know that the notary's signature is missing // We don't check signatures because we know that the notary's signature is missing
signInitialTransaction(moveTxBuilder, keys) return serviceHub.signInitialTransaction(TransactionBuilder(notary).apply {
addInputState(issueTx.tx.outRef<ContractState>(0))
addOutputState(state.copy(participants = listOf(counterpartyNode)))
addCommand(DummyCommand(),listOf(serviceHub.myInfo.legalIdentity.owningKey))
})
} }
} }