我想在corda上创建一个自定义的可替换资产。我不清楚如何在内部处理实现FungibleAsset的状态。假设我从交易中收到10个1美元的CoinStates,那些合并为一个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遵循UTXO模型。我不确定你在哪个版本的Corda,但是如果你看得足够仔细,你会发现它会在某个时间点调用OnLedgerAsset.generateSpend
,这对你有用。并且可以静态使用,因为它用@JvmStatic
注释。