【发布时间】:2020-03-28 01:28:24
【问题描述】:
我想从一方发行代币到另一方的账户。 拥有账户的一方正在看到交易/状态,但发行方却没有。我需要发行人可以看到交易。我正在使用 IssueTokensFlow。
【问题讨论】:
标签: blockchain corda
我想从一方发行代币到另一方的账户。 拥有账户的一方正在看到交易/状态,但发行方却没有。我需要发行人可以看到交易。我正在使用 IssueTokensFlow。
【问题讨论】:
标签: blockchain corda
我假设您使用的是 Tokens SDK。
如果你打开 FungibleToken 类,你会看到它继承自 AbstractToken:
https://github.com/corda/token-sdk/blob/4bab8e8f20fddbdda6a135f7ed16184de5e1b24a/contracts/src/main/kotlin/com/r3/corda/lib/tokens/contracts/states/FungibleToken.kt#L42
在AbstractToken 内部,您会看到participants 设置为holder;这意味着只有 holder 会在交易完成时在其保管库中注册生成的 FungibleToken,这就是您正在经历的行为:
https://github.com/corda/token-sdk/blob/4bab8e8f20fddbdda6a135f7ed16184de5e1b24a/contracts/src/main/kotlin/com/r3/corda/lib/tokens/contracts/states/AbstractToken.kt#L24
我不确定你为什么要issuer 注册已发行的令牌,请记住,在 Corda 中,数据是根据需要知道的基础分发的,并非所有节点都应该看到分类帐的所有数据,你的issuer 应该发出令牌并有点“忘记它”(即现在只有 holder 知道令牌)。
无论如何,如果您希望发行者也将生成的令牌注册到其保管库中;您可以在该交易中将其添加为 观察者(这意味着无论issuer 是否为participant,它都会注册该交易产生的所有状态);你可以在这里看到IssueTokensFlow有一个参数observerSessions:
https://github.com/corda/token-sdk/blob/4bab8e8f20fddbdda6a135f7ed16184de5e1b24a/workflows/src/main/kotlin/com/r3/corda/lib/tokens/workflows/flows/issue/IssueTokensFlow.kt#L51
因此您可以为issuer(即FlowSession issuerSession = initiateFlow(issuer))创建一个会话并将其传递给IssueTokensFlow。
【讨论】: