我想在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);
}
答案 0 :(得分:0)
Corda遵循UTXO模型。我不确定您使用的是Corda的哪个版本,但是如果您仔细观察的话,会发现它会在某个时间点调用OnLedgerAsset.generateSpend
,从而为您完成工作。并可以静态使用,因为它带有@JvmStatic
注释。