我正在使用Corda 4.0。使用线性状态时,我发现可以用相同的线性ID(外部ID和UUID)创建多个线性状态。 按照我对不可替代的数字资产的逻辑,线性id假设是唯一的,类似于区块链实现中的唯一令牌。
在数据库的 vault_linear_states (与 vault_states 和 vault_fungible_states 相同)表中,我可以看到主键约束定义为“ output_index , transaction_id ”
如果某些状态将被多次更改,则同一线性将有多个条目。
我在数据库中看到的output_index 列始终为“ 0”。
问题:
1) output_index 的目的是什么?找不到合适的信息。
2)如何根据唯一性正确处理线性状态?我应该在插入之前以编程方式选择并检查吗?还是有其他方法可以解决?
答案 0 :(得分:0)
1)输出索引是前一个子事务的索引,因为一个事务可以有多个子事务。其始终为0的原因,如果有更多的子事务,那么它将为0,1,2,依此类推。
2)首先创建线性状态,然后返回其唯一ID,然后使用相同的ID来查询保管库,并将其用作事务构建器中的输入状态,并将其更新为输出状态创建链。
更多信息,请点击https://docs.corda.net/key-concepts-transactions.html