【问题标题】:Corda State persist where exactly in DB (IOU Example)Corda 状态持续存在于 DB 中的确切位置(IOU 示例)
【发布时间】:2018-08-15 17:57:26
【问题描述】:

Corda 将数据保存到 Vault 中。 Vault 只不过是数据库。默认情况下,它支持 H2 数据库。 Corda 将状态作为 BLOB 存储到 H2 表中。我已经对表 NODE_TRANSACTION、VAULT_LINEAR_STATES 和 VAULT_STATES 执行了扫描。我运行 IOU Example 并执行了几个事务。我截断了 NODE_TRANSACTION 和 VAULT_LINEAR_STATES 并在 UI 上进行了测试,但 UI 仍然显示状态的数据。数据从 VAULT_STATES 显示,但如何显示仍然是个问题。在 VAULT_STATES 中没有找到 BLOB 我的问题是它在 db 中的具体引用状态

【问题讨论】:

  • 你确定你看到的数据不是来自缓存,因为如果你删除 node_transaction 你就不能再查询数据了。
  • 您使用哪个版本?在第 3 版中,blob 数据保留在 node_transaction 中
  • @Akkapong Kajornwongwattana 我使用的是 3.1 版。我使用示例 IOU_EXAMPLE 截断整个 node_transaction 表并引用 UI,UI 仍在显示数据。正如你所说,它可能来自缓存,我如何检查它是来自缓存还是来自 NODE_TRANSACTION ......谢谢你的时间

标签: corda


【解决方案1】:
  • NODE_TRANSACTIONS 表将每个事务 ID 映射到事务的 blob。此 blob 包括交易的输出状态,以及交易的其他组件
  • VAULT_STATES 表通过创建它的事务 ID 及其在该事务输出中的索引来引用每个状态。然后使用此 (ID, output idx) 对从 NODE_TRANSACTIONS 表中的相应 blob 中检索状态对象

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2020-12-17
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多