首页 > 解决方案 > 可替代状态会自动合并到 Corda 上吗?

问题描述

我想在 Corda 上创建一个自定义的可替代资产。我不清楚实现 FungibleAsset 的状态是如何在内部处理的。假设我从一笔交易中收到十个 1 美元的 CoinState,这些是否合并到一个 10 美元的 Coinstate 中,然后如果我想自己付款,我将其用作唯一且唯一的输入状态?

基本上我想要像 Cash.generateSpend 这样的东西,不幸的是没有很好的记录

到目前为止,我的 transferFlow 方法:

我有一个执行保险库查询的函数,应该返回一些各方余额..(这是假设余额金额在内部合并到一个状态)

然后使用这个余额作为输入状态,我检查输入是否等于要支付的金额,在这种情况下,我将简单地创建一个相同金额的输出状态,但创建一个新所有者,否则我创建另一个具有变化量的输出状态和我自己作为所有者

这是迄今为止的功能...我有一个功能可以进行保险库查询并应该返回一些各方余额..

StateAndRef<CurrencyState> getBalaceOfIdentiy(AbstractParty id) throws FlowException {
    QueryCriteria queryCriteria = new QueryCriteria.FungibleAssetQueryCriteria(null,ImmutableList.of(id),null, null,
    null, null, null
    );
    // this assumes states are merged internally
    List<StateAndRef<CurrencyState>> balanceOfID = getServiceHub().getVaultService().queryBy(CurrencyState.class, queryCriteria).getStates();
    return balanceOfID.get(0);
}

标签: corda

解决方案


Corda 遵循 UTXO 模型。我不确定您使用的是哪个版本的 Corda,但如果您仔细观察,您会发现它会OnLedgerAsset.generateSpend在某个时间点调用,并且可以为您完成工作。并且可以静态使用,因为它带有@JvmStatic.


推荐阅读