繁体   English   中英

我如何在 Corda 中将令牌从节点移动到帐户

[英]How can i move token from node to account in Corda

我使用 Corda 令牌 sdk 和 Corda 帐户。 (Corda_version = 4.1, tokens_version = 1.0 and accounts_version = 1.0-rc04)

我刚刚构建了简单的场景:
流_1。 甲方节点创建账户“lisa”

start CreateAccount name: "lisa"

流_2。 PartA-节点向自己发行Token

Party notary = getServiceHub().getNetworkMapCache().getNotaryIdentities().get(0);
MyEvolvableToken myEvolvableToken = new MyEvolvableToken(...);
TransactionState<MyEvolvableToken> transactionState = new TransactionState<>(myEvolvableToken, notary);
subFlow(new CreateEvolvableTokens(myEvolvableToken));
・
・
・
//issue token to self
FungibleToken fungibleToken = new FungibleToken(amount, partya,TransactionUtilitiesKt.getAttachmentIdForGenericParam(tokenPointer))
return subFlow(new IssueTokens(ImmutableList.of(fungibleToken)));

流_3。 PartA-节点将Token移动到“lisa”

//Get Token from db
MyEvolvableToken token = stateAndRef.getState().getData();
TokenPointer tokenPointer = token.toPointer(token.getClass());
//Get Account from db
stateAndRefAccount = subFlow(new AccountInfoByName("lisa")).get(0);
AccountInfo lisaAccount = stateAndRefAccount.getState().getData();
//fresh account publicKey
PublicKey key = getServiceHub().getKeyManagementService().freshKey(lisaAccount.getIdentifier().getId()); 
AnonymousParty lisaParty = new AnonyMousParty(key);
//specify amount token to transfer
Amount<TokenPointer> amount = new Amount(10,tokenPointer);
PartyAndAmount partyAndAmount = new PartyAndAmount(lisaParty,amount);
return subFlow(new MoveFungibleTokens(partyAndAmount));

但是,当我启动 Flow_3 时出现错误。
AnonymousParty 不起作用??
如何将令牌从节点转移到帐户?

java.lang.IllegalArgumentException: Called flow with anonymous party that node doesn't know about.Make sure that RequestConfidentialIdentity flow is called before.
.
.
at com.r3.corda.lib.tokens.workflows.flows.rpc.MoveFungibleTokens.call(MoveTokens.kt:22)
・
・

请参考我们最新的账户+令牌集成示例: https ://github.com/corda/samples-java/tree/master/Accounts/worldcupticketbooking

要回答您如何从节点向帐户发行令牌的问题,您可以直接将令牌发行给帐户的匿名方

例如:

//mention the current holder which is now going to be the dealer account 
NonFungibleToken nonFungibleToken = new NonFungibleToken(issuedTokenType, dealerAccount, new UniqueIdentifier(),TransactionUtilitiesKt.getAttachmentIdForGenericParam(tokenPointer)); 

//call built in flow to issue non fungible tokens 
SignedTransaction stx =  subFlow(new IssueTokens(Arrays.asList(nonFungibleToken)));

其中dealerAccount是一个 AnonymousParty。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM