corda - 如何在 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 下的帐户那么我该如何实现呢?
解决方案
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,则如果您留空,则更改必须返回您的发送账户changeHolder
;MoveNonFungibleTokens
流程会将更改分配给启动节点。
推荐阅读
- javascript - fetch() 和 window.fetch() 有什么区别?
- reactjs - 只有在 API 响应在 redux 的 props 中可用后,我才能更改状态?
- jenkins - 如何从 Bitbucket Cloud 触发多分支作业?
- apache-flink - flink中如何立即调用process函数?
- python-3.x - 尝试删除空格或制表符后右侧的所有字符
- windows - SHFileOperation() 的返回码说明
- excel - VBA Excel 可以更快地隐藏超过 300,000 行
- processing - 如何为我的 spritesheet 动画选择一行?
- r - 仅添加时间
- javascript - 图书馆树中的捆绑再导出是否动摇了?