corda - 可替代状态会自动合并到 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 遵循 UTXO 模型。我不确定您使用的是哪个版本的 Corda,但如果您仔细观察,您会发现它会OnLedgerAsset.generateSpend
在某个时间点调用,并且可以为您完成工作。并且可以静态使用,因为它带有@JvmStatic
.
推荐阅读
- android - 将 java 库导入 dot os 源
- javascript - NodeJS - ExpressJS:如何在不缓冲的情况下流式传输请求正文
- c# - 如果 ID 存在,则在插入前删除以避免重复(C#/ASP.NET)
- html - HTML 中是否有任何标签或元素可以执行如下图所示的操作:
- rust - 将 Vec<[f64;1]> 转换为 Vec
- mysql - 即使为 0,也使用 LEFT OUTER JOIN 返回计数
- python - 如何删除和重写没有未知字符的行?
- c - 如何仅显示其中包含文件夹的文件夹?
- html - 如果值两个循环是匹配值,如何将选中的属性支持到每个复选框中的复选框(使用 Jquery)
- python - Pygame:为什么播放声音时音乐音量会降低?