首页 > 解决方案 > 如何在 R3 Corda 的账户之间转移不可替代的代币?

问题描述

我创建了一个Non fungible Evolvable token,如下所示

@BelongsToContract(PropertyStateTokenTypeContract::class)
data class PropertyState1(
        val landTitle: String,
        val location: String,
        val price: String,
        val maintainer: Party,
        override val linearId: UniqueIdentifier,
        override val fractionDigits: Int = 0
) : EvolvableTokenType() {
    companion object {
        val contractId = this::class.java.enclosingClass.canonicalName
    }

    override val maintainers: List<Party> get() = listOf(maintainer)
}

tokenPointer我已使用如下所示的从节点(PartyA)向帐户发出此令牌

val TestAccount = subFlow(OurAccounts()).filter {  it.state.data.name == nameOfAccount  }.last()

val anonymous_party = subFlow(RequestKeyForAccount(TestAccount.state.data))
val propertytokentype = a.state.data.toPointer<PropertyState1>()

val PropertyToke  = propertytokentype issuedBy ourIdentity heldBy anonymous_party

val issue = subFlow(ConfidentialIssueTokens(listOf( PropertyToke)))

现在我想将此令牌转移到 PartyB 下的帐户那么我该如何实现呢?

标签: corda

解决方案


Accounts 库有 2 个关于使用 Tokens SDK 帐户的好例子:
https ://github.com/corda/accounts/tree/master/examples/tokens-integration-test/src/integrationTest/kotlin/com/r3/corda/ lib/accounts/examples/tokensTest

在这里,他们在 2 个帐户之间转移一个可替代令牌,在您的情况下使用流程的不可替代版本(即MoveNonFungibleTokens):https ://github.com/corda/accounts/blob/32e7ae0044ce3b7c8640154dc333e61261251371/examples/tokens-integration-test/ src/integrationTest/kotlin/com/r3/corda/lib/accounts/examples/tokensTest/IntegrationTest.kt#L134

还要确保changeHolder在流程中指定;如果您的发送账户有 1 个数量为 5 的代币,而您只想发送数量为 2,则如果您留空,则更改必须返回您的发送账户changeHolderMoveNonFungibleTokens流程会将更改分配给启动节点。


推荐阅读