Как перенести токен Non Fungible между аккаунтами в R3 Corda? - PullRequest
0 голосов
/ 20 января 2020

Я создал 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)
}

Я выдал этот токен из узла (PartyA) для учетной записи, используя tokenPointer, как показано ниже

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. Так как же мне этого добиться?

1 Ответ

1 голос
/ 20 января 2020

В библиотеке «Учетные записи» есть 2 хороших примера использования учетных записей с Tokens SDK:
https://github.com/corda/accounts/tree/master/examples/tokens-integration-test/src/integrationTest/kotlin/com/r3/corda/lib/accounts/examples/tokensTest

Здесь они передают перекидной токен между двумя учетными записями, в вашем случае используйте не заменимая версия потока (то есть 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, то изменение должно go вернуться на вашу отправляющую учетную запись, если вы оставите changeHolder пустым; поток MoveNonFungibleTokens назначит изменение инициирующему узлу.

...