【问题标题】:Is there a way to know the historic balance post every transaction in UTXO model such as Corda有没有办法知道 UTXO 模型(如 Corda)中每笔交易的历史余额
【发布时间】:2020-05-28 02:47:15
【问题描述】:

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

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

让我们举一个转账的例子,因为两个节点都需要计算单独的余额,它不能是同一个原子事务的一部分,因为一个节点不知道其他节点的任何余额,因为它是私有数据。

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

记住代币分类帐作为 SVT 的最佳设计是什么

【问题讨论】:

    标签: corda


    【解决方案1】:

    所以我认为您对未使用交易输出的理解并不准确。

    更多地考虑事务如何影响节点。

    在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多