mirror of
https://github.com/corda/corda.git
synced 2025-02-22 02:06:45 +00:00
Merged in aslemmer-fix-generated-exit-signing (pull request #342)
Aslemmer fix generated exit signing
This commit is contained in:
commit
5a2d1e0979
@ -453,6 +453,7 @@ class Obligation<P> : Contract {
|
|||||||
assetStates: List<StateAndRef<Obligation.State<P>>>): PublicKey
|
assetStates: List<StateAndRef<Obligation.State<P>>>): PublicKey
|
||||||
= Clauses.ConserveAmount<P>().generateExit(tx, amountIssued, assetStates,
|
= Clauses.ConserveAmount<P>().generateExit(tx, amountIssued, assetStates,
|
||||||
deriveState = { state, amount, owner -> state.copy(data = state.data.move(amount, owner)) },
|
deriveState = { state, amount, owner -> state.copy(data = state.data.move(amount, owner)) },
|
||||||
|
generateMoveCommand = { -> Commands.Move() },
|
||||||
generateExitCommand = { amount -> Commands.Exit(amount) }
|
generateExitCommand = { amount -> Commands.Exit(amount) }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -43,6 +43,7 @@ abstract class OnLedgerAsset<T : Any, C: CommandData, S : FungibleAsset<T>> : Co
|
|||||||
assetStates: List<StateAndRef<S>>): PublicKey
|
assetStates: List<StateAndRef<S>>): PublicKey
|
||||||
= conserveClause.generateExit(tx, amountIssued, assetStates,
|
= conserveClause.generateExit(tx, amountIssued, assetStates,
|
||||||
deriveState = { state, amount, owner -> deriveState(state, amount, owner) },
|
deriveState = { state, amount, owner -> deriveState(state, amount, owner) },
|
||||||
|
generateMoveCommand = { -> generateMoveCommand() },
|
||||||
generateExitCommand = { amount -> generateExitCommand(amount) }
|
generateExitCommand = { amount -> generateExitCommand(amount) }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -53,6 +53,7 @@ abstract class AbstractConserveAmount<S : FungibleAsset<T>, C : CommandData, T :
|
|||||||
fun generateExit(tx: TransactionBuilder, amountIssued: Amount<Issued<T>>,
|
fun generateExit(tx: TransactionBuilder, amountIssued: Amount<Issued<T>>,
|
||||||
assetStates: List<StateAndRef<S>>,
|
assetStates: List<StateAndRef<S>>,
|
||||||
deriveState: (TransactionState<S>, Amount<Issued<T>>, PublicKey) -> TransactionState<S>,
|
deriveState: (TransactionState<S>, Amount<Issued<T>>, PublicKey) -> TransactionState<S>,
|
||||||
|
generateMoveCommand: () -> CommandData,
|
||||||
generateExitCommand: (Amount<Issued<T>>) -> CommandData): PublicKey {
|
generateExitCommand: (Amount<Issued<T>>) -> CommandData): PublicKey {
|
||||||
val owner = assetStates.map { it.state.data.owner }.toSet().single()
|
val owner = assetStates.map { it.state.data.owner }.toSet().single()
|
||||||
val currency = amountIssued.token.product
|
val currency = amountIssued.token.product
|
||||||
@ -79,7 +80,8 @@ abstract class AbstractConserveAmount<S : FungibleAsset<T>, C : CommandData, T :
|
|||||||
|
|
||||||
for (state in gathered) tx.addInputState(state)
|
for (state in gathered) tx.addInputState(state)
|
||||||
for (state in outputs) tx.addOutputState(state)
|
for (state in outputs) tx.addOutputState(state)
|
||||||
tx.addCommand(generateExitCommand(amountIssued), amountIssued.token.issuer.party.owningKey)
|
tx.addCommand(generateMoveCommand(), gathered.map { it.state.data.owner })
|
||||||
|
tx.addCommand(generateExitCommand(amountIssued), gathered.flatMap { it.state.data.exitKeys })
|
||||||
return amountIssued.token.issuer.party.owningKey
|
return amountIssued.token.issuer.party.owningKey
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -442,9 +442,10 @@ class CashTests {
|
|||||||
assertEquals(WALLET[0].ref, wtx.inputs[0])
|
assertEquals(WALLET[0].ref, wtx.inputs[0])
|
||||||
assertEquals(0, wtx.outputs.size)
|
assertEquals(0, wtx.outputs.size)
|
||||||
|
|
||||||
val expected = Cash.Commands.Exit(Amount(10000, Issued(MEGA_CORP.ref(1), USD)))
|
val expectedMove = Cash.Commands.Move()
|
||||||
val actual = wtx.commands.single().value
|
val expectedExit = Cash.Commands.Exit(Amount(10000, Issued(MEGA_CORP.ref(1), USD)))
|
||||||
assertEquals(expected, actual)
|
|
||||||
|
assertEquals(listOf(expectedMove, expectedExit), wtx.commands.map { it.value })
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user