有没有一种方法可以知道UTXO模型(例如Corda)中每笔交易的历史余额

时间:2019-09-03 18:13:03

标签: corda

需要建立涉及发行,转让,赎回的代币交换系统。 要求使用事务历史记录显示每个事务节点的历史余额。 UTXO模型不会在任何没有帮助的地方存储余额

这里的思考过程是,如果我们可以计算每个节点的余额并将其存储在令牌交换中涉及的同一笔交易中,这有助于显示每笔交易的历史余额。

让我们以转移为例,因为两个节点都需要计算个人余额,所以它不能成为同一原子事务的一部分,因为一个节点对其他余额没有任何了解,因为它是私有数据。

如果我们尝试计算余额过后的令牌交换提交到分类账,这不是原子的,并且没有办法回滚令牌交换交易,而且由于状态机不是单线程的,这可能会导致竞争状况和错误。

牢记令牌分类帐作为SVT的最佳设计是什么

1 个答案:

答案 0 :(得分:0)

因此,我认为您对未用交易输出的理解是不正确的。

进一步考虑事务如何影响节点。

在Corda中,每个状态对象都保留在使用该对象的节点中,因此,只要您的Corda状态对象可以正确地跟踪它,您就可以始终看到最新状态,贷款的先前状态以及类似的内容。 。

看看IOU Cordapp示例,您将看到一个对您的用例有意义的示例cordapp:https://github.com/corda/samples-java/tree/master/Advanced/obligation-cordapp

请特别注意IOUState,并查看此对象如何概述贷款的整个历史记录。

public class IOUState implements ContractState, LinearState {

    public final Amount<Currency> amount;
    public final Party lender;
    public final Party borrower;
    public final Amount<Currency> paid;
    private final UniqueIdentifier linearId;

来源:https://github.com/corda/samples-java/blob/master/Advanced/obligation-cordapp/contracts/src/main/java/net/corda/samples/states/IOUState.java