带有令牌和帐户的Corda
我们正在与Kotlin合作Corda的token和帐户。我将详细说明场景以进行澄清。 我们有一个节点1和一个节点2。 我们创建了一个从TokenType扩展而来的“OurTokenType”。 我们在node1上创建了两个帐户(卖方和买方),并与node2共享它们。 根据应用程序的业务规则,node2是发行代币(FungibleToken)的人,并且发行工作正常。最后,节点1和节点2可以访问可替换房地产进行发行交易。 我们的问题在于这些代币的转让。当我们试图将代币从账户卖家转移到买家时。 在我们的场景中,令牌的传输可以发生在节点1或节点2上。 当我们通过帐户的宿主node1进行传输时,我们可以使用有效的MoveFungibleTokensFlow类,node1上的FungibleStates将更新为正确的值。但是,当我们在observerSessions参数中添加node2作为观察者时,node2上的可替换属性没有正确更新。 当我们使用MoveFungibleTokensFlow类通过node2(不是帐户的宿主)进行传输时,它不起作用,它会生成com.r3.corda.lib.tokens.selection.InsufficientBalanceException异常:识别的可用状态不足,即使有余额 我的问题是,我是否可以使用MoveFungibleTokensFlow类在帐户之间进行转账,即使它们位于另一台主机上? 当我们在托管帐户的节点上运行时,在使用observerSessions时更新FungibleStates有什么问题?带有令牌和帐户的Corda,corda,Corda,我们正在与Kotlin合作Corda的token和帐户。我将详细说明场景以进行澄清。 我们有一个节点1和一个节点2。 我们创建了一个从TokenType扩展而来的“OurTokenType”。 我们在node1上创建了两个帐户(卖方和买方),并与node2共享它们。 根据应用程序的业务规则,node2是发行代币(FungibleToken)的人,并且发行工作正常。最后,节点1和节点2可以访问可替换房地产进行发行交易。 我们的问题在于这些代币的转让。当我们试图将代币从账户卖家转移到买家时。 在我们
或者,如果我必须遵循链接的示例,请让我将您的问题分为两部分:
我看到您提到您在
UnficificientBalanceException
上有一条错误消息,如果我是您,我会从那里开始深入研究,看看到底查询了哪个令牌 让我把你的问题分为两部分:
UnficificientBalanceException
上有一条错误消息,如果我是您,我会从那里开始深入研究,看看到底查询了哪个令牌
没有指定谁是移动令牌源的输入参数,这是因为它将流的发起方视为令牌源MoveFungibleTokensFlow
类MoveFungibleTokensFlow
@JVM重载
建造师(
val partiesAndAmounts:列表,
覆盖val参与者会话:列表,
重写val observerSessions:List=emptyList(),
val queryCriteria:queryCriteria?=null,
val变更持有人:AbstractParty?=null
):AbstractMoveTokensFlow(){
- 在
中,关于“node1和node2都可以看到已发行的令牌”的说法不正确,唯一的参与者是令牌的FungibleToken
持有者,因此当令牌被发行给卖方和买方账户时,唯一的参与者是托管这些账户的节点(即node1)
- 即使您在向买方和卖方发出令牌时添加了node2作为观察者(即node1和node2都具有生成的令牌);如果你深入挖掘
的代码,它继承了MoveFungibleTokensflow
,依赖于AbstractMoveTokensFlow
对交易进行签名,你会在ObserverAwaRefinitialityFlow
内部看到它没有调用ObserverAwaRefinitialityFlow
流,它只对交易进行签名在本地执行操作(请参阅);意味着只有持有帐户私钥的节点才能在move命令上签名,并且由于node1是买卖双方的CollectSignatures
;因此node1是私钥/公钥的所有者,只有node1可以代表买卖双方签名。因此,即使您与node2共享买卖双方帐户,也只有node1可以签名d由于您正在从node2(您的第二个场景)调用主机
,当它到达需要代表卖家签名(移动其令牌)的部分时,它将失败,因为node2不拥有该帐户的私钥MoveFungibleTokensFlow
- 另一方面,当您从node1调用
以将卖方的令牌移动到买方时,请确保为MoveFungibleTokesnFlow
提供一个值,以仅选择属于卖方的令牌;如果不提供值,则流将拾取node1上托管的任何令牌,因此您可能最终移动属于其他帐户的代币queryCriteria
- 另外,确保为
提供一个值,这样,如果您将其保留为空,则变更将返回给卖方;由此产生的任何变更都将分配给变更持有人