【问题标题】:LinearState with two unconsumed states in Corda FlowTest setup在 Corda FlowTest 设置中具有两个未使用状态的 LinearState
【发布时间】:2018-02-07 18:47:57
【问题描述】:

我正在尝试为具有 LinearState 的流编写 FlowTest。在设置中,我需要创建一个 LinearState,然后通过在第二个事务中使用第一个版本来创建该状态的第二个版本(具有相同的唯一标识符)。我按照 corda 文档的the v2.0 教程中的步骤进行操作。

但是,当我查询保险库中的状态时,我得到两个未使用的状态。我本来希望其中一个已经被消耗掉(因此有Vault.StateStatus.UNCONSUMED)。

我已经为真实代码编写了一个基于驱动程序的集成测试,并且运行良好。所以我假设我为这种情况错误地设置了测试。

任何想法我需要做什么才能在保险库中只有一个未使用的状态?

类似的测试代码重现here

非常感谢:-)

【问题讨论】:

    标签: corda


    【解决方案1】:

    在您的测试代码中,您首先生成两个事务,然后使用以下代码同时记录它们:

    member1.database.transaction {
        member1.services.recordTransactions(tx1, tx2)
    }
    

    如果您修改代码以便在第二个事务之前记录第一个事务,则流测试通过:

    member1.database.transaction {
        member1.services.recordTransactions(tx1)
        member1.services.recordTransactions(tx2)
    }
    

    看起来recordTransactions 不一定按照作为参数传入的顺序记录交易。如果先记录tx2,则找不到tx1的输出状态标记为已消费。 tx1 的输出状态因此保持未使用。

    【讨论】:

    • 很好 - 谢谢。我会提出 PR 来更改文档以反映这一点。也可能是代码之一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多