Corda 无法访问的现金状态

Corda 无法访问的现金状态,corda,Corda,我遇到了现金状态的问题。基本上,我有一个节点,它自己发行货币,无法访问现有状态以用于支付/任何事情。假设这个州是5美元,如果我再发行10美元,RPCOP和servicehubgetCashBalances都会说我有15美元。然而,任何试图使用超过10美元的现金流都会告诉我我没有足够的余额 我已经为节点设置了api端点,甚至可以退出现金,但它会说我退出的次数比我已经退出的次数多。当我使用QueryCriteria.VaultQueryCriteria(vault.StateStatus.Unsum

我遇到了现金状态的问题。基本上,我有一个节点,它自己发行货币,无法访问现有状态以用于支付/任何事情。假设这个州是5美元,如果我再发行10美元,RPCOP和servicehub
getCashBalances
都会说我有15美元。然而,任何试图使用超过10美元的现金流都会告诉我我没有足够的余额

我已经为节点设置了api端点,甚至可以退出现金,但它会说我退出的次数比我已经退出的次数多。当我使用
QueryCriteria.VaultQueryCriteria(vault.StateStatus.Unsumed)
查询vault时,我可以看到状态就在那里,并且似乎没有任何东西可以区分不可访问状态和任何后续可访问状态

这里有什么我可以忽略的吗?发行人是相同的,所有者是散列的,但也应该是相同的

使用命令/代码更新:
我相信这是通过更高版本的Corda finance jars修复的。我们使用
currency
类开发了更多的CorDapps示例,我们没有遇到任何问题。例如:

此外,随着Corda TokenSDk的发布,Corda上的货币实际上有了一种获得发行、转账和兑换的新方式。这是通过以下方式实现的:

        /* Create an instance of the fiat currency token */
        TokenType token = FiatCurrency.Companion.getInstance(currency);

        /* Create an instance of IssuedTokenType for the fiat currency */
        IssuedTokenType issuedTokenType = new IssuedTokenType(getOurIdentity(), token);

        /* Create an instance of FungibleToken for the fiat currency to be issued */
        FungibleToken fungibleToken = new FungibleToken(new Amount<>(amount, issuedTokenType), recipient, null);

        /* Issue the required amount of the token to the recipient */
        return subFlow(new IssueTokens(ImmutableList.of(fungibleToken), ImmutableList.of(recipient)));
/*创建法定货币令牌的实例*/
TokenType token=FiatCurrency.Companion.getInstance(货币);
/*为法定货币创建IssuedTokenType实例*/
IssuedTokenType IssuedTokenType=新的IssuedTokenType(getOurIdentity(),令牌);
/*为要发行的法定货币创建FungibleToken实例*/
FungibleToken FungibleToken=新的FungibleToken(新金额(金额,issuedTokenType),收件人,空);
/*向收件人发放所需数量的代币*/
返回子流(新的发行目录(ImmutableList.of(fungibleToken),ImmutableList.of(recipient));

您可以发布您用来发放现金的命令/代码吗?当然-刚刚用code@JoelDid更新了原始代码,进行了进一步挖掘,发现与此状态关联的
交易id
在h2的
保险库状态
表中设置了一个
锁定id
。我可以手动更新它,并将lock_id设置为null,但我不确定它为什么会首先被锁定。解锁后,现金可以退出,但当我尝试使用它向另一个节点发放现金时,它仍然会抛出错误。
        /* Create an instance of the fiat currency token */
        TokenType token = FiatCurrency.Companion.getInstance(currency);

        /* Create an instance of IssuedTokenType for the fiat currency */
        IssuedTokenType issuedTokenType = new IssuedTokenType(getOurIdentity(), token);

        /* Create an instance of FungibleToken for the fiat currency to be issued */
        FungibleToken fungibleToken = new FungibleToken(new Amount<>(amount, issuedTokenType), recipient, null);

        /* Issue the required amount of the token to the recipient */
        return subFlow(new IssueTokens(ImmutableList.of(fungibleToken), ImmutableList.of(recipient)));