可替代状态是否自动在Corda上合并?

时间:2019-02-08 15:47:11

标签: corda

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

基本上,我想要的是Cash.generateSpend之类的东西,不幸的是,它并没有得到很好的记录

到目前为止,我的传输流程是:

我有一个执行库查询的功能,应该返回一些交易方余额。(这是假设余额在内部合并到一个状态)

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

这是到目前为止的功能...     我有一个函数可以执行保险库查询,并且应该返回一些各方的余额。

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);
}

1 个答案:

答案 0 :(得分:0)

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