-
Notifications
You must be signed in to change notification settings - Fork 73
Open
Description
It appears to be impossible to record a FungibleToken inside the issuers vault during issuance or redemption.
This appears to be due to the role selection mechanism in ObserverAwareFinalityFlow.
That means that, even if I pass the issuer as observer on issuance, no state will be recorded in their vault:
@Test
fun `issuer can observe issuance`() {
val token = 7.GBP issuedBy nodeA.legalIdentity() heldBy nodeB.legalIdentity()
nodeA.startFlow(IssueTokens(listOf(token), listOf(nodeA.legalIdentity())))
network.runNetwork()
val criteria = QueryCriteria.VaultQueryCriteria(
status = Vault.StateStatus.ALL,
relevancyStatus = Vault.RelevancyStatus.ALL
)
assertThat(nodeB.services.vaultService.queryBy<FungibleToken>(criteria).states, hasSize(equalTo(1)))
assertThat(nodeA.services.vaultService.queryBy<FungibleToken>(criteria).states, hasSize(equalTo(1))) // FAILS
}Similarly, on redemption:
@Test
fun `issuer can observe redemption`() {
val token = 7.GBP issuedBy nodeA.legalIdentity() heldBy nodeB.legalIdentity()
nodeA.startFlow(IssueTokens(listOf(token), listOf(nodeA.legalIdentity())))
network.runNetwork()
nodeB.startFlow(RedeemFungibleTokens(1.GBP, nodeA.legalIdentity(), listOf(nodeA.legalIdentity())))
network.runNetwork()
val criteria = QueryCriteria.VaultQueryCriteria(
status = Vault.StateStatus.ALL,
relevancyStatus = Vault.RelevancyStatus.ALL
)
assertThat(nodeB.services.vaultService.queryBy<FungibleToken>(criteria).states, hasSize(equalTo(2)))
assertThat(nodeA.services.vaultService.queryBy<FungibleToken>(criteria).states, hasSize(equalTo(2))) // FAILS
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels